Commit Graph

13 Commits

Author SHA1 Message Date
Calic
41b28ff37d feat(launcher): add list + detail panel stubs (master-detail L.2)
Splits rendering into panels/list.lua and panels/detail.lua. List
implements row hit-test, scroll-state, whole-list bg-tint hook for the
dep-conflict UX (L-Q6). Detail renders an empty-state placeholder
until L.4-L.7 fill in title, description, deps, carousel, and launch
button.
2026-06-11 01:41:11 +02:00
Calic
1658aebe70 fix(launcher): strip trailing LF from frontmatter body
The body region rebuilt from line-split included a trailing empty
entry from the final LF the parser appends to drive its gmatch. Strip
it so 'body text\n' (the on-disk content) parses to 'body text' (the
user-visible body), which is what the launcher-test asserts.
2026-06-11 01:26:50 +02:00
Calic
9d758e28c9 feat(launcher): add markdown.lua M3-subset renderer
Hand-rolled parser + renderer for the launcher's description bodies.
Supports headers H1-H3, paragraphs, bullet + ordered lists, inline
bold/italic/code, inline images. No tables, blockquotes, links, or
code blocks. Font sizes per spec L-Q3 (H1=24, H2=20, H3=16, body=14).
Images resolve via engine.module.load_texture when a module_id is
provided to the renderer.
2026-06-11 01:22:10 +02:00
Calic
942e05ba3e feat(launcher): add frontmatter.lua JSON-frontmatter parser
Parses manifest.launcher.md leading JSON-frontmatter (delimited by
standalone '---' lines), returns (meta, body). Reuses
lib-management.dep-fetcher._json_decode so we do not add a second JSON
decoder to the codebase. Lazy require so test-lib contexts can swap a
stub decoder via _G.LAUNCHER_FRONTMATTER_DECODER.
2026-06-11 01:21:27 +02:00
Calic
8b833bbb35 launcher 0.2.0: inline status icons + classified update-check + token auth wire
- Async update-check per module on init (git.start_ls_remote_tags),
  polled per frame. Result classified into available / no-update /
  fail / local-only via the new kind field from lib-core.git 0.2.0.
- Pre-emptive dep-check per module (depf.ensure_for_module) on init
  populates a dep_check_result whose ok/conflicts/warnings/errors
  drive the icon strip.
- Inline icon strip per module-row (icons.lua): rotating ASCII
  spinner while pending, yellow warn for auth/network failures or
  dirty deps, blue update-badge with target version (clickable to
  trigger fetch+checkout), red error for dep-check conflicts, gray
  L for repos that genuinely don't exist on the server. Tooltip on
  hover shows the specific reason per icon.
- Click handler splits launch-vs-update by hit-testing the badge
  rect before the row rect. Launch is blocked when dep-check failed.
- On init, reads engine.config("gitea_token") and forwards via
  git.set_token so users can persist their token in their user-data
  engine.json layer instead of using an env var.
- New deps: lib-core.git 0.1.0, lib-management.dep-fetcher 0.1.2.
v0.2.0
2026-05-31 14:09:39 +02:00
Calic
4d91a5ffde rename to lib-management.launcher (was lib-sporel.launcher)
Per ADR-0045 (three-tier library naming) the launcher migrates from
the retired lib-sporel.* prefix to the new lib-management.* tier for
host-infrastructure libs. Updates:

- manifest.module id: lib-sporel.launcher -> lib-management.launcher
- manifest.core id: lib-sporel.launcher.core -> lib-management.launcher.core
- init.lua engine.module.dir_of("lib-management.launcher")
- README + fsm.lua comment refs

Gitea repo renamed in lockstep:
sporel/sporel-module-lib-sporel.launcher ->
sporel/sporel-module-lib-management.launcher
2026-05-31 00:21:51 +02:00
Calic
03027b077a docs: add standard module documentation
Initial README following the project's module documentation structure:
Abstract paragraph, Badges as bold key:value list, Topology section
with auto-generated mermaid graph, Controls describing player input,
Demonstrates listing the Sporel features showcased, References at
the end.

Install pre-commit hook via Sporel --install-hooks=.; topology is
auto-managed by Sporel --lint --fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 01:39:53 +02:00
Calic
c7cca569de deps(launcher): manifest.module.ci_frames=10 (Test-Opt Phase 4.1) 2026-05-16 01:28:49 +02:00
Calic
decf7b359a deps: bump lib-core.input dep 0.3.0 → 0.4.0 (P.3.10 cascade)
No behavioral change. Only 0.4.0 is now available.
2026-05-15 22:14:24 +02:00
Calic
3fe0d03583 feat(P.3.5): use engine.window.size() instead of hardcoded 1280x720 2026-05-13 02:15:34 +02:00
Calic
5dde5b28c9 fix(P.3.4): correct aabb_contains_point signature + SPOREL_CI self-exit
- hit() now passes rect-table as single arg (not destructured) per
  engine.spatial.aabb_contains_point(rect, px, py) signature.
- update() honors SPOREL_CI=1 via 60-frame self-exit (matches spine-
  prototype pattern). Required for headless smoke (P0-S15).
2026-05-12 23:38:38 +02:00
Calic
4db760bc60 fix(P.3.4): manifest schema — add api, entry_point; exact-match dep version 2026-05-12 23:14:38 +02:00
Calic
141683438d feat(P.3.4): initial — Sporel Launcher v0.1.0 (FSM + click-UI + quit-confirm) 2026-05-12 23:05:55 +02:00