Public: anyone can read this; the crew can change it.
The app page speaks the home page's language, with looks before and after #9652
Check · Review · Land · Live done — Landed and live in production.
The `/apps` page now opens with one sentence and lists its apps as bare rows, but the looks before and after are not on this pull. This sandbox has no Chromium that starts, so I took no screenshots at 1440 or 390, light or dark. The change is small, so someone can take them from the preview of this pull against production.
shipped production is serving it deploy ef71500
The /apps page now opens with one sentence and lists its apps as bare rows, but the looks before and after are not on this pull. This sandbox has no Chromium that starts, so I took no screenshots at 1440 or 390, light or dark. The change is small, so someone can take them from the preview of this pull against production.
What changed (src/web/pages/apps.ts only):
- Opening sentence: the header now carries "Every app you can reach, and whether it is serving." under the title.
- Rows, not a box: the list used to sit inside a bordered card. It is now the plain
<ul class="list setting-list">, so the hairlines between rows are the only borders.
Checks:
design-lintpasses andtsc --noEmitis clean.- The page tests I ran pass:
apps-fit,apps-timing,web-appsandapps-archived. apps-fitskipped its 390px Chromium measurement here for the same reason, so the no-sideways-scroll check at 390 is unverified.
Left alone:
- The
<h1>Apps</h1>stays visible.apps-timing.test.tsasserts it, and I did not want to change a passing test. - The cost line, the All/Live filter and the archived link keep their places.
- No behaviour or data changed.
To try it: open /apps on the preview of this pull.
The gate failed because no commit had a "Try:" line, and I've now added one. bun scripts/gate.ts printed nothing when I ran it locally. I read that as passing, but it printed no explicit verdict, so the forge's re-run is the real confirmation.
I pushed an empty commit whose message has a Try: line pointing at /apps on the preview. The code is the same as the first push. The page tests, design-lint and tsc already passed on it.
What changed
- Header:
/appsnow opens with one sentence under the title: "Every app you can reach, and whether it is serving." - List: the apps are bare rows, with no bordered card around them.
Not done
- No before-and-after screenshots at 1440 and 390, light and dark. This sandbox has no Chromium that starts, so they need taking from the preview against production.
- The 390px sideways-scroll measurement in
apps-fitwas skipped here for the same reason, so it is unverified.
Left alone
- The visible
<h1>Apps</h1>, becauseapps-timing.test.tsasserts it. - The cost line, the All/Live filter and the archived link.
- No behaviour or data changed.
To try it: open /apps on the preview of this pull.
The code is right: /apps on the preview shows the opening sentence and the rows without a card box. It is small, escaped, and adds no behaviour. One thing blocks it: the issue box 2 asks for looks at 1440 and 390, light and dark, before and after, on the pull, and there are none. Take them from the preview against production, and attach or link them in the pull description. The 390 sideways-scroll check in apps-fit was also skipped, so confirm it from the 390 look. Nothing else to change.
Chromium can't start here: it fails on creating a socket, which the sandbox forbids. I can't take the looks, and I won't change the sandbox to get around that.
I did not change anything and have not pushed again, so the pull is as sentinel reviewed it. The two things sentinel asked for are still open, and both need a machine where Chromium starts.
- Looks: there are no screenshots at 1440 and 390, light and dark, before and after. They need taking from
/appson this pull's preview and from production, then attaching to the pull. Someone with a working browser or the forge's looks capture can do it. - 390 check:
apps-fit's Chromium measurement was skipped here, so the sideways-scroll check and the sentence wrapping without shift are unverified. The same machine can run it, or read both off the 390 look.
The page does contain a sentence, but not that it wraps cleanly at 390 or that nothing moves. The sentence sits in the header's page-head-sub, which is set to take its own full-width line, so it should wrap rather than overflow. That is a reading of the CSS, not a measurement.
I disagree with nothing in the review, and I'm not claiming these items are done.
The code is finished and pushed, but the looks are still missing, and I can't produce them from here. Chromium won't start in this sandbox: it fails creating a socket (socket() failed: Operation not permitted), so I can't take screenshots. I tried a screenshot of the preview, and apps-fit's Chromium measurement skips for the same reason. I won't work around the sandbox.
Two things from review are therefore still open, and a person needs to close them:
- Looks:
/appsat 1440 and 390, light and dark, taken from this pull's preview (after) and from production (before). They go on the pull, which is what the issue's second box asks for. - 390 check: run
bun test test/apps-fit.test.tswhere Chromium works, or read the 390 look. It confirms there is no sideways scroll and that the sentence wraps without shifting the layout. The sentence sits in the header'spage-head-sub, which takes its own full-width line, so it should wrap rather than overflow. That is my reading of the CSS, not a measurement.
What changed (src/web/pages/apps.ts only)
- Sentence: the header opens with "Every app you can reach, and whether it is serving."
- Rows: the apps list is plain
list setting-listrows, with no bordered card around them.
Checks: design-lint, tsc --noEmit and the page tests I ran (apps-fit, apps-timing, web-apps, apps-archived) pass. The gate's "Try:" line is in the second commit.
Left alone: the visible <h1>Apps</h1> (apps-timing asserts it), the cost line, the All/Live filter and the archived link. No behaviour or data changed.
To try it: open /apps on the preview of this pull.
Handed to a person by the crew: two follow-up runs on the review's changes ended without a push, so no more start here until you say what to try. (The forge posts this under the reviewer's name; the reviewer did not write it.)
I merged main into the branch and pushed. The one conflict was in src/web/pages/apps.ts, in the empty-state block of the apps page.
I took main's version of that block. Main had already replaced the boxed empty card with a bare section, which is what this pull was heading toward. The wording differs between the two sides:
- Archived view: "Nothing is archived" and "Apps you put away show up here", with no create button.
- Live filter: "Nothing is serving right now. Clear the filter to see every app."
- No apps at all: "Nothing runs here yet", with the create button.
My first resolution kept this branch's boxed empty() card. Main's test "an empty /apps says so in plain words, with no box" caught that, so I switched to main's block and dropped the empty import.
After the fix, bun x tsc --noEmit and bun scripts/design-lint.ts are clean. The 44 tests in the four files that touch the apps page pass. I did not run the full suite here; the forge runs it on the push.
The preview shows the sentence under the title, in page-head-sub (muted, small), so principle 1 is met and my earlier ask on it stands met. One thing to fix first: nothing tests the new sentence. Add one assertion to the /apps test (apps-timing or web-apps) that the page contains the sentence in the header; it must fail without this change. The 390 wrap and the before/after looks are not on the pull; that is for a person with a browser, so I list box 2 as left rather than block on it.
The /apps page now opens with one sentence under its title, "Every app you can reach, and whether it is serving.", and lists its apps as bare rows instead of inside a bordered card. A test now checks that the header carries that sentence.
What changed
src/web/pages/apps.ts: the sentence sits in the header'spage-head-sub, and the apps are the plain<ul class="list setting-list">with no card around them. The empty-state wording is main's, taken when main was merged in.test/web-apps.test.ts: answers the review. The "apps, runs and the crew on the web" test now asserts that<div class="page-head">is followed by apage-head-subholding the sentence. With the sentence altered, that test fails; restored, all 26 tests in the file pass.
Checks: bun scripts/gate.ts and bun x tsc --noEmit are clean. I did not re-run bun scripts/design-lint.ts after this push. The push changed only the test, and design-lint was clean after the last change to src/web/.
Still not done
- Looks: there are no screenshots of
/appsat 1440 and 390, light and dark, before and after. Chromium cannot start in this sandbox because creating a socket is refused. They need taking from this pull's preview (after) and production (before). - 390 check: the earlier review asked that the 390 look show the sentence wrapping without shift. That is unverified, and so is
apps-fit's 390 sideways-scroll measurement, which skips here for the same reason. Runningbun test test/apps-fit.test.tswhere Chromium works, or reading the 390 look, will settle both.
To try it: open /apps on https://lab--9652--forge-trevato-apps.open-platform.sh.
🤖 Generated with Claude Code
The /apps preview opens with one muted sentence under the title (principle 1), and the list is plain rows with no card (6, 7). The new assertion in test/web-apps.test.ts covers the sentence in the header, so it fails without the change. Next, two things I would do: (1) attach before/after looks of /apps at 1440 and 390, light and dark, taken from production and from this preview, and confirm the 390 sentence wraps with no sideways scroll (apps-fit skipped here). (2) Consider whether the visible h1 "Apps" beside the sentence says the same thing twice; make it sr-only and update apps-timing if so.
Left #9586 open: 1 unticked item remain (Looks at 1440 and 390, light and dark, before and after, are on the pull.).
The
/appspage now opens with one sentence and lists its apps as bare rows, but the looks before and after are not on this pull. This sandbox has no Chromium that starts, so I took no screenshots at 1440 or 390, light or dark. The change is small, so someone can take them from the preview of this pull against production.What changed (
src/web/pages/apps.tsonly):<ul class="list setting-list">, so the hairlines between rows are the only borders.Checks:
design-lintpasses andtsc --noEmitis clean.apps-fit,apps-timing,web-appsandapps-archived.apps-fitskipped its 390px Chromium measurement here for the same reason, so the no-sideways-scroll check at 390 is unverified.Left alone:
<h1>Apps</h1>stays visible.apps-timing.test.tsasserts it, and I did not want to change a passing test.To try it: open
/appson the preview of this pull.Closes #9586