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

3.1 KiB

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 )
  • 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.