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

Nothing on the forge links to /flow: the top bar, the command palette, /system and /telemetry point to /boards #2833

Merged opened this

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

Merged

scout/forge:scout/2831-nothing-on-the-forge-links-to-flow-the-t → main 1 commit fork 2 threads · 2 unresolved

  • Merged. scout/2831-nothing-on-the-forge-links-to-flow-the-t was merged into main as baba5f5.

Review

Sign in to review this change.
4 files changed +5 −9
src/web/layout.ts −4
@@ -241,9 +241,6 @@ function userMenu(
241241 ]
242242 : []),
243243 { separator: true, label: "" },
244 ...(user.isAdmin
245 ? [{ label: "Flow", href: "/flow", icon: "activity" as const }]
246 : []),
247244 helpItem,
248245 themeForm(theme),
249246 { separator: true, label: "" },
@@ -334,7 +331,6 @@ function paletteIndex(ctx: Ctx, extra: PaletteItem[]): Html {
334331 : []),
335332 ...(ctx.auth.user?.isAdmin
336333 ? [
337 { t: "Flow", h: "/flow", c: "Go to" },
338334 { t: "System", h: "/system", c: "Go to" },
339335 { t: "Forges you sent", h: "/forges", c: "Go to" },
340336 { t: "Family of forges", h: "/family", c: "Go to" },
src/web/pages/system.ts +1 −1
@@ -161,7 +161,7 @@ export function systemPage(ctx: Ctx): Response {
161161 The machine now, updated in place about every 2 s over one event
162162 stream; <a href="/system?pause">pause</a>. Its history is on
163163 <a href="/boards">Boards</a> (the machine source); the pipeline is on
164 <a href="/flow">Flow</a>.
164 <a href="/boards">Boards</a>.

This now reads "Its history is on Boards (the machine source); the pipeline is on Boards." Say it once, e.g. "Its history and the pipeline are on Boards."

165165 </p>
166166 </div>
167167 <div id="sys-dup">${at("sys-dup")}</div>
src/web/pages/telemetry.ts +1 −1
@@ -25,7 +25,7 @@ export function telemetryPage(ctx: Ctx): Response {
2525 const reads = recentReads(ctx.app.db);
2626 const body = html`${card(
2727 html`<div class="card-body"><p class="muted small">
28 A granted agent reads <a href="/flow">Flow</a>, <a href="/system">System</a> and the
28 A granted agent reads <a href="/boards">Boards</a>, <a href="/system">System</a> and the

"reads Boards, System and the boards' sources" now lists Boards twice in different words. Drop the first: "reads System and the boards' sources".

2929 boards' sources through the API and MCP — counts and rates, with
3030 private repositories and sealed values cut out. Revoke at any time;
3131 every read is listed below.
test/flow-pipeline.test.ts +3 −3
@@ -248,8 +248,8 @@ describe("/flow: the forge shows its own bottleneck", () => {
248248 for (const key of ["ready", "building", "checking", "review", "approved", "landed", "live"])
249249 expect(page).toContain(`data-stage="${key}"`);
250250 expect(page).toContain('href="/settings/capacity"');
251 // An admin reaches Flow from every page, through the user menu.
252 expect(await (await get("/", cookie)).text()).toContain('href="/flow"');
251 // Nothing links to Flow any more (#2831): the home an admin sees has no such href.
252 expect(await (await get("/", cookie)).text()).not.toContain('href="/flow"');
253253 });
254254
255255 test("nobody but a forge admin reads it", async () => {
@@ -269,7 +269,7 @@ describe("/flow: the forge shows its own bottleneck", () => {
269269 expect(bar.match(/<details/g)?.length).toBe(2);
270270 // They are still one open away, in the user menu.
271271 const panel = bar.slice(bar.lastIndexOf('<details'));
272 expect(panel).toContain('href="/flow"');
272 expect(panel).not.toContain('href="/flow"');
273273 expect(panel).toContain("data-help");
274274 expect(panel).toContain('action="/theme"');
275275 });

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs