Calic 6917529778 fix(launcher): localize image-missing placeholder + drop dead icons.lua
- markdown.lua: M.render now accepts an optional `t` 6th arg (ctx.t).
  When present, the image-missing fallback string is looked up via the
  new `image_missing_fmt` key in strings.lua. Callers without t (the
  launcher-test bytecopy) get the hardcoded English string verbatim,
  matching previous behavior.
- panels/detail.lua: both md.render call sites now thread ctx.t through.
- strings.lua: add image_missing_fmt = "[image missing: %s]".
- icons.lua: deleted. The v0.2.0 status-glyph helper was replaced by
  dep_glyph_* string keys in v0.3.0; grep confirmed no remaining refs.
- manifest.module: bump 0.3.2 -> 0.3.3.
2026-06-13 13:31:36 +02:00

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.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.

References

  • meta/docs/architecture/module-lifecycle.md
  • meta/docs/architecture/host-app.md
  • meta/docs/superpowers/specs/2026-05-14-launcher-design.md
Description
P.3.4 UI launcher module � module picker + quit-confirm dialog
Readme 185 KiB
Languages
Lua 99.2%
Shell 0.8%