From 7f43f8452f952bc55e8840c191d9dbad5e67cea0 Mon Sep 17 00:00:00 2001 From: Calic Date: Tue, 16 Jun 2026 14:47:57 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20CR-5=20=E2=80=94=20README=20v0.1.0->v0.?= =?UTF-8?q?3.3,=20Requires=20+git/dep-fetcher,=20Master-Detail-Beschreibun?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5fe3f11..9000266 100644 --- a/README.md +++ b/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