← Agentic linting overview

Settings & integrations

Model profiles, consent, device authorization, extensions and Git Sync.

Browse all areas

Films and evidence retain their recorded source revisions. Dated checks describe that snapshot; see the overview for the latest merge and audit status.

Extension dialogs: named viewport limits

Before: repeated compiled viewport limits. After: one named recipe with the same 90vw/85vh caps. Native dialog/content scrolling and clearly labelled stills/crops, with quiet original ambience; no layout improvement or install is claimed.
Download Extension dialogs for Slack · MP4, 77.88 s, 9.0 MB

Merged #18948 compares 044ec59e12/8e365d1fa30953c3 with checkout/app source 510f00ebc3/086cdbb325a81428; actual library build source remains 50b5f7e6a8. All 38 paired samples match. Six real frames cover desktop, phone and short-phone limits/scrolling/close/cancel; five-theme stills use one representative dialog. Existing 90vw/85vh caps remain unchanged.

API-discovered disposable skill/plugin content exercises the actual long-content owners; no extension was installed or executed. Benign QA paths and fixed test metadata remain visible in authentic UI pixels. The inherited embedded body-portal gap is unchanged. The source/build identities and limits, full comparison and 76 PNGs and four complete native clips retain the evidence; no layout improvement or live embedding claim.

Model profiles: existing theme aliases

Before: repeated compiled color recipes. After: five existing semantic aliases with the same theme owners. Genuine menu/editor and keyless chooser recordings, labelled stills and source detail crops, with quiet original ambience.
Download profile theme aliases for Slack · MP4, 48.64 s, 3.0 MB

Merged #18933 compares c561259930/dfd39a7c2f6aec0a with 2c4e9e6bd9/b38c7801a740f06a. All 23 paired computed states match; representative desktop stills cover five themes and actual 390 px phone views. Model Router empty/create/save/list/menu/hover/Edit/Cancel and keyless Add Models selection are observed. The QA-only router was never executed; no models were created or called.

The source revisions and limits, full comparison and 59 PNGs and four complete native recordings accompany the 48.64-second film. Known Solarized keyless-note contrast #18546 remains 2.58:1. Those aliases have compiled-contract coverage for Cloud/org, old-backend and bound-provider branches; embedded-host behavior is not live proof. No readability, embedded-portal, phone-layout or pixel-identity improvement is claimed.

Readable model saves

Before: nearly invisible model names and provider labels in the light palettes, with faint Saved/Failed results. After: readable semantic labels and feedback. Actual partial-save feedback is held briefly for readability; subsequent navigation frames are excluded. Clear Before/After captions and very quiet original ambience.
Download readable model saves · MP4, 0:10

Merged #18529 addresses issue #18516. The actual component evidence compares 8238b7af82 with b685ae43ae. Forty captures cover five themes, desktop and phone, a real partial save at the fifty-profile limit, and a generated matching provider connection. Changed normal text reaches at least 4.85:1. The save produces one actual 201 and two 409 responses; no real credential or model call is used.

Readable model saves before and after in five themes
Two reported raw-color findings and six additional fixed-white uses are migrated. Unchanged shared muted copy and general hover behavior are outside this normal-state claim.

The recording source preserves exact heads, measurements, frame selection, hashes and coverage limits. A silent eight-second GIF is also available. 35 existing focused tests and local lint/build checks pass; readiness and remote CI belong to the dated snapshot.

Device authorization: readable safety instructions and real errors

Before: faint safety text on a fixed dark warning tint, and faint real fetch-error text. After: readable theme warning and error roles. The Authorize label already passed at baseline; its change follows the theme pairing. Actual component recordings, short Before/After labels, and very quiet original ambience.
Download device authorization · MP4, 0:18

Merged #18528 addresses bug #18527 across device-flow and verification feedback. The film compares 8238b7af82 with bd30e4c7df. It uses the visibly invalid QA-NOT-REAL placeholder, actual local failure requests, and anonymous waiting/cancel checks. No issued code was authorized, no persistent key or backend was saved, and no model turn occurred during these auth captures.

Before and after device warning instructions and genuine failed-fetch errors in five themes, with actual contrast and explicit limits around Cloud success
One hundred forty captures cover five themes, desktop and phone, before and after. Light+ safety heading contrast rises from 1.66:1 to 5.03:1, and its instruction from 1.74:1 to 13.58:1. The scoped error text reaches at least 4.62:1; temporary manual-link pixels remain private.

The recording source preserves exact heads, measurements, source selection, hashes, and functional retry/cancel checks. Retry issued a real additional request, and invalid-code retry returned to review. The success icon has separate existing automated behavior and static palette proof; successful Cloud authorization was not exercised. Unchanged muted paragraphs, result titles and other buttons are outside the changed-text claim. A silent 16-second GIF is available.

Destructive buttons: readable Uninstall and theme-aware Delete

Before: fixed red Uninstall text becomes faint on hover. After: the shared ghost and filled destructive buttons use readable theme roles. The filled Delete label was already readable; its change follows the theme pairing. Real component recordings, short Before/After labels, and very quiet original ambience.
Download destructive buttons · MP4, 0:18

Merged #18513 addresses bug #18512 by replacing four raw-color classes in the shared BrandButton destructive variants. The film compares 8238b7af82 with f52f2f7b29. It shows only the generated test profile's delete confirmation and the disabled built-in demo app's footer, on an isolated Local Agent Server 1.55.1. No user data, account content, credential value, or model turn is included.

Before and after destructive ghost and filled buttons across five themes, with separate normal and hover text contrast
All five themes were inspected on desktop and phone, in normal and settled hover states: 80 captures. After the change, ghost text reaches at least 4.94:1 and filled text at least 4.89:1. The baseline ghost fails contrast on several surfaces; filled labels already pass.

The recording source preserves exact heads, crops, measurements, functional fixture checks, media hashes, and limits. Deleting the disposable inactive profile and uninstalling the disposable disabled demo app both passed through the real UI. A silent 16-second GIF is available. Other variants, Cloud/ACP execution, and DigitalOcean setup are outside this evidence.

Model profiles: readable names and details

Before: faint profile names and model details, with a fixed dark hover. After: readable theme roles for names, details, local icons, hover, and the switch-confirmation pill. Real generated Local profiles, short Before/After labels, and very quiet original ambience.
Download model profiles · MP4, 0:10

#18510 is merged and addresses bug #18509. The film compares main 3419bdb4f7 with proposed head e71b4499fa using real production Canvas and Agent Server 1.55.1. It shows only the model-message component with generated qa-alpha/qa-beta fixtures and a synthetic loopback endpoint. The key field shows presence only; no credential value or user conversation content is visible. The idle backend recorded no model turn or usage.

Before and after generated model profile messages in five themes, with measured name and diagnostic text contrast
In Light+, profile-name contrast rises from 1.26:1 to 16.48:1 and diagnostics from 1.48:1 to 8.45:1. Across five themes and both inspected viewport sizes, changed text reaches at least 4.99:1 and local icons at least 4.65:1, including settled pointer-hover states.

The recording source preserves exact heads, source crops, 40 settled captures, idle/no-model-run evidence, media hashes, and coverage limits. The Light+ hover comparison shows the fixed dark gray becoming a theme-aware hover. An eight-second inline GIF is also available.

The empty-profile hint was not manually reached because the normal setup gate disables the composer without a configured profile. The shared message title and outer chevron are unchanged. Phone checks use a phone-sized viewport; hover is pointer inspection, and no Cloud/ACP execution or model response is claimed.

Before: faint text explaining which backend keeps the consent preference. After: the existing theme contrast role makes that same line readable. Real Light+ consent form, clear Before/After labels, and very quiet original ambience.
Download consent scope · MP4, 0:10

Merged #18508 addresses bug #18507 with one color-class replacement on the backend-scope line. The film compares 0c7c2258a8 with dd4987f1d5 using real production Canvas and Agent Server 1.55.1. It shows only the consent form and a generated Local loopback backend; no model call or credential was needed. The recording source preserves the capture crops, 20 desktop/phone measurements, checks, and media hashes.

Before and after the consent backend-scope line in five themes, with measured text contrast
Light+ scope-text contrast rises from 2.33:1 to 14.85:1; Solarized Light rises from 2.11:1 to 12.25:1. The line reaches 12.25–16.29:1 across all five themes at desktop and phone widths.

Unchecking consent, confirming, and reloading still saves the backend preference as false and keeps the dialog closed. All inspected forms fit their viewport without horizontal page overflow. The change is limited to the backend-scope line; other description colors and Cloud/ACP workflows are outside this batch. An eight-second inline GIF is also available.

Git Sync feedback colors

The same failed repository check and sync cycle before and after in Light+. Semantic feedback tokens replace the raw red utilities; the copy and layout stay the same. The cards label the change and the music is very quiet.
Download this video · MP4, 1.9 MB

Recorded with control-openhands from production Canvas builds at baseline 3f5654ac and the recorded PR #18346 head bba12031, using local Agent Server 1.54.0, Light+, and a 1440 × 1000 viewport. Both runs passed the Git Sync check-failure and sync-failure paths with zero page errors; no credentials or LLM were used. The proposal is tracked in issue #18004. Recording provenance.

Proposals in this area

  1. Name extension-dialog viewport limits

    Merged · 26 October

    #18948, issue #18945, gives six frames one compiled 90vw/85vh recipe, replacing twelve classes/findings. Final head 510f00ebc3 adds a test with product bytes unchanged from 50b5f7e6a8; branch lint is 467 warnings/0 errors. Seven existing suites pass 101 tests; two additional build/viewport suites pass 16. Actual library output proves the scoped contract, not embedded body-portal behavior. Six-frame film and explicit scope limits are published and verified.

  2. Use existing model-profile theme aliases

    Merged · 25 October

    #18933, issue #18931, replaces 17 exact aliases across six files at 2c4e9e6bd9. All 90 existing tests, full lint and app/library builds pass; five full-class CSS pairs match exactly. Independent branch lint is 491 warnings, 0 errors. Known Solarized keyless-note contrast #18546 remains 2.58:1; the embedded AddModels body-portal scope gap is inherited. No readability or embedding fix is claimed. Four existing warnings remain outside this color-only batch. The matching film and explicit limits are published and verified.

  3. Make MCP feedback readable across themes

    Merged · 11 October

    #18270 moved error and success text to semantic feedback tokens, including darker text colors for the light palettes. Nine raw-color findings were removed. See the film at 0:04 and 0:14.

  4. Use the shared switch for secret selection

    Merged · 12 October

    #18278 replaces the fixed bright-green “Also save as secret” appearance with the shared toggle and theme tokens. The secret name and help control wrap together on phones, and keyboard focus stays visible. Six raw-color findings are removed by this proposal.

    The selected name's contrast changes from 1.70:1 to 12.55:1 in Light+, and from 1.56:1 to 10.40:1 in Solarized Light. The PR is now merged. See 0:24 and 0:34 in the film.

  5. Use semantic colors for Git Sync feedback

    Merged · 13 October

    #18346 replaces hard-coded status and error colors with semantic success, danger, and feedback tokens across the Git Sync activity row, repository-check alert, and persistent sync-error banner. The historical film above shows the same real failure path before and after at its recorded source heads. Text-medium stayed separate; this color batch continues issue #18004.

  6. Make consent backend scope readable

    Merged · 16 October

    #18508 addresses bug #18507 by replacing the scope line's fixed text-neutral-400 with text-contrast. Real desktop/phone checks cover all five themes, and unchecked consent still saves and survives reload. The film and comparison above preserve the exact proposed head dd4987f1d5. CI passed, all-hands-bot approved this head, and the PR merged on 16 October at 08:47 Stockholm time.

  7. Theme model profile feedback

    Merged · 16 October

    #18510 addresses bug #18509 by replacing ten raw-color findings in profile names, diagnostics, local icons, hover, borders, and the switch pill with semantic roles. API, state, and message text stay unchanged. Real desktop/phone component captures cover five themes and both normal and pointer-hover states; the evidence above records the actual scope and limits. Full CI passes at e71b4499fa: 9,097 tests passed across 837 files, app/library builds and package dry-run passed, and Windows app build passed. The bot approved the recorded head, and the PR merged on 16 October at 09:05 Stockholm time.

  8. Use readable destructive button roles

    Merged · 16 October

    #18513 addresses bug #18512 in the shared destructive BrandButton variants. Ghost labels use the feedback error text role; filled controls use paired theme colors. The real Before/After film and 80-capture comparison above keep the already-readable filled baseline distinct from the ghost contrast defect. Full CI passed at f52f2f7b29, and an initial all-hands-bot review was requested.

  9. Keep device authorization feedback readable

    Merged · 16 October

    #18528 addresses bug #18527 in local verification warnings, status icons, failed fetches, and waiting-link text. Its real warning/error film and 140-capture source above distinguish invalid local requests and anonymous cancellation from a successful account grant, which remains outside the live evidence.

  10. Readable model saves

    Merged · 16 October

    #18529 links issue #18516. The Before/After film and five-theme source above preserve actual component evidence and its limits. The film records b685ae43ae.