feat(launcher): trim list rows to name+tags, scrollable detail panel
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>
This commit is contained in:
11
README.md
11
README.md
@@ -22,17 +22,20 @@ graph LR
|
||||
|
||||
## Controls
|
||||
|
||||
- **Mouse-Left**: Click a module-button to launch it; click confirm/cancel in the quit-modal.
|
||||
- **Enter**: Confirm quit when the modal is open.
|
||||
- **Escape**: Open the quit-modal from the chooser; cancel the modal when open.
|
||||
- **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-modal) factored into a sibling `fsm.lua` loaded via `engine.module.dir_of`.
|
||||
- Modal-state FSM (chooser <-> quit/conflict-modal) factored into a sibling `fsm.lua` loaded via `engine.module.dir_of`.
|
||||
|
||||
## References
|
||||
|
||||
|
||||
Reference in New Issue
Block a user