feat: externalize buttplug as separate nginx container

- Add Dockerfile.buttplug: builds Rust/WASM + TS, serves via nginx
- Add nginx.buttplug.conf: serves /dist and /wasm with correct MIME types
- Add .gitea/workflows/docker-build-buttplug.yml: path-filtered CI workflow
- Strip Rust toolchain and buttplug build from frontend Dockerfile
- Move buttplug to devDependencies (types only at build time)
- Remove vite-plugin-wasm from frontend (WASM now served by nginx)
- Add /buttplug proxy in vite.config (dev: localhost:8080)
- Add buttplug service to compose.yml
- Load buttplug dynamically in play page via runtime import
- Fix faq page: suppress no-unnecessary-state-wrap for reassigned SvelteSet

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 13:49:38 +01:00
parent 239128bf5e
commit f880aa5957
10 changed files with 220 additions and 64 deletions

View File

@@ -2,13 +2,17 @@ import path from "path";
import tailwindcss from "@tailwindcss/vite";
import { defineConfig } from "vite";
import { sveltekit } from "@sveltejs/kit/vite";
import wasm from "vite-plugin-wasm";
export default defineConfig({
plugins: [sveltekit(), tailwindcss(), wasm()],
plugins: [sveltekit(), tailwindcss()],
resolve: {
alias: { $lib: path.resolve("./src/lib"), "@": path.resolve("./src/lib") },
},
build: {
rollupOptions: {
external: ["@sexy.pivoine.art/buttplug"],
},
},
server: {
port: 3000,
proxy: {
@@ -19,6 +23,11 @@ export default defineConfig({
secure: false,
ws: true,
},
"/buttplug": {
rewrite: (path) => path.replace(/^\/buttplug/, ""),
target: "http://localhost:8080",
changeOrigin: true,
},
},
},
});