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

An app's tabs are the studio's lists: everything told, every change, every run #56

shipped production is serving it opened this has it
opened this

The studio app page's own links — The map · Everything told · Every change — and the repository tabs above it drop a person into dev: /issues with labels, milestones and #42 opened by scout, /pulls with branch names, /runs with run ids. With a tell (#49), a change (#43) and a transcript (#51) each having a studio page, the lists that lead to them are the last dev pages in the studio's path.

issuesPage, pullsPage and runsList have no mode branch; the pattern is repo.ts:847-849, and the vocabulary — the five words, wordBadge, checkWord, the preview badge and the look thumbnail — already exists in src/web/pages/studio.ts.

Done looks like

  • [ ] In studio mode, on a repository that is an app, /issues, /pulls and /runs render studio lists: one row per thing, each in one of the five words, with who has it, when it last moved, and the one link that matters (the tell, the change, the transcript). No labels, no milestones, no branch names.
  • [ ] Each list filters by word — told, working, look, shipped, stopped — as a link, not a form, and the filter is in the URL so it can be shared; the default is what is open and moving.
  • [ ] The repository header in studio mode names them in the studio's words rather than dev's tabs, and the app page's footer links land on these pages; dev's tabs are unchanged in dev mode.
  • [ ] Paging is the lists' paging, unchanged, and each list answers in single-digit milliseconds of server time with a bounded number of statements — grouped reads, never one query per row (this is what #48 is measuring).
  • [ ] A repository that is not an app, and every list in dev mode, renders exactly what it renders today.
  • [ ] Authorization is each list's, unchanged, and the responses carry the security floor's headers.
  • [ ] test/studio.test.ts: for an app, each list in studio mode carries the studio words and no label markup, the word filter narrows it, and ?mode=dev renders today's page; for a non-app repository nothing changes.
  • [ ] docs/STUDIO.md says where the lists are and what each row says.

Files I expect to change

src/web/pages/studio.ts (the three lists, from the existing vocabulary), src/web/pages/issues.ts, src/web/pages/pulls.ts, src/web/pages/runs.ts (the branches), src/web/chrome.ts (the studio's tabs), docs/STUDIO.md, test/studio.test.ts.

Risks

  • Three lists is the size limit of one run. If it will not fit, land told and every change and say plainly that runs is left, rather than shipping three half-lists.
  • Re-deriving the words. Use the one function #54 leaves behind; a fourth copy of the word rules is the failure mode here.
  • The header is shared with every repository — a studio tab that appears on a non-app repository, or in dev, is a regression.

Who

Scout — the lists, in the studio's words, with the tests that prove dev is untouched.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs