docs: ticket 06 (ratatui-research) aufloesen, tickets 11 und 12 graduieren
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# 06 — Research: ratatui-App-Architektur
|
||||
|
||||
Type: research
|
||||
Status: open
|
||||
Status: resolved
|
||||
Blocked by: —
|
||||
|
||||
## Question
|
||||
@@ -22,3 +22,33 @@ Fakten sammeln. Zu klären:
|
||||
- Stand der Versionen: aktuelle ratatui- und crossterm-Version, bekannte Fallstricke unter Windows.
|
||||
|
||||
Ergebnis: empfohlenes App-Muster mit Skizze der Modulstruktur, plus Quellenliste.
|
||||
|
||||
## Answer
|
||||
|
||||
Vollständiger Bericht: [`research/06-ratatui-architektur.md`](../research/06-ratatui-architektur.md)
|
||||
(942 Zeilen, gegen Live-Quellen geprüft am 2026-08-11). Kern:
|
||||
|
||||
- **App-Muster: Screen-Stack (`Vec<Screen>`) über zentralem `Game`-State.** ratatui empfiehlt offiziell
|
||||
nichts — es dokumentiert Elm, Component und Flux neutral und hat zu Multi-Screen gar keine Seite.
|
||||
Maintainer joshka rät im Forum zum Enum; ratatuis Flaggschiff-Beispiel `demo2` macht Enum plus
|
||||
`impl Widget for &App`; das rundenbasierte chess-tui fährt `current_page` plus `current_popup`.
|
||||
Elm scheitert an ratatuis eigenem `StatefulWidget`; das Component-Template schleppt tokio, clap und
|
||||
tracing mit.
|
||||
- **Modulstruktur:** `game/` (kennt ratatui nicht — mechanisch prüfbar), `data/`,
|
||||
`ui/{screen,input,theme,widgets/,screens/}`, genau ein Eintrittspunkt `Game::apply(Action)`.
|
||||
- **Popups: kein Widget-Stack.** `Clear` auf ein zentriertes Sub-`Rect` nach dem Screen. Negativbefund:
|
||||
kein produktives Projekt nutzt `Vec<Box<dyn Component>>` für Popups, auch gitui nicht.
|
||||
- **Event-Loop: blockierendes `event::read()`, kein Tick, kein tokio.** Das async-Rezept auf ratatui.rs
|
||||
ist für ein rundenbasiertes Spiel Overkill.
|
||||
- **Dungeon-Grid: Eigenbau.** Es gibt kein Grid- oder Tilemap-Widget, weder mitgeliefert noch als
|
||||
Drittanbieter-Crate. `impl Widget` mit direktem Buffer-Zugriff. `Canvas` ist eine Vektorfläche und
|
||||
taugt nur für Minimap und Sichtlinien.
|
||||
- **Panic: `ratatui::run(...)` genügt** — die Init-Funktionen installieren den Hook selbst, die drei
|
||||
Rezeptseiten dazu sind veraltet. `Drop` von `Terminal` stellt *nicht* wieder her.
|
||||
- **Versionen: ratatui 0.30.2** (2026-06-19, MSRV 1.88, in Teilcrates aufgespalten), **crossterm 0.29.0**.
|
||||
crossterm nicht separat in `Cargo.toml` ziehen.
|
||||
- **Windows:** Der `KeyEventKind::Press`-Filter ist Pflicht, sonst doppelte Züge. Kitty-Protokoll und
|
||||
`Event::Paste` gehen dort gar nicht, conhost verschiebt Spalten bei doppelbreiten Zeichen.
|
||||
|
||||
Sieben Punkte sind im Bericht ausdrücklich als nicht verifiziert markiert. Sechs Anschlussfragen bleiben
|
||||
offen und sind zu Ticket 11 und 12 graduiert.
|
||||
|
||||
Reference in New Issue
Block a user