76 lines
3.1 KiB
Markdown
76 lines
3.1 KiB
Markdown
# TODO — "OS": KI-natives Web-Betriebssystem
|
|
|
|
## Phase 0 — Scaffolding
|
|
- [ ] package.json, vite, tsconfig, tailwind, postcss, .env.example
|
|
- [ ] index.html, main.tsx, index.css
|
|
- [ ] npm install
|
|
|
|
## Phase 1 — Kernel
|
|
- [ ] design/tokens.ts (Design-System)
|
|
- [ ] kernel/db.ts (IndexedDB via idb)
|
|
- [ ] kernel/fs.ts (virtuelles Dateisystem)
|
|
- [ ] kernel/store.ts (zustand: boot, windows, apps, theme, fs cache, notifications)
|
|
- [ ] kernel/ai.ts (Anthropic Messages API + App-Generierung + Self-Healing)
|
|
- [ ] kernel/sdk.ts (os.* SDK für Apps)
|
|
- [ ] kernel/appRuntime.tsx (Babel-Transform + sicheres Rendern)
|
|
- [ ] kernel/registry.ts (Builtin + generierte Apps)
|
|
|
|
## Phase 2 — System-UI
|
|
- [ ] components: Button, Input, Panel, Icon
|
|
- [ ] system-ui/Boot.tsx (Boot-Sequenz)
|
|
- [ ] system-ui/Lockscreen.tsx
|
|
- [ ] system-ui/Window.tsx (drag/resize/snap/min/max, z-index)
|
|
- [ ] system-ui/WindowManager.tsx
|
|
- [ ] system-ui/Dock.tsx
|
|
- [ ] system-ui/MenuBar.tsx (Uhr, Statusicons)
|
|
- [ ] system-ui/Spotlight.tsx (Cmd+Space, KI-Befehlsleiste)
|
|
- [ ] system-ui/Notifications.tsx
|
|
- [ ] system-ui/ContextMenu.tsx
|
|
- [ ] system-ui/Desktop.tsx (Wallpaper, Icons)
|
|
- [ ] App.tsx (orchestriert boot→lock→desktop)
|
|
|
|
## Phase 3 — Vorinstallierte Apps
|
|
- [ ] apps/Files.tsx
|
|
- [ ] apps/Terminal.tsx (ls, cat, mkdir, ai <prompt>)
|
|
- [ ] apps/Settings.tsx (Theme, Wallpaper, Light/Dark, App-Verwaltung)
|
|
- [ ] apps/Assistant.tsx (Chat + Spotlight)
|
|
- [ ] apps/AppBuilder.tsx (zeigt KI-Generierung)
|
|
|
|
## Phase 4 — Verifikation
|
|
- [ ] npm run build (typecheck) grün
|
|
- [ ] npm run dev startet, Boot→Desktop sichtbar
|
|
- [ ] Fenster-Manager funktioniert
|
|
- [ ] App-Generierung end-to-end (mit API-Key)
|
|
|
|
## Review
|
|
|
|
**Status: alle Phasen abgeschlossen und verifiziert.**
|
|
|
|
Gebaut: Vollständiges KI-natives Web-OS ("Fluid OS"). Boot→Lockscreen→Desktop,
|
|
echter Fenster-Manager (Drag/Resize/Snap/Min/Max/Z-Stacking), Spotlight (⌘Space),
|
|
5 Builtin-Apps, KI-App-Generierung (JSON → Babel-Transform → Sandbox), Self-Healing,
|
|
IndexedDB-Persistenz, Light/Dark + Wallpaper, Kontextmenüs, Notifications, IPC-Bus.
|
|
|
|
### Verifikation (headless Chrome, puppeteer-core)
|
|
- Boot → Lockscreen → Desktop: ✅
|
|
- MenuBar (Uhr/Status), Dock (5 Apps), 5 Desktop-Icons: ✅
|
|
- Fenster öffnen (Terminal) + Chrome rendert: ✅
|
|
- Spotlight via ⌘Space: ✅
|
|
- Generierte-App-Runtime: Babel-Transform + Sandbox + State + os.window.setTitle: ✅
|
|
- Error-Boundary + Self-Heal-UI bei Crash: ✅
|
|
- Forbidden-API-Guard (fetch etc. blockiert): ✅
|
|
- Keine unerwarteten Konsolenfehler: ✅
|
|
- `tsc --noEmit` + `npm run build`: grün
|
|
|
|
### Gefundener & behobener Bug
|
|
`appRuntime` baute die generierte `App`-Funktion bei *jedem* Render neu → neue
|
|
Komponenten-Identität → Remount-Schleife ("Maximum update depth exceeded"), State-Verlust
|
|
bei allen zustandsbehafteten generierten Apps. Fix: `App` per `useMemo([os])` einmal
|
|
pro Fenster bauen. Siehe tasks/lessons.md.
|
|
|
|
### Nicht verifizierbar ohne API-Key
|
|
Der echte Anthropic-Call (App-Generierung end-to-end) braucht `VITE_ANTHROPIC_API_KEY`.
|
|
Der konsumierende Runtime ist mit synthetischem KI-Output vollständig getestet; der
|
|
Netzwerkpfad ist implementiert und endet sauber an der API-Grenze.
|
|
|