Compare commits

...

2 Commits

Author SHA1 Message Date
Calic
5cdf386f52 docs(launcher-test): sync README version + launcher ref with manifest
manifest.lib is at 0.3.0 (since the markdown.lua image_missing sync),
README still claimed 0.1.0 — bumped. Also bumped the "Tested
Production-Lib Surface" reference from launcher v0.1.0 to v0.3.3 to
reflect the current canonical launcher; the FSM component itself is
unchanged since v0.1.0 (3-way hash check guards drift).
2026-06-16 20:05:40 +02:00
Calic
0fbdcd276a sync(launcher-test): markdown.lua picks up image_missing localization
markdown.lua now mirrors the launcher byte-for-byte: M.render takes an
optional t 6th arg that the launcher threads its ctx.t through for the
image-missing placeholder. Pure-additive parameter — existing test
callers (which never invoke M.render) are unaffected.

manifest.lib: bump 0.2.0 -> 0.3.0. The render-signature change is
API-shaped; downstream consumers that call the helper directly may want
to opt in to the new arg.
2026-06-11 10:22:43 +02:00
3 changed files with 11 additions and 5 deletions

View File

@@ -4,7 +4,7 @@ P.3.4 reference test-module — validates `lib-management.launcher` FSM contract
and engine-surface existence via the `engine.test.*` assertion surface.
- Module-ID: `lib-management.launcher-test`
- Version: `0.1.0`
- Version: `0.3.0`
- Kind: `test-module` (headless; runs init() once + exits)
- Note: Embeds its own byte-identical copy of `fsm.lua` (Sporel-resolver does
not resolve module-as-dep; drift guarded by smoke.sh P0-S15-pre hash check).
@@ -46,4 +46,4 @@ copy; mutations reverted after observation.
### Tested Production-Lib Surface
`lib-management.launcher` v0.1.0 (FSM component) — Tests cover: all 5 explicit FSM transitions (`list+esc`, `quit_confirm+esc`, `quit_confirm+enter`, `quit_confirm+click_yes`, `quit_confirm+click_no`), stability for unhandled events (`list+click_module`), unknown-state passthrough, and engine-surface existence for `engine.module.list`, `engine.module.dir_of`, `engine.render.draw_text`, `engine.render.measure_text`.
`lib-management.launcher` v0.3.3 (FSM component, unchanged since v0.1.0 — 3-way hash check guards drift) — Tests cover: all 5 explicit FSM transitions (`list+esc`, `quit_confirm+esc`, `quit_confirm+enter`, `quit_confirm+click_yes`, `quit_confirm+click_no`), stability for unhandled events (`list+click_module`), unknown-state passthrough, and engine-surface existence for `engine.module.list`, `engine.module.dir_of`, `engine.render.draw_text`, `engine.render.measure_text`.

View File

@@ -1,7 +1,7 @@
{
"id": "lib-management.launcher-test",
"role": "test",
"version": "0.2.0",
"version": "0.3.0",
"api_min": "0.1",
"deps": []
}

View File

@@ -176,7 +176,11 @@ local function render_spans(spans, x, y, max_w, size)
return cur_y + line_h
end
function M.render(blocks, x, y, max_w, module_id_for_imgs)
-- `t` (optional, 6th arg) is the launcher's ctx.t string-lookup function.
-- When present, M.render uses it to localize the image-missing placeholder
-- via the `image_missing_fmt` key. Callers that don't have a t (e.g. tests)
-- may pass nil; the hardcoded English fallback then renders verbatim.
function M.render(blocks, x, y, max_w, module_id_for_imgs, t)
local cur_y = y
for _, b in ipairs(blocks) do
if b.type == "h1" then
@@ -216,7 +220,9 @@ function M.render(blocks, x, y, max_w, module_id_for_imgs)
-- assume a 16:9 max_w-wide image for layout.
cur_y = cur_y + math.floor(max_w * 9 / 16) + PARA_GAP
else
engine.render.draw_text("[image missing: " .. b.src .. "]",
local missing_text = t and t("image_missing_fmt", b.src)
or ("[image missing: " .. b.src .. "]")
engine.render.draw_text(missing_text,
x, cur_y, BODY_SIZE, COLOR_DIM)
local _, h = engine.render.measure_text("[image]", BODY_SIZE)
cur_y = cur_y + h + PARA_GAP