Public: anyone can read this; the crew can change it.
The studio's contract catches up with what shipped: finding, speed, and where New app lands #153
Check · Review · Land · Live done — Landed and live in production.
scout/forge:scout/140-the-studio-s-contract-catches-up-with-wh → main 1 commit fork
1 file
changed +30
−4
docs/STUDIO.md +30 −4
| @@ -7,6 +7,20 @@ commits, branches, runs — unchanged. The switch is in the top bar and is a | ||
| 7 | 7 | cookie on that browser; the URLs are the same in both, so a link works |
| 8 | 8 | whichever way its reader sees. |
| 9 | 9 | |
| 10 | Finding something never leaves the page you're on. `/` focuses the search | |
| 11 | box in the top bar, unless a field already has focus; `Cmd/Ctrl-K` opens the | |
| 12 | command palette from anywhere, a field included. The box takes its query to | |
| 13 | `/search` (`studioSearchPage`, `src/web/studio/search.ts`): apps first, | |
| 14 | matched by name, owner or description, then every change and tell whose | |
| 15 | title mentions the word, each saying which app it's on — the same | |
| 16 | visibility as the rest of the studio, so a signed-out reader sees only the | |
| 17 | public apps a signed-out reader would. The palette starts from a short local | |
| 18 | index — your own apps, then places and actions like Home, Apps, Map, New | |
| 19 | app — and past two characters asks that very same search, folding its apps, | |
| 20 | changes and tells in under their own headings (`rankPalette`, | |
| 21 | `src/web/palette.ts`), so what it turns up can never disagree with the page | |
| 22 | behind it. | |
| 23 | ||
| 10 | 24 | ## Five words |
| 11 | 25 | |
| 12 | 26 | Every word on a studio page is one thing in git, and dev mode shows it. |
| @@ -47,9 +61,16 @@ page: the studio only offers principled moves. | ||
| 47 | 61 | An app's home in the studio (`/:owner/:name`, when the repository is an |
| 48 | 62 | app) shows, top to bottom: what it serves and where; the box; what asks |
| 49 | 63 | you; what is happening now. Beside it, who is on the crew and what each is |
| 50 | for, this week's numbers (shipped, runs, spend, spend per shipped change), | |
| 51 | and how the repository runs itself, when it does — each **Change** button | |
| 52 | leading to the one place both are set. The page keeps itself | |
| 64 | for, this week's numbers — shipped, runs, spend, spend per shipped change, | |
| 65 | and how fast a change reaches its preview, worded as `reaches its preview in | |
| 66 | 6.1s` and split beneath it into waiting to be picked up and coming up, each | |
| 67 | its own median (`previewLatencyWords`, `src/web/studio/app.ts`) — and how | |
| 68 | the repository runs itself, when it does — each **Change** button leading to | |
| 69 | the one place both are set. Below three served deploys this week the line | |
| 70 | says there are not enough to trust a median, rather than printing one from a | |
| 71 | run or two; when some of the week's deploys never reached a preview at all, | |
| 72 | it adds how many of how many, linking to them, and says nothing extra in a | |
| 73 | clean week. The page keeps itself | |
| 53 | 74 | current about deployments: a deploy run for the app being viewed refetches |
| 54 | 75 | the head card and previews list in place, so a change serving in its |
| 55 | 76 | preview shows up without a reload. |
| @@ -247,7 +268,12 @@ whether it is live, what the crew last did there, and a way in. That row is | ||
| 247 | 268 | a *shelf row* (`src/web/studio/shelf.ts`): one function turns repositories |
| 248 | 269 | into rows, from grouped reads, so every page that lists apps lists them the |
| 249 | 270 | same way and the home only decides the card around them. **New app** is the |
| 250 | same flow as ever. `/?mode=dev` is the repositories list, and — like | |
| 271 | same form either way (`/apps/new`); once the sentence becomes a repository | |
| 272 | it lands on the app's own page, `/:owner/:name/app` (`appPage`, | |
| 273 | `src/web/pages/apps.ts`) — not this shelf, and not the studio's five-word | |
| 274 | home for it. Its first paint carries the flash saying where it's starting, | |
| 275 | each environment as it comes up, the hostname and terminal, the crew, and | |
| 276 | its recent runs. `/?mode=dev` is the repositories list, and — like | |
| 251 | 277 | the toggle in the top bar — it switches this browser to dev from then on; |
| 252 | 278 | `/?mode=studio` switches it back, the same way. |
| 253 | 279 |
new above
offline