diff --git a/PLAN.md b/PLAN.md index 5be99e7..3006dc3 100644 --- a/PLAN.md +++ b/PLAN.md @@ -42,6 +42,10 @@ Konvention: `[ ]` offen · `[x]` erledigt · `[~]` in Arbeit Feature vorher vom Projektinhaber als Non-Feature deklariert und in der Sprachreferenz unter „Abweichungen" gelistet wurde. Stilles Weglassen oder generische Syntaxfehler für dokumentierte Features sind Bugs. + **Verschobene Elemente brauchen einen eigenen Punkt** (2026-09-04): Wird + ein Inventareintrag von einer Phase in eine spätere verlegt, MUSS er dort + als eigene Aufgabe stehen. Ein Verweis im Fließtext („kommt mit Phase 4") + genügt nicht — nur was als Punkt in der Zielphase steht, wird abgearbeitet. - **Markenrecht:** Der Name des Vorbilds wird in Code, Doku und Artefakten nicht verwendet. Wir sprechen vom „Vorbild" bzw. „dem Dialekt". - **Performance ist Anforderung, nicht Politur** (2026-09-01): @@ -411,6 +415,17 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste. https://github.com/cout/vbdos ohne Non-Features kompilieren und sind nutzbar (Konsolenprogramme bereits ab Phase 3) - [ ] Ereignisdispatch: Event-Queue ↔ VM (Ereignisprozeduren `Name_Ereignis`) +- [ ] **Klassische Ereignis-Traps** (ohne Forms, Sprachreferenz §8) — + `ON TIMER(n)`, `ON KEY(n)`, `ON UEVENT` und `ON SIGNAL(n)` je mit + `GOSUB label`, dazu die Steueranweisungen `TIMER`, `KEY(n)`, + `UEVENT`, `SIGNAL(n)` mit `ON`/`OFF`/`STOP`, das `EVENT`-Statement + und `SetUEvent`. Setzt die Ereignisschleife (erste Aufgabe dieser + Phase) voraus; `COM`/`PEN`/`PLAY`/`STRIG` bleiben Non-Feature + (Fehler 73). **10 Inventareinträge** +- [ ] **Vordefinierte Dialoge**: `MSGBOX` als Anweisung **und** als + Funktion (liefert die gedrückte Schaltfläche) sowie `INPUTBOX$`. + Sie hängen am Formularmodell, nicht an der Steuerelementliste, und + fallen deshalb sonst zwischen die Aufgaben. **3 Inventareinträge** - [ ] Meilenstein: Beispiel-Formularprogramme aus dem Testkorpus laufen ## Phase 5 — IDE (`tb-ide`) @@ -422,6 +437,13 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste. - [ ] Formular-Designer: Steuerelemente platzieren/verschieben/skalieren, Eigenschaftenfenster - [ ] Ausführen aus der IDE: Start/Unterbrechen/Fortsetzen/Neustart +- [ ] **`$INCLUDE`** im Compile-Treiber auflösen — der Lexer liefert den + Metabefehl bereits als Token. Datei einlesen, Pfade relativ zur + einschließenden Datei, Zyklen erkennen und namentlich abweisen. + **1 Inventareintrag** +- [ ] **`RUN`** — Programm neu starten bzw. ein anderes laden und starten. + Nutzt denselben Zurücksetzpfad der VM wie „Neustart" oben. + **1 Inventareintrag** - [ ] Debugger: Breakpoints, Einzelschritt/Prozedurschritt, Direktfenster, Überwachungsausdrücke - [ ] Hilfe-System: rendert die Markdown-Dokumentation aus `docs/` @@ -443,6 +465,11 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste. ausführbares Programm (Bytecode + eingebetteter Runner) - [ ] Dokumentation: Sprachreferenz, Migrationshinweise, Beispielprogramme - [ ] CI (GitHub Actions: Build + Tests auf allen drei Plattformen), Releases +- [ ] **Abnahme der Leitplanke „Vollständigkeit ist das Soll"**: + docs/inventar.md steht auf **0 offen** — jeder der 285 Einträge ist + entweder implementiert oder als Non-Feature in der Sprachreferenz + gelistet. Der Abgleichstest `inventar_stimmt_mit_code_ueberein` hält + das gegen den Code; hier wird es zum Abnahmekriterium. ---