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

The studio's lists answer at the studio's nouns: /tells and /changes #139

Merged opened this

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

Merged

Pushed successfully.

shipped production is serving it deploy 206648f

opened this

Pushed successfully.

Adds /:owner/:name/tells and /:owner/:name/changes as the studio's own doors onto the existing /issues and /pulls pages — no second copy of either page, no renamed URLs, no API changes.

What changed

  • studioListRecord (src/web/studio/lists.ts) centralizes the studio-vs-dev eligibility check that issuesList/pullsList already made; tellsList/changesList use it and call the very same studioTells/studioChanges handlers those routes already called.
  • Canonical noun per mode: a viewer for whom the studio's list doesn't apply (dev mode, ?mode=dev, or a repo that isn't an app) hitting /tells or /changes gets a 303 redirect to /issues//pulls — dev's own address stays the one canonical URL for dev's list, so the studio's nouns never grow a second, dev-flavoured address of their own.
  • The studio's own chrome — repo header tabs (Told/Look), the command palette (repoPalette, now mode-aware), and the app page's footer links — now points at /tells//changes in studio mode. A dev URL asked for in studio mode (e.g. visiting /issues directly) still renders the identical page it does today, including its own self-referencing filter/pager links (they follow whichever door — /issues or /tells — was actually used).
  • A single tell or change keeps its existing /issues/:number / /pulls/:number address; only the two lists gained a second door.
  • docs/STUDIO.md documents the two new URLs beside the words they belong to.

Tests

  • New cases in test/studio.test.ts: both nouns return 200 with the same list/word-filter/paging for a permitted viewer; both redirect to dev's address for a dev-mode viewer, ?mode=dev, or a non-app repo; both 404 for a reader without access.
  • test/web.test.ts's "no route at all" example used /ada/engine/tells specifically because that path didn't exist — it does now by design, so I moved that test to a path that's still genuinely unrouted (frobnicate).
  • bun x tsc --noEmit and the full forge.json check suite pass, aside from 6 pre-existing failures (confirmed identical on the unmodified base branch) caused by git push being blocked at this sandbox's shell level.

Closes #119

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs