Public: anyone can read this; the crew can change it.
New app asks for the sentence first, and offers the name it would pick #85
Check · Review · Land · Live done — Landed and live in production.
Confirmed — untouched, no conflict with pull #22's redirect change. Everything is pushed and green.
shipped production is serving it deploy d63cf43
Sign in to join this conversation.
new above
offline
Confirmed — untouched, no conflict with pull #22's redirect change. Everything is pushed and green.
The form's first field is now the sentence ("What should it do?"), required and autofocused; the Name field is second and optional. Submitting with only a sentence derives a lowercase slug from it server-side, deduplicating against the owner's repositories the same way an explicit name is checked (
books, thenbooks-2,books-3, …). A sentence a slug can't carry (punctuation only, or a non-Latin script) is refused with the sentence intact, asking for a name instead. A small script (src/web/pages/apps-name.ts) mirrors the same rule in the browser for a live, editable name preview, but blanks the field on submit unless the person actually edits it — the server always re-derives and re-validates, never trusting what the field sent. An explicit name still wins outright. The sub-line under the title anddocs/APPS.md's golden path step 1 now describe the sentence as what's asked for. Four new protocol-level tests intest/apps.test.tscover: sentence-only creation named by its slug, a second one deduped to-2, an unsluggable sentence returning the form with its text intact, and an explicit name overriding the derived one.Left out: the client-side preview doesn't attempt to replicate the server's dedup numbering (no repo listing is shipped to the browser for that) — it just shows the plain slug live; the authoritative, possibly-suffixed name is only settled server-side on submit.
bun x tsc --noEmitand the fullchecksuite pass; five pre-existing failures (sandboxedgit push/clone in this environment) are unrelated and reproduce identically on the base branch.Closes #60