leanos/tasks/todo.md
Thomas Lutz Kolter ee203fd9fb leanOS: initial import (basiert auf NEON NOODLE OS)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-15 14:58:54 +02:00

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.