docs: CR-5 — README v0.1.0->v0.3.3, Requires +git/dep-fetcher, Master-Detail-Beschreibung
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
26
README.md
26
README.md
@@ -1,10 +1,10 @@
|
||||
# lib-management.launcher
|
||||
|
||||
Module-discovery and module-switch entry. Lists available modules from the configured modules-dir and launches the selected one via `engine.switch_module`. Typical entry point: `--module=lib-management.launcher` boots into a chooser screen rather than directly into a game.
|
||||
Master-detail Launcher-UI und Modul-Einstieg. Listet die installierten Module aus dem modules-dir auf und zeigt sie in einem geteilten Layout: links (1/3) die Modul-Liste mit Genre-Tags, rechts (2/3) ein Detail-Panel mit Hero-Carousel, gerenderter Markdown-Beschreibung und Dependency-Status. Pro Modul wird `manifest.launcher.md` für Präsentation (Summary, Tags, Teaser) geladen. Beim Launch eines Moduls prüft der Launcher dessen Dependencies (via `lib-management.dep-fetcher`) und Update-Stand (via `lib-core.git`); ein Konflikt öffnet ein Modal statt direkt zu wechseln. Typischer Einstieg: `--module=lib-management.launcher` bootet in den Launcher-Screen statt direkt in ein Spiel.
|
||||
|
||||
**Version:** 0.1.0
|
||||
**Version:** 0.3.3
|
||||
**Module-ID:** lib-management.launcher
|
||||
**Requires:** lib-core.input v>=0.4.0
|
||||
**Requires:** lib-core.input v0.4.0, lib-core.git v0.2.0, lib-management.dep-fetcher v0.1.2
|
||||
**Tags:** launcher, menu, system, navigation
|
||||
|
||||
## Topology
|
||||
@@ -15,6 +15,10 @@ graph LR
|
||||
this["lib-management.launcher"]
|
||||
lib_core_input["lib-core.input"]
|
||||
this --> lib_core_input
|
||||
lib_core_git["lib-core.git"]
|
||||
this --> lib_core_git
|
||||
lib_management_dep_fetcher["lib-management.dep-fetcher"]
|
||||
this --> lib_management_dep_fetcher
|
||||
engine["engine.*"]
|
||||
this --> engine
|
||||
```
|
||||
@@ -29,13 +33,15 @@ graph LR
|
||||
|
||||
## Demonstrates
|
||||
|
||||
- `engine.module.list` discovery of installed modules from the modules-dir.
|
||||
- `engine.switch_module` runtime swap from the launcher to the selected module.
|
||||
- Master-detail UI: left list shows each module's **name** with a small genre-**tags** subline (from `manifest.launcher.md`); right panel shows hero carousel, rendered-markdown description, and per-dependency status.
|
||||
- Scrollable panels via `engine.render.begin_view`/`end_view` (scissor-clipped) driven by `engine.input.get_mouse_wheel`, with inline scrollbars.
|
||||
- Simple text + rect rendering via `engine.render` for the chooser UI.
|
||||
- Input-action binding through `lib-core.input` (`ui_click`, `ui_back`, `ui_confirm`).
|
||||
- Modal-state FSM (chooser <-> quit/conflict-modal) factored into a sibling `fsm.lua` loaded via `engine.module.dir_of`.
|
||||
- **Master-detail Layout** (1/3 Liste, 2/3 Detail): linke Liste zeigt je Modul **Name** + Genre-**Tags**-Subline (aus `manifest.launcher.md`); rechtes Detail-Panel zeigt Hero-Carousel, gerenderte Markdown-Beschreibung und eine Dependency-Status-Liste.
|
||||
- Pro-Modul-Präsentation aus `manifest.launcher.md`: Summary/Tags für die Liste, `teaser_images` + `carousel_interval_seconds` für das Hero-Carousel (Panel-State je Modul-ID, nur das selektierte Modul wird gepumpt).
|
||||
- Dependency-Status via `lib-management.dep-fetcher` (`ensure_for_module`): die `manifest.module::deps[]` werden in Load-Order zu einer Status-Liste komponiert (`ok` / `warn` / `error`) und mit Glyphen je Dep gerendert; ein Konflikt-Roll-up tönt die Liste ein und öffnet beim Launch das Konflikt-Modal statt `engine.switch_module` direkt aufzurufen.
|
||||
- Update-Check via `lib-core.git` (`start_ls_remote_tags` / `take_result`): asynchrones `ls-remote` pro Modul gegen die Gitea-Repo-URL, Vergleich des höchsten `vX.Y.Z`-Tags gegen die lokale Version → Badge `available` / `no-update` / `local-only` / `fail` (Fehler-Kind für Tooltips erhalten). In CI (`SPOREL_CI=1`) deaktiviert, damit der Milestone-Check offline bleibt.
|
||||
- `engine.module.list` Discovery der installierten Module aus dem modules-dir; `engine.switch_module` für den Laufzeit-Wechsel vom Launcher ins selektierte Modul.
|
||||
- Scrollbare Panels via `engine.render.begin_view`/`end_view` (scissor-clipped), getrieben durch `engine.input.get_mouse_wheel`, mit Inline-Scrollbars (Liste links, Detail-Content rechts zwischen fixiertem Hero-Strip und Launch-Button).
|
||||
- Markdown-/News-Rendering via sibling `markdown.lua` + `frontmatter.lua`; launcher-eigene Brand-Assets via `engine.asset.load_texture` (`assets/launcher/`).
|
||||
- Input-Action-Binding über `lib-core.input` (`ui_click`, `ui_back`, `ui_confirm`).
|
||||
- Modal-State-FSM (Liste <-> Quit-/Konflikt-Modal) in ein sibling `fsm.lua` ausgelagert, geladen via `engine.module.dir_of`.
|
||||
|
||||
## References
|
||||
|
||||
|
||||
Reference in New Issue
Block a user