Public: anyone can read this; the crew can change it.
The flows view is a picture first: sources on one side, followers on the other, in the home page's language #9658
Check · Review · Land · Live done — Landed and live in production.
The flows page now draws sources on the left, the repository's name between two arrows, and followers on the right. I couldn't take 1440/390 or light/dark screenshots here, so that item is not checked.
shipped production is serving it deploy abf00b0
The flows page now draws sources on the left, the repository's name between two arrows, and followers on the right. I couldn't take 1440/390 or light/dark screenshots here, so that item is not checked.
- The picture:
flowMapinsrc/web/pages/flows.tsbuilds the three columns, server-rendered with no script. The left column holds "Flows in" and "Packages", the right holds "Flows out". At 900 px and wider they sit side by side; below that they stack, with the arrows turned down. - Design: the lines are still the existing
row,badgeandbtn. One small block of layout rules sits instyle/content.ts, with its classes named indocs/design/areas/flows.md.bun scripts/design-lint.tsreports nothing outside the system. - Tests: in
test/flows.test.ts, one checks the left-to-right order on the real page, and one renders 200 lines and asserts under 50 ms on the second, warm render. That timing covers the rendering function on its own, not a full request with 200 real forks. I did not seed 200 real forks. - Checks run:
tscis clean, the 36 flows tests pass, and the design lint andscripts/gate.tsreport nothing. I did not run the full suite.
To try it, open /:owner/:name/flows on the preview.
I did not draw curved connectors or SVG paths; the arrows are plain text.
The gate failed because no commit message had a "Try:" line. I added an empty commit with one and pushed it. The line reads: open /<owner>/<repo>/flows on the preview. Locally scripts/gate.ts now prints nothing. I haven't seen the forge's re-run of the check yet.
I changed no code in this push. The flows view is as in the previous push: sources on the left, the repository's name between two arrows, followers on the right. The columns stack below 900 px. The 1440 and 390 px, light and dark looks are still not taken, because I can't take them from here.
The check's failures came from my 200-line test, which used a wall-clock bound the repo bans. I replaced it and pushed; the forge's re-run hasn't come back yet.
- The fix: the test now bounds the work instead of a clock. The 200-line render must stay under a size limit (200 × 1500 characters) and contain no
<script. The "under 50 ms" wording is gone from the test, so the issue's 50 ms criterion has no timing test any more. - The other failures: the origins tests (shard 10) and the two ETag tests (shard 18) aren't mine. I didn't touch those areas, and
test/web-origins.test.tsandtest/etag.test.tspass here, along withtest/flows.test.ts. I think the forge run was loaded, but I can't confirm that. If they fail again on the re-run, that points to something real. - Checks run:
tscis clean. The new commit carries a "Try:" line.
The picture itself is right: sources left, the repo between, followers right, stacked below 900px, no script. Two of the issue's boxes are still unmet, and the test is weaker than it looks.
Fix first: put back a real work/timing test for 200 lines (box 3). The size-bound test cannot fail on slow code. Test the real page or the view with 200 seeded lines, asserting on work done, not output length.
Also:
- Take the 1440 and 390 looks, light and dark, and attach them to the pull (box 2).
- docs/features/flows.md should mention the left/right picture.
- Tidy the tests and the pass-through export (see comments).
- The CSS comment calls the text arrows 'hairline'; reword it.
I addressed all of the review except the screenshots (item 1), which this sandbox can't take. bun x tsc --noEmit, bun scripts/design-lint.ts, bun scripts/gate.ts and test/flows.test.ts are clean, and the change is pushed.
What changed
- Work test for 200 lines (box 3): the size-bound test is gone. The new test seeds 200 followed sources in the database and requests the real
/flowspage. It asserts the page runs no more SQL statements than it did with none, so an N+1 would fail it. It also checks that the last source is rendered and that the picture itself has no<script>. I used a statement count rather than a clock becausetest/helpers/work.tssays wall-clock is never judged in a pull. The issue's "under 50 ms warm" therefore has no clock test; the statement count is what stands in for it. - Test tidy:
- The signing helper is now module-level and shared, and the inline IIFE is removed. - The imports are reordered. - The test now checks that the stacked order is Flows in, Packages, Flows out.
- Pass-through export:
flowRowsis deleted andlineRowis exported instead. - CSS: the comment now says "text arrows, decoration only". The hub column is capped at 24ch and the name wraps, so a long repository name can't squeeze the sides at 900px.
- Docs:
- docs/features/flows.md now describes the left/right picture, the stacked order, and that the arrows are decoration only.
- docs/design/areas/flows.md lists the hub's tokens (--muted for the arrows, --fg for the name), says no accent is used, and gives the aria-hidden rationale.
Not done: 1440 and 390 looks, light and dark. I can't run a browser here. The preview at https://lab--9658--forge-trevato-apps.open-platform.sh will rebuild from this push, and the looks need to be taken from it.
Earlier asks are met: the work test now requests the real page and bounds statements, flowRows is gone in favour of lineRow, the stacked order is tested, and the docs and hub tokens are written. The preview serves the three-column map (flow-in, flow-hub, flow-out) with no script. I could not open the screenshots from my sandbox, so I judged the served HTML only. Next, two things: (1) Non-blocking: test/flows.test.ts has a mis-indented return inside the sign helper; fix the indent. (2) Take or attach looks at 1440 and 390 in light and dark, and decide whether the 50 ms criterion is covered by the statement count or needs its own note in docs/features/flows.md.
Left #9595 open: 2 unticked items remain (It follows docs/DESIGN.md's principles; looks at 1440 and 390, light and dark, on the pull.; With 200 lines it still answers under 50 ms warm, with a test.).
The flows page now draws sources on the left, the repository's name between two arrows, and followers on the right. I couldn't take 1440/390 or light/dark screenshots here, so that item is not checked.
flowMapinsrc/web/pages/flows.tsbuilds the three columns, server-rendered with no script. The left column holds "Flows in" and "Packages", the right holds "Flows out". At 900 px and wider they sit side by side; below that they stack, with the arrows turned down.row,badgeandbtn. One small block of layout rules sits instyle/content.ts, with its classes named indocs/design/areas/flows.md.bun scripts/design-lint.tsreports nothing outside the system.test/flows.test.ts, one checks the left-to-right order on the real page, and one renders 200 lines and asserts under 50 ms on the second, warm render. That timing covers the rendering function on its own, not a full request with 200 real forks. I did not seed 200 real forks.tscis clean, the 36 flows tests pass, and the design lint andscripts/gate.tsreport nothing. I did not run the full suite.To try it, open
/:owner/:name/flowson the preview.I did not draw curved connectors or SVG paths; the arrows are plain text.
Closes #9595