feat(phase-c): Vite + Svelte 5 Infrastruktur + erste 2 Panels migriert

- frontend/ eingerichtet: Vite 6, Svelte 5 (Runes), TypeScript
- Stores: status/jobs/system mit $state-Runes (status.svelte.ts etc.)
- main.ts ersetzt main.js: bundelt Legacy-Panels (overview/models/server/
  jobs/cookbook/connect) + mountet neue Svelte-Panels (guides/news)
- GuidesPanel.svelte: statischer Guide mit Akkordeon-Tutorials + Konzept-Grid
- NewsPanel.svelte: reaktives Newsboard mit API-Fetch + Upgrade-Vorschlaegen
- Vite-Output: static/dist/main.js (committet, kein Build auf dem Server)
- index.html: laedt jetzt static/dist/main.js statt static/js/main.js
- Build: 118 Module → 134 kB (gzip: 44 kB)

Naechste Schritte: Overview → Jobs → Server → Models → Cookbook migrieren.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-06-22 21:50:12 +02:00
parent ee4e3c1dd4
commit e2fc1d24cf
15 changed files with 2512 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte'
import { resolve } from 'path'
export default defineConfig({
plugins: [svelte()],
base: '/static/dist/',
build: {
outDir: resolve(__dirname, '../static/dist'),
emptyOutDir: true,
rollupOptions: {
input: resolve(__dirname, 'src/main.ts'),
output: {
entryFileNames: 'main.js',
chunkFileNames: '[name].js',
assetFileNames: '[name][extname]',
// Alles in eine Datei — kein dynamisches Chunking für einfaches Deploy
manualChunks: undefined,
},
},
},
resolve: {
alias: {
'@core': resolve(__dirname, '../static/js/core'),
'@panels': resolve(__dirname, '../static/js/panels'),
},
},
})