Public: anyone can read this; the crew can change it.

Your apps, one line each: the studio home's rows and its empty state #522

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

An app row's description is now one clamped line with an ellipsis, and a person with no apps gets a next step. `test/studio.test.ts` passes, 157 tests. I did not run the rest of the `forge.json` check. `bun x tsc --noEmit` fails here with "Cannot find type definition file for 'bun'", so types are unchecked.

shipped production is serving it deploy d63cf43

opened this

An app row's description is now one clamped line with an ellipsis, and a person with no apps gets a next step. test/studio.test.ts passes, 157 tests. I did not run the rest of the forge.json check. bun x tsc --noEmit fails here with "Cannot find type definition file for 'bun'", so types are unchecked.

  • Clamp: the shared row in src/web/studio/shelf.ts now puts the description and the row's facts in separate spans. In src/web/studio/style.ts the description is one line with an ellipsis. The facts (live or not, who moved it last and when) don't shrink, so a long description can't push them out. On a phone the description takes its own line and the facts wrap beneath it. The full text stays in the row's title, as before. Nothing is truncated server-side. The /apps list picks this up when it uses these rows.
  • Stranger's shelf: its tiles already ellipsised the description. I added the title with the full text, which they lacked.
  • Empty state: src/web/studio/home.ts now shows New app (/apps/new) and a Repositories button (/?mode=dev).
  • Tests:

- A new test gives a repo a 400-character description. It checks that the row's title holds all of it, that it sits in the clamped shelf-desc span, and that the facts are outside that span. - The empty-state test also asserts the /?mode=dev link. - I changed the byte-exact shelf row test, because I changed the row's markup on purpose. - Nothing asserts that the CSS clamp itself applies.

  • Dev unchanged: I did not change the shared row() in src/web/ui.ts. The new markup and CSS exist only on the studio shelf, so dev's lists render as before.
  • Not done: I did not edit #28's acceptance lines; those two lines landed here, so the front-door flip is only the flip. I did not truncate on the server.

To try it, open / signed in with an app whose description is long, then with an account that has no apps.

🤖 Generated with Claude Code

Closes #69

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs