Public: anyone can read this; the crew can change it.
Settings › Traffic › Scrapes speaks the home page's language #9823
Check · Review · Land · Live done — Landed and live in production.
`/settings/traffic/scrapes` (`scrapesPage` in `src/web/pages/scrapes.ts`) now uses headings over rows, the same layout as Settings › Accounts and Telemetry. It has no cards any more. Only the display changed: grouping, counting, network lookup, POST routes, the form limits and the escaping all work as before.
shipped production is serving it deploy a5a2512
/settings/traffic/scrapes (scrapesPage in src/web/pages/scrapes.ts) now uses headings over rows, the same layout as Settings › Accounts and Telemetry. It has no cards any more. Only the display changed: grouping, counting, network lookup, POST routes, the form limits and the escaping all work as before.
- Four sections: What was read, Who it is, One actor across addresses and Networks on file are each a
<section class="settings-block">with an<h2>. Thecard(wrappers around the prefix table, the groups table and the networks form are gone. All three tables keep their.table-scrollbox,sr-onlycaption anddata-dense. - Rows instead of cards:
readsCardputs each repository under an<h3>with its counts, the "looks like a secret" list, the most-read paths and the commits read.captureCardplaces the capture's text and its Start or Stop form straight in its section.groupDetailis now an<h3 id="group">inside the One actor section, so the#grouplink still lands on it, with the export button and the requests table beneath it. - Empty states: each is one plain sentence, for no reads in the window, no prefixes and no groups yet. The
empty()box is gone. - New test:
test/scrapes-blocks.test.tschecks the page with nothing recorded, then with one capture group and one network on file. It finds the four sections and no.card, and checks that the Stop and networks forms post to the same routes. It also checks that a user agent and a network name full of HTML come out escaped. It fails on main. - Design note: a paragraph in
docs/design/areas/settings.mdrecords the shape. No new component class.
I did not touch traffic.ts or sources.ts, which belong to #9775.
Checks: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean. test/scrape-evidence.test.ts, test/server-timing-sweep.test.ts, the new test and the test/design* tests pass (50 tests), with the existing tests unchanged. scripts/fast.ts named 1,227 test files for this diff, about 106 minutes, so I ran only the tests that reach this page and left the full suite to the forge's check.
To try it: sign in as an admin on the preview, open /settings/traffic/scrapes and start a capture. To see a group, run the second test in test/scrapes-blocks.test.ts, which records six requests from one bot across six addresses.
🤖 Generated with Claude Code
Settings › Traffic › Scrapes (scrapesPage in src/web/pages/scrapes.ts) now uses headings over rows, like Settings › Accounts and Telemetry, instead of a stack of cards. Only the display changed: grouping, counting, network lookup, the POST routes, the form limits and the escaping work as before.
- Four sections: What was read, Who it is, One actor across addresses and Networks on file are each a
<section class="settings-block">with an<h2>. Thecard(wrappers around the prefix table, the groups table and the networks form are gone. All three tables keep their.table-scrollbox,sr-onlycaption anddata-dense. - No cards inside them:
- readsCard puts each repository under an <h3>, followed by its counts, its "looks like a secret" list, its most-read paths and the commits read.
- captureCard puts its text and its Start or Stop form straight into the section.
- groupDetail is an <h3 id="group"> inside One actor across addresses, so the #group link still lands on it. The export button and the requests table follow it.
- Empty states: each is one plain sentence, for no reads in the window, no prefixes and no groups yet. The
empty()box is gone. - New test:
test/scrapes-blocks.test.tsrenders the page with nothing recorded, then with one capture group and one network on file. It checks:
- the four headed sections are there and no .card is;
- the Stop and networks forms post to the same routes;
- a user agent and a network name written in HTML come out escaped.
It fails on main.
- Design note: a new paragraph in
docs/design/areas/settings.mdrecords this layout. No new component class.
traffic.ts and sources.ts are untouched; they belong to #9775.
The first push failed the forge's gate because no commit message said how to try the page on the preview. Force pushes are refused, so an empty follow-up commit adds the Try: line. Run against main's commit as the base, the gate now passes.
Checks run here: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean. The new test, test/scrape-evidence.test.ts and test/server-timing-sweep.test.ts pass, and the existing two are unchanged. scripts/fast.ts picked 1,227 test files (about 106 minutes) for this diff, so the full suite is left to the forge's check.
Try: sign in as an admin on the preview, open /settings/traffic/scrapes and press Start a capture. The page shows four headed sections and no card.
🤖 Generated with Claude Code
Scrapes is now four settings-block sections with h2s, no card( wrappers, tables keep table-scroll/caption/data-dense, empty states are one sentence, POST routes and limits unchanged, output escaped, design note and a new test (checks four headings, no card, escaping, forms) added. The preview redirects (303) unauthenticated, as expected for a settings page; I judged the rendering from the diff and test. No README change, no new dependency.
/settings/traffic/scrapes(scrapesPageinsrc/web/pages/scrapes.ts) now uses headings over rows, the same layout as Settings › Accounts and Telemetry. It has no cards any more. Only the display changed: grouping, counting, network lookup, POST routes, the form limits and the escaping all work as before.<section class="settings-block">with an<h2>. Thecard(wrappers around the prefix table, the groups table and the networks form are gone. All three tables keep their.table-scrollbox,sr-onlycaption anddata-dense.readsCardputs each repository under an<h3>with its counts, the "looks like a secret" list, the most-read paths and the commits read.captureCardplaces the capture's text and its Start or Stop form straight in its section.groupDetailis now an<h3 id="group">inside the One actor section, so the#grouplink still lands on it, with the export button and the requests table beneath it.empty()box is gone.test/scrapes-blocks.test.tschecks the page with nothing recorded, then with one capture group and one network on file. It finds the four sections and no.card, and checks that the Stop and networks forms post to the same routes. It also checks that a user agent and a network name full of HTML come out escaped. It fails on main.docs/design/areas/settings.mdrecords the shape. No new component class.I did not touch
traffic.tsorsources.ts, which belong to #9775.Checks:
bun scripts/gate.ts,bun x tsc --noEmitandbun scripts/design-lint.tsare clean.test/scrape-evidence.test.ts,test/server-timing-sweep.test.ts, the new test and thetest/design*tests pass (50 tests), with the existing tests unchanged.scripts/fast.tsnamed 1,227 test files for this diff, about 106 minutes, so I ran only the tests that reach this page and left the full suite to the forge's check.To try it: sign in as an admin on the preview, open
/settings/traffic/scrapesand start a capture. To see a group, run the second test intest/scrapes-blocks.test.ts, which records six requests from one bot across six addresses.🤖 Generated with Claude Code
Closes #9807