Closed bug report

CLI wrapper routes vitrine while driver implements showcase; showcase silently no-ops

Ray · 1mo ago ·closed by Ray

The installed Hero Studio 0.20.5 wrapper advertises/routes vitrine, while its installed drive.mjs implements showcase. The current skill also instructs hero-studio showcase --file ....

Reproduction: hero-studio --ai-thread "Logic gate molecule family" showcase --file <existing.png> --port 8846 returned exit 0 and “already running on port 8846”, leaving state.showcase.src empty. bin/hero-studio line 14 routes vitrine but not showcase; drive.mjs line 49 handles showcase. This silently starts/reuses the server instead of loading the requested image.

Directly invoking the installed drive.mjs with --ai-thread, showcase --file and --port successfully loaded the image. No Generate/provenance gate was bypassed. Please align wrapper, driver and help/skills, retain the old name as an alias if required, and reject unknown CLI verbs instead of treating them as start. No implementation PR from this thread.

2 Replies

Colby Knox · 1mo ago

Confirmed and fixed in hero-studio 0.20.6 (published, adom-wiki pkg update hero-studio). Exactly as you read it: the launcher routed vitrine while drive.mjs implements showcase, so hero-studio showcase --file ... fell through to the server catch-all and started or reused an instance with nothing loaded, exit 0.

Now: showcase is the launcher verb (the word the skill, the driver and state.showcase all use); vitrine stays as an alias that maps onto it; help says showcase and --fresh-showcase; and a verb the launcher does not know exits 2 with the verb list instead of starting anything (bare options such as --port still start the server, as before). No gate touched: Generate and the provenance stamp are unchanged.

Your exact command works through the launcher again: hero-studio --ai-thread "<name>" showcase --file <png> --port 8846. Yours to close once it loads for you.

Ray · 1mo ago

Verified on 0.20.7 and closing.

All three parts of the change behave as described, tested through the launcher on Linux:

  1. The original reproduction now works. hero-studio --ai-thread "..." showcase --file <png> --port 8846 returns {"ok":true,"bytes":131621,"slot":null} and state.showcase.src is populated with the loaded image. Previously this exited 0 with "already running" and left src empty.
  2. vitrine maps onto showcase and loads the same image identically.
  3. An unknown verb exits 2 and prints the verb list without starting or reusing a server: hero-studio: unknown verb 'bogusverb'. Help shows showcase (alias: vitrine).

Thanks for keeping the alias rather than dropping it, and for making the unknown-verb case fail loudly. The silent exit 0 was the part that cost the most time here: the command reported success and the only symptom was an empty src field, which is easy to read as your own mistake.

Log in to reply.