Skip to content

Fix Update tooltip keyboard navigation - #330176

Merged
Dmitriy Vasyura (dmitrivMS) merged 2 commits into
mainfrom
dev/dmitriv/update-widget-focus
Aug 11, 2026
Merged

Dmitriy Vasyura (dmitrivMS) merged 2 commits into
mainfrom
dev/dmitriv/update-widget-focus

Conversation

@dmitrivMS

@dmitrivMS Dmitriy Vasyura (dmitrivMS) commented Aug 11, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #330046

This keeps normal title-bar Tab navigation unchanged and makes the existing Show or Focus Hover command (Ctrl+K Ctrl+I / Cmd+K Cmd+I) focus the Update tooltip when Update is focused. Once focused, Tab traverses the tooltip controls and Escape restores focus to Update.

The Release Notes action now uses the secondary-button border token so its passive state is not visually confused with keyboard focus.

Validation:

  • Targeted browser unit test passes
  • ESLint and stylelint pass for changed files
  • Client transpilation and type checking pass
  • Live Code OSS verification covers passive focus, forward Tab navigation, tooltip control traversal, and Escape focus restoration

Copilot AI balanced review requested due to automatic review settings August 11, 2026 06:00
@dmitrivMS Dmitriy Vasyura (dmitrivMS) added bug Issue identified by VS Code Team member as probable bug install-update VS Code installation and upgrade system issues accessibility Keyboard, mouse, ARIA, vision, screen readers (non-specific) issues labels Aug 11, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds keyboard navigation to the Update title-bar tooltip.

Changes:

  • Opens and focuses tooltip actions with Tab or Down Arrow.
  • Enables focus trapping for keyboard-opened tooltips.
  • Adds browser tests for forward and reverse navigation.
Show a summary per file
File Description
updateTitleBarEntry.ts Handles keyboard navigation and focus trapping.
updateTooltip.ts Exposes first-visible-action focusing.
updateTitleBarEntry.test.ts Tests Tab, Down Arrow, and Shift+Tab.

Review details

Tip

Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Suppressed comments (1)

src/vs/workbench/contrib/update/browser/updateTitleBarEntry.ts:308

  • clear() disposes the current hover, and HoverWidget.dispose() invokes this entry's target dispose callback. That callback treats the replacement as a user dismissal; for Disabled and error Idle states it clears UPDATE_TITLE_BAR_CONTEXT, so the Update entry is removed while this method is trying to reopen/focus it. Tab/Down therefore fails whenever one of those automatically shown tooltips is active. Suppress the dismissal callback during this programmatic replacement (and cover it with a non-no-op dismissal callback in the test).
		this.visibleTooltip.clear();
  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread src/vs/workbench/contrib/update/browser/updateTitleBarEntry.ts
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) force-pushed the dev/dmitriv/update-widget-focus branch from bff286d to d294e35 Compare August 11, 2026 06:19
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) marked this pull request as draft August 11, 2026 06:20
auto-merge was automatically disabled August 11, 2026 06:20

Pull request was converted to draft

@dmitrivMS
Dmitriy Vasyura (dmitrivMS) marked this pull request as ready for review August 11, 2026 06:23
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) marked this pull request as draft August 11, 2026 06:30
auto-merge was automatically disabled August 11, 2026 06:30

Pull request was converted to draft

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) force-pushed the dev/dmitriv/update-widget-focus branch from 0552f87 to 5c0d2f6 Compare August 11, 2026 08:26
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) marked this pull request as ready for review August 11, 2026 08:26
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) marked this pull request as draft August 11, 2026 08:27
auto-merge was automatically disabled August 11, 2026 08:27

Pull request was converted to draft

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) marked this pull request as ready for review August 11, 2026 08:40
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) merged commit 2699aa6 into main Aug 11, 2026
29 checks passed
@dmitrivMS
Dmitriy Vasyura (dmitrivMS) deleted the dev/dmitriv/update-widget-focus branch August 11, 2026 08:59
@vs-code-engineering vs-code-engineering Bot added this to the 1.134.0 milestone Aug 11, 2026
Abdullah Atrash (abdullahatrash) added a commit to abdullahatrash/flowleap-agent-v2 that referenced this pull request Aug 21, 2026
…ures (PRD 0013) (#282)

Executes docs/prd/0013-upstream-port-1.127-to-1.135.md end to end: 183 commits cherry-picking/adapting the fork-relevant subset of the 3,672-commit upstream delta (microsoft/vscode b0b6062..07c20d9, 1.127.0→1.135.0), in four waves.

## Waves (issues #249–#280)
- **Wave 1 — security (#249–#255):** upstream security rollup microsoft#330308 (env-var hardening incl. DYLD_INSERT_LIBRARIES, URL-handler trust ordering, domain-matcher bypass + fail-open fix), loopback OAuth XSS, MSRC web-worker iframe parentOrigin, trusted-domain backslash bypass, stale-secrets purge, chat-import path traversal, fetch-tool approval bypasses, skill-name prompt-injection escaping, Electron 42.3.0→42.8.1 (six Chromium security trains, download checksum-verified), markdown-it 12→14.
- **Wave 2 — live product bugs (#256–#261):** cache_control sentinel no longer leaked to non-aware BYOK providers (vendor allow-list incl. flowleap-trial, fail-closed), session cap 50→400, darwin updater late-error guard, disposed-frame crash guards, duplicate file-ops from scoped editor services, sessions quartet (Changes spinner, picker close, grouping leak, archived-terminal disposal), worktree branch/path collision race (our code, regression-proven tests).
- **Wave 3 — mechanical batch (#264–#269):** ~95 upstream commits: terminal/workbench/chat/base leak sweeps, disposal crash guards, base correctness primitives with tests, streaming-markdown repair, :has() CSS perf fix, ListView/toolbar batching, MCP robustness + plugin-marketplace TTL refresh, gallery hardening.
- **Wave 4 — UX features (#270–#280):** chat Ctrl+F find widget, update-service rewrite (update.mode live, metered deferral; ADR-0008 invariants verified), model-selection robustness (fixes live Trial-provider remembered-model loss), sessions QoL (rename/reopen/middle-click/mouse-nav/OS notifications), turn timestamps, token-stats consumer, PromptsStorage.builtIn seam (45 bundled skills verified at runtime), clipboard architecture (rich HTML + Markdown copy), response disclosure + thinking/streaming UX, save-dirty/confirm-discard/image+vision fixes, go-to-symbol, scroll persistence, cache-break hint, sticky scroll.

## Validation
- Full unit suite at tip: **21,811 passing / 0 failing** (389 pending); valid-layers-check, core + extension typechecks clean.
- Rebased onto latest main (zero conflicts, zero file overlap with the base move).
- Electron 42.8.1 download validates against ported checksums; smoke-tested live (find widget, updater disabled-in-dev invariant, gallery 404 grace).
- Known flake: McpStdioStateHandler stdin test can fail under full-suite machine load; passes deterministically in isolation.

## Notes for reviewers
- Deliberate skips (Modern UI, single-pane layout, dictation, Automations, asar re-pack, tsgo→tsc) are documented in the PRD with evidence per issue report.
- Follow-ups filed in issue reports: token-stats producer wiring, closed-chat state on session eviction, views.css :has() selector, microsoft#330176 tooltip keyboard nav.

Closes #249, closes #250, closes #251, closes #252, closes #253, closes #254, closes #255, closes #256, closes #257, closes #258, closes #259, closes #260, closes #261, closes #264, closes #265, closes #266, closes #267, closes #268, closes #269, closes #270, closes #271, closes #272, closes #273, closes #274, closes #275, closes #276, closes #277, closes #278, closes #279, closes #280

https://claude.ai/code/session_01RWkt8yKCBKXjTN7bdqaK9o
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accessibility Keyboard, mouse, ARIA, vision, screen readers (non-specific) issues bug Issue identified by VS Code Team member as probable bug install-update VS Code installation and upgrade system issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Unable to use keyboard to navigate to Release Notes button

4 participants

Sponsor
SponsoredKunjungi sekarang
Promo