Skip to content

feat(extension): stop offering legacy visualstudio.com hosts - #212

Open
Reefact wants to merge 11 commits into
mainfrom
claude/eloquent-allen-ehbjw9
Open

Reefact wants to merge 11 commits into
mainfrom
claude/eloquent-allen-ehbjw9

Conversation

@Reefact

@Reefact Reefact commented Nov 13, 2026 •

Copy link
Copy Markdown
Owner

Why

The toolkit supports the current form of each platform — GitHub, Azure DevOps, GitLab — and not the forms a platform itself has replaced (owner's decision, 2026-11-13). Microsoft presents {organisation}.visualstudio.com as the legacy form of dev.azure.com, which an organisation switches to from its settings; the format is still served, with no announced retirement date.

The Azure DevOps adapter already recognises no pull request on those hosts (DEC0008, real-pages.test.ts §B.1). Yet the settings page invited people to add such a host, the specification listed it as a target, and the user guide explained how to add it — a host on which the extension then does nothing.

What changes

  • Settings page (options.html, strings.ts, both languages): the help text of Other domains and the Azure DevOps platform choice no longer name visualstudio.com. The help sentence no longer wraps a <code>; its two catalogue keys stay, and options-i18n.test.ts still checks that both are translated.
  • Specification, annex B (DEC0004): §B.1 says the legacy URLs are out of scope and why; §B.4 no longer lists them among the hosts to grant.
  • User guide (platforms, getting-started, both languages): the legacy URLs are not supported and will not be; Azure DevOps Server is marked as not supported yet, which is what the adapter does today (DEC0008).

Not in this pull request

azdoDescriptor.inferHost still maps *.visualstudio.com to Azure DevOps, so typing such a host in the settings page pre-selects Azure DevOps. That is platform code: it changes in a pull request of its own (DEC0005), with options-hosts.test.ts, platform-registry.test.ts and extra-hosts.test.ts, which assert the current inference.

How it was checked

  • npm test (2014 tests), npm run build, typecheck:tests, check:ca-matrix, check:invisible pass.
  • check:pr-scope: shared code only.
  • Every relative link and anchor of the user guide resolves.

Decisions (IDR check)

New decision: only the current form of each platform is supported. It goes beyond DEC0008, which excluded these hosts for want of captures, a provisional reason; this one excludes them for good. The owner stated it; an IDR (DEC0015) can be drafted on request.

The branch history carries the commits of #211 followed by a merge of main: #211 was squash-merged, and the branch could not be reset by force. The diff against main holds only this change.

…re listing

The verifier was removed from the product (DEC0010), but three documents
still described it: the privacy policy carried a whole section on an
optional self-hosted server component, the store listing drafts promised
merge enforcement through it, and the setup guides announced it as what
comes next.

- PRIVACY.md: the scope paragraph says the extension is the whole product,
  the server section is gone, in French and in English
- PRIVACY.md: the synced preferences also include the label button order,
  and the platforms named are GitHub, Azure DevOps and GitLab
- store listing drafts: the organisation paragraph describes the enterprise
  policy, and says the extension does not control merging
- setup guides: the closing line points at the user guide

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
The README described the repository to its maintainers: layout, CI, phases
of the specification. Nothing told someone who installs the extension what
it does, how to allow a platform, what a diagnostic means or which
shortcuts exist; the list of direct shortcuts lived only in the code.

- README.md, README-fr.md: the problem, the solution with images, install,
  platforms, what the extension is and is not, and a documentation table
- docs/guide/: twelve pages, each in English and French — getting started,
  writing comments, keyboard input, labels, diagnostics, configuration,
  modes and adoption, organisation deployment, platforms, settings page,
  FAQ, review skills
- docs/README-en.md, docs/README-fr.md: the documentation index
- docs/development-en.md: what the README held for maintainers (layout,
  commands, CI, status against the phases), unchanged in substance
- CONTRIBUTING.md: the repository's rules in short, with their IDRs
- docs/images/, scripts/doc-screenshots.mjs, npm run docs:screenshots: the
  toolbar, the pill and the badges rendered by the shipped components in
  Chromium, on a test page; the captions say they are not screenshots of
  github.com

The macOS limit of the Alt shortcuts is documented as not measured: the
code compares KeyboardEvent.key, which Option+letter changes on a Mac.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
A copy-editing pass for clarity: calques from French replaced ("those who
carry the pull request", "question the browser", "restitution"), vague
phrases made concrete, jargon such as "floor" defined where first used,
and "falls back on" made "falls back to" throughout.

Five inconsistencies the pass found, fixed against the code:

- labels: the "Use it to" column of the added labels now quotes the
  button tooltips of the catalogue, since the guide says hovering a button
  shows them; what they leave out is already in the prose below the table
- platforms: GitLab's send guard is "Not yet", as in the README; it
  follows from the configuration not being read there yet
- writing comments: a comment with more than one session marker gets
  W-SESSION-MULTIPLE, as the diagnostics page says
- settings: the language follows the configuration's language key, from
  the repository file or the organisation's; the button order applies
  within each group, status labels included
- modes: the rollback order is justified by what actually overrides what

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
A copy-editing pass for clarity and idiom: calques from English replaced
("une réponse pendant la frappe", "ceux qui portent la PR", "de rien
d'installé"), ambiguous pronouns made explicit, active voice where the
actor matters, "autoriser" used throughout for granting a domain, and
"plancher" defined where first used. In the configuration page, "lower
level" read both ways; levels are now "more or less prioritaire".

The same five fixes as the English pages (button tooltips of the added
labels, GitLab's send guard "Pas encore", W-SESSION-MULTIPLE, language
and button order in the settings page, the rollback order), plus:

- page titles match the links that point at them: "Prise en main",
  "Rédiger des commentaires de revue", "Skills de revue pour les
  agents IA"
- configuration, both languages: a carrying decoration gets a button in
  the decoration selector, not "a segment"; an unreadable file falls
  back to the next level, named

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
DEC0008 limits the Azure DevOps adapter to dev.azure.com: it was built on
captured pages of that host, and {org}.visualstudio.com and Azure DevOps
Server were never captured. The README and the platforms page presented
both as supported without reserve.

- README, both languages: Azure DevOps Services on dev.azure.com
- platforms page, both languages: the two hosts are marked not measured,
  like GitLab Self-Managed, and the Azure DevOps section cites DEC0008

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
- diagnostics, both languages: E- and W- give the default severity; the
  effective severity, which a repository or organisation can change,
  decides compliance and blocking
- modes and adoption, both languages: the recommended path keeps the
  prerequisites of §14 before a pilot moves to enforce — a written rollback
  procedure with a named executor, and computable indicators, which P4 does
  not provide yet; until then the pilot stays in assist
- PRIVACY.md: the English row counts three synced preferences, as its list
  and the French row do

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
The toolkit supports the current form of each platform, not the forms the
platform itself replaced (owner's decision, 2026-11-13). Microsoft presents
{organisation}.visualstudio.com as the legacy form of dev.azure.com, and
the Azure DevOps adapter already recognises no page there (DEC0008); yet
the settings page invited people to add such a host, and the user guide
explained how.

- settings page: the help text of Other domains and the Azure DevOps
  platform choice no longer name visualstudio.com, in both languages
- specification, annex B: visualstudio.com is out of scope (§B.1), and
  no longer listed among the hosts to grant (§B.4)
- user guide, both languages: the platforms page says those URLs are not
  supported and will not be, and that Azure DevOps Server is not
  supported yet; the getting-started list no longer names either

The adapter's inferHost still maps *.visualstudio.com to Azure DevOps; it
is platform code and changes in a pull request of its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-13T16:05:10.705402Z f3ddf00 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

When a step's card fits neither below its target nor above it within the
window, it is placed above, clamped at Math.max(0, …). Those coordinates
are absolute, so the clamp held the card at the top of the document, not
of the window: once the page had scrolled, the card could start above the
visible edge. On the Added labels step it sat 1 px above it, and
check:options-tour failed ("hors fenêtre : Added labels"), on main as on
this branch.

The clamp is now the window's scroll offset. check:options-tour passes
15/15 with the fix and fails without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu

Reefact commented Nov 13, 2026

Copy link
Copy Markdown
Owner Author

note: the red "Spike P1' dans Chromium" job was not caused by this change; fixed in a2b581a

check:options-tour failed with "hors fenêtre : Added labels". It fails identically with options.html and strings.ts taken from main, so the defect predates this pull request.

Root cause, measured: when a tour card fits neither below its target nor above it within the window, tour.ts placed it above with Math.max(0, …). Those coordinates are absolute, so the clamp is the top of the document, not of the window; with the page scrolled to 1277 px, the Added labels card started 1 px above the visible edge. The clamp is now view.scrollY.

check:options-tour passes 15/15 with the fix and fails without it; options-tour.test.ts and the extension suite pass. It is shared code, like the rest of this pull request (check:pr-scope: shared code only).


Generated by Claude Code

check:options-tour named the step whose card left the window, not by how
much or on which side. It passes locally and fails in CI on the Added
labels step, so the failure now prints the card's top and bottom, the
viewport height and the scroll offset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
The guided tour decides whether a card fits below its target from the
card's height, read with offsetHeight, which rounds to a whole pixel. In
CI the Added labels card is 226.3 px tall, was taken to fit below in 226,
and its bottom sat 0.2 px under the window (check:options-tour, now that
it prints the geometry: bottom 720.2 for a 720 px viewport). The height is
now read from getBoundingClientRect(), fractions included.

The CI Chromium differs from the local one, so this failure does not
reproduce locally; the next CI run is the check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019k6GsTjvs6iTePictnANBu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants