a7dc368712d8d5972f5b294df319eef4ca9a18c0
List rows showed the long `summary` (name+id+description fallback chain) and overflowed. Now each row shows the module name with a small genre- tags subline sourced from manifest.launcher.md (meta.tags, threaded onto the entry in init). The list also scrolls properly now (wheel dispatch + upper clamp) — it was wired but dead without a wheel binding. Detail panel: description + dependency list ran off the bottom of the window. The mid-section (title/description/deps) now scrolls inside a begin_view/end_view scissor region between the fixed hero strip and the fixed launch button; news view scrolls too. Both panels get an inline scrollbar. Detail scroll resets on module switch. Depends on engine.input.get_mouse_wheel (sporel-engine). README controls/ demonstrates synced. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Version: 0.1.0
Module-ID: lib-management.launcher
Requires: lib-core.input v>=0.4.0
Tags: launcher, menu, system, navigation
Topology
graph LR
this["lib-management.launcher"]
lib_core_input["lib-core.input"]
this --> lib_core_input
engine["engine.*"]
this --> engine
Controls
- Mouse-Left: Select a module-row in the left list to show its detail; click Launch in the detail panel to launch it; carousel arrows; confirm/cancel in the modals.
- Mouse-Wheel: Scroll the panel under the cursor — the module list (left) or the detail content (right). Detail content (description + dependencies) scrolls between the fixed hero strip and the fixed launch button.
- Enter: Confirm quit when the quit-modal is open.
- Escape: Open the quit-modal from the chooser; cancel the conflict/quit-modal when open.
Demonstrates
engine.module.listdiscovery of installed modules from the modules-dir.engine.switch_moduleruntime 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 byengine.input.get_mouse_wheel, with inline scrollbars. - Simple text + rect rendering via
engine.renderfor 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.lualoaded viaengine.module.dir_of.
References
- meta/docs/architecture/module-lifecycle.md
- meta/docs/architecture/host-app.md
- meta/docs/superpowers/specs/2026-05-14-launcher-design.md
Description
Languages
Lua
99.2%
Shell
0.8%