{
"Pages": {
"analytics": {
"dashboard": {
"title": "Analytics"
} } } }
{
"screenName": "NetworkSettingsPage",
"route": "/network/settings",
"id_leaf_index": { "dhcpToggle_Label": [ {
"full_id": "network:Pages.network.settings.dhcp.label",
"category": "page_child",
"catalog_verified": true
} ] }
}
{
"screenshot_id": "s017_network_firewall_rules_ConfirmDialog",
"components": ["src/components/shared/ConfirmDialog.tsx"],
"steps": [
{ "navigate": "/network/firewall/rules" },
{ "click": "t:rules.add_button" },
{ "click": "setOpen" }
],
"expected_strings": ["Close", "Confirm", "Cancel"],
"photo": "s017_..._ConfirmDialog.png"
}
We paid roughly the same to cover every component and every route — but the strings are concentrated in a few screens. The long tail cost the same and bought almost nothing.
Reaching a component often needs a login state, particular hardware, or the device in a particular status. None of that is written in the code, so neither a static pass nor the model can discover it — and the real codebase is all edge cases.
the assignment was off — reassign it to the shot it actually appears in
the traversal never went there — extend coverage to reach it
it only renders under a specific state — move it to its own bucket
meta: id: cct-localization-screenshot-contract version: v1 locale: en source: manual-source-derived scope: current-manifest-known-keys translationFile: apps/renderer/public/locales/en/translation.json notes: - deterministic source of truth for key-to-screenshot ownership - compiled from keys listed under screenshots; rendered text is verification only - a translation key may appear in exactly one screenshot entry - every named manifest capture must appear in this contract
INTENDED_TO_COVER: reason: surfaces we still intend to cover — the flow, state setup, or ownership is incomplete buckets: REQUIRES_DEDICATED_STATE_FLOWS: reason: valid surfaces, but need state setup keys: [ NO_CHANGES_DETECTED, FILE_PATH, CONFIRM_DELETE_PROJECT_MESSAGE, ... ] REVIEW_AND_COMMAND_STATUS_BRANCH_FLOW_CANDIDATES: keys: [ CLOSE, IN_PROGRESS, TASK_DETAILS, UPGRADE_FIRMWARE, 'YES', 'NO', ... ] CLIENT_SETTINGS_AND_USER_PRESENCE_SURFACES: keys: [ CLIENT_SETTINGS_FIREWALL_RULE_CREATED, ... ] DEVICE_STATUS_AND_PREVIEW_STATES: ...
~1,000 strings go out for translation. Each one ships with its own screenshot, with that string circled.
If the same string appears twice on one screen we circle one of them. This is not a perfection exercise, and the case is rare.
Nothing here is camera specific. It needs a reachable web UI, a resource file, and an environment we can prepare — which is most of what we ship.
We stopped trying to find every screen. We started accounting for every string. That is what made it cheap enough to repeat.