- Web Push (VAPID + RFC 8291, pure Rust): permission/question/finished notifications while no app window is visible; settings with test button - Guided new-session flow: task, craft target (website/app/game/old software/fresh), clean room or deep, description, model, folder (new, existing or cloned git repository); originals upload to original/ - Craft phase bar (craft_phase tool) for study/specify/build/check/ready - Chunked uploads (8 MB) up to server.max_upload_mb (default 500 MB) - All UI glyphs and emojis replaced by themeable SVG icons - Rename dialog with manual name or model-generated suggestion Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
1.4 KiB
TypeScript
45 lines
1.4 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*"],
|
|
// Web Push handlers (push, notificationclick).
|
|
importScripts: ["push-sw.js"],
|
|
},
|
|
}),
|
|
],
|
|
server: {
|
|
proxy: {
|
|
"/api": { target: backend, ws: true, changeOrigin: true },
|
|
},
|
|
},
|
|
});
|