- Sandbox (bubblewrap) for non-admin shell/git, MCP per-user rights, hard budgets and quotas, login rate limiting, audit log and backups - Ghidra headless decompilation (ARM64 natives built from source), binary_info tool, clean room / deep workflow per session - Recreate skill and commands for analysing and re-building old software - File checkpoints with rewind/restore, background shells (bash_output, kill_shell) - web_search tool (DuckDuckGo, SearXNG, Brave, Tavily) - In-app dialogs and toasts instead of browser dialogs - 15 base themes (trilium-themes palettes plus Nord, VS Code, GitHub, Catppuccin, One, Dracula, Rose Pine, Everforest, Kanagawa) with light/dark/auto switcher and license notes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { defineConfig } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
import { VitePWA } from "vite-plugin-pwa";
|
|
|
|
const backend = process.env.CODECRAFT_BACKEND ?? "http://127.0.0.1:8787";
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
react(),
|
|
VitePWA({
|
|
registerType: "autoUpdate",
|
|
includeAssets: ["icon.svg", "apple-touch-icon.png"],
|
|
manifest: {
|
|
name: "CodeCraft",
|
|
short_name: "CodeCraft",
|
|
description: "Web-based coding harness for AI models",
|
|
theme_color: "#282828",
|
|
background_color: "#282828",
|
|
display: "standalone",
|
|
start_url: "/",
|
|
icons: [
|
|
{ src: "icon-192.png", sizes: "192x192", type: "image/png" },
|
|
{ src: "icon-512.png", sizes: "512x512", type: "image/png" },
|
|
{ src: "icon-512.png", sizes: "512x512", type: "image/png", purpose: "maskable" },
|
|
{ src: "icon.svg", sizes: "any", type: "image/svg+xml" },
|
|
],
|
|
},
|
|
workbox: {
|
|
// The API is always live data; only the app shell is cached.
|
|
navigateFallbackDenylist: [/^\/api/],
|
|
runtimeCaching: [],
|
|
// The STEP importer (OpenCascade, ~8 MB) is loaded only when needed.
|
|
globIgnores: ["**/occt-import-js*"],
|
|
},
|
|
}),
|
|
],
|
|
server: {
|
|
proxy: {
|
|
"/api": { target: backend, ws: true, changeOrigin: true },
|
|
},
|
|
},
|
|
});
|