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

shipped production is serving it opened this has it
opened this

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:

  • [ ] The loop in newAppSubmit (src/web/pages/apps.ts: deriveAppName, then base-2, base-3, … up to MAX_NAME_ATTEMPTS on name_taken) moves into newAppFromSentence(app, actor, { sentence, owner }, onPhase?) in src/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.
  • [ ] The web form behaves exactly as before: the existing New app tests pass unchanged.
  • [ ] test/actions-newapp.test.ts: a sentence makes an app named from it; the same sentence again makes <name>-2; an empty sentence is no_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.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs