IpDetailPanel had grown to ~750 lines holding three independent regions.
It is now the shell (metadata grid, inline Map / Country-traffic panels,
dialogs) with unchanged props, emits and multi-root template, rendering
IpAdvancedBlock (with ScoreDetailsPanel beside ScenarioFrictionPanel) and
IpAsnBlock, which relay view-usage / open-tool through it.
The inline /api/asn-history fetch becomes loadAsnHistoryInto in
utils/ip/asn-history.js, matching the other ASN loaders, now with tests.
Markup, copy, analytics and per-IP reset behaviour are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The advanced block gains two signed-in fields under the existing four:
Abuse activity (the reputation level) and Scenario friction, ten usage
scenarios each rated smooth / extra checks / may be restricted. The card
shows one tone dot per scenario instead of a score, so it can't be read
as a second quality score; the details list follows the score details'
layout and closes with a Persona Check invitation.
Green and yellow only (a new light-yellow ok-mild tone for extra checks),
no reasons shown, copy in every full locale.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop SAT (times out from outside Mexico) and Rapido (CORP same-origin
blocks the probe), plus the India members that are corporate or B2B
sites rather than ones people open day to day.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add a balanced set of Mexican government, telecom, banking, news, and shopping targets with localized list names and committed favicons.
Co-authored-by: OpenAI Codex <noreply@openai.com>
Links to the repository's GitHub /contribute page, which lists the open
good-first-issues above the contributing guide.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Closes the "Import a List" grid with a muted line linking to the open
country-list issue, so a visitor who finds their country missing sees
where to add it.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Multi-line release notes in the labels input split into one label per
line and an empty line aborted buildx. Labels now come from
docker/metadata-action with the version pinned to RELEASE_VERSION, and
version inputs reach the shell through env instead of interpolation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reposition the tool from AI services to well-known internet products:
the Note and the tool card copy change in every full locale, with a
v8.0.0 changelog entry. Perplexity and Docker read the incident.io
structure; Canva is a plain Statuspage row.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A `components.rename: { <id>: '<label>' }` selector relabels upstream rows
by component id after selection, so include / exclude keep matching the
upstream names. npm's "www.npmjs.com website" row now reads "Official
Website".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
npm's status page (status.npmjs.org) runs on Atlassian Statuspage and serves
both /api/v2/summary.json and /api/v2/incidents.json, so it is one provider
row plus its card in ServiceStatus.vue. Its six components are all real
services, so no exclude list is needed.
Refs #513
Express 5 exposes req.query through a getter that re-parses the URL on
every read, so the guards' in-place normalization was silently dropped:
?type=caa reached dns-resolver lowercase, ?asn=AS13335 reached the ASN
handlers unparsed, ?q=as13335 missed whois's AS<n> branch. Guards now pin
the parsed query as an own property before rewriting it, and a regression
block exercises them on a real Express request.
Fixes#521
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Four more ptest workers are live, so the Rule Test grid grows to
twelve cards and the README rule snippets cover them. The note above
the grid used to spell out the count in every locale; it now takes
the number from the card list, so the next change in count touches
one line. The CrossingTheWall rule keeps its eight-IP threshold.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Supabase's card showed one region and Cloudflare's read "major
outage" on every visit. Supabase and five other providers are
incident.io pages, whose Statuspage-compatible summary flattens
groups away and, for Supabase, returns one component of 189; those
providers now also read the native /proxy/<host> structure and list
its top-level groups, each rolled up to its worst visible child.
Cloudflare's top level is seven continents that go red whenever one
PoP is re-routed, so its card lists a fixed set of products instead
and takes its light from them, not from the page indicator.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
GA saw only category switches and resets, so a month of visits could
not say whether anyone read an item's details or ticked one. Four
labels on the existing SecurityChecklist event — ItemInfo and
CategoryIntro when a details panel or intro opens, Check and Ignore
when an item is ticked or set aside — read as a funnel after
ChangeList. Only the positive direction fires; closing and undoing
stay silent.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>