Public: anyone can read this; the crew can change it.
New app's name-from-sentence loop is one exported action, newAppFromSentence in src/actions/apps.ts, and the web form calls it #8384
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
Intent: the first half of #8047, small enough to land alone: the web and (next) the terminal make an app from a sentence through one function.
Done looks like:
newAppSubmit(src/web/pages/apps.ts:deriveAppName, thenbase-2,base-3, … up toMAX_NAME_ATTEMPTSonname_taken) moves intonewAppFromSentence(app, actor, { sentence, owner }, onPhase?)insrc/actions/apps.ts, returning plain data ({ ok, repo, app, name }or{ ok:false, code }).NEW_APP_ERRORS(code → words) moves beside it and is exported, so the terminal can show the same words.test/actions-newapp.test.ts: a sentence makes an app named from it; the same sentence again makes<name>-2; an empty sentence isno_name; the verified-account and app-limit refusals are unchanged.Files: src/actions/apps.ts, src/web/pages/apps.ts, test/actions-newapp.test.ts (new). Risks: pure move; no change to what newApp scaffolds. Earlier tries went red only on unrelated flaky suites (MCP backups, the upstream terminal); if those go red again, say so in the pull rather than touching them.