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

Settings › Traffic › Scrapes speaks the home page's language #9823

Merged opened this

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

Merged

`/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

opened this

/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>. The card( wrappers around the prefix table, the groups table and the networks form are gone. All three tables keep their .table-scroll box, sr-only caption and data-dense.
  • Rows instead of cards: readsCard puts each repository under an <h3> with its counts, the "looks like a secret" list, the most-read paths and the commits read. captureCard places the capture's text and its Start or Stop form straight in its section. groupDetail is now an <h3 id="group"> inside the One actor section, so the #group link 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.ts checks 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.md records 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

Closes #9807

commented

/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>. The card( wrappers around the prefix table, the groups table and the networks form are gone. All three tables keep their .table-scroll box, sr-only caption and data-dense.
  • Rows instead of cards: readsCard puts each repository under an <h3> with its counts, the "looks like a secret" list, the most-read paths and the commits read. captureCard places the capture's text and its Start or Stop form straight in its section. groupDetail is now an <h3 id="group"> inside the One actor section, so the #group link 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.ts checks 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.md records 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

commented

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>. The card( wrappers around the prefix table, the groups table and the networks form are gone. All three tables keep their .table-scroll box, sr-only caption and data-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.ts renders 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.md records 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

Approved

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.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs