style(find-widget): unify border-radius with CSS variable for consistency
style(inline-chat-gutter-menu): update border-radius to use CSS variable for consistency
* customizations: allow transient selection of the folder to explore customizations against
* address PR review comments
- Fix no-op setOverrideProjectRoot to accept URI parameter
- Fix JSDoc/comments to be environment-agnostic (session or workspace)
- Account for folder picker footer height in sidebar layout
- Use ILabelService for URI tooltip instead of fsPath
- Wrap each rendered markdown table in a DomScrollableElement so it
scrolls horizontally with the VS Code custom scrollbar instead of
the native one.
- Apply per-column min-width (in ch units, capped at 3ch) based on
max text-content length, so short values like "001" aren't squeezed
to a single character wide.
- Allow table headers to wrap at word boundaries (white-space: normal)
rather than staying on a single line.
- Extract the wrapping logic into chatMarkdownTableScrolling.ts with
unit tests in chatMarkdownTableScrolling.test.ts.
Fixes#265062
(Written by Copilot)
* Add CanCreateForSplit capability for singleton editors
Introduce a new EditorInputCapabilities.CanCreateForSplit capability
and EditorInput.createForSplit() method that allow singleton editors
to participate in split operations by providing a new editor input.
Apply this capability to ChatEditorInput so that splitting a chat
editor opens a fresh chat session in the new group.
* Update src/vs/workbench/common/editor/editorInput.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/vs/workbench/common/editor/editorInput.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* unwind
* unwind
* change
* .
* rename
* .
* .
* .
* .
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>
* chore: ralph loop checkpoint - 2026-02-17 12:48
* fix shell script
* Inline compile stage into platform jobs
Remove the standalone Compile stage from the ADO pipeline. Each
platform job (Windows, Linux, macOS, Alpine, Web) now compiles
TypeScript itself instead of downloading a shared Compilation artifact.
- Add VSCODE_RUN_CHECKS parameter to Linux jobs for hygiene/lint/CG
- Add VSCODE_RUN_COMPILE_EXTRAS parameter to macOS jobs for telemetry
extraction and sourcemap upload
- Remove VSCODE_COMPILE_ONLY parameter entirely
- Delete product-compile.yml (no longer referenced)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Always run telemetry extraction on macOS builds
The macOS Universal app merge requires both x64 and arm64 builds to have
identical file sets. Telemetry extraction was only running on arm64 (via
VSCODE_RUN_COMPILE_EXTRAS), causing the universal merge to fail due to
missing telemetry-core.json and telemetry-extensions.json in the x64 build.
Move telemetry extraction outside the VSCODE_RUN_COMPILE_EXTRAS gate so
it runs on all macOS builds. Sourcemap upload remains gated.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Run telemetry extraction on all client builds
All client builds (Linux, Windows, macOS) need telemetry-core.json and
telemetry-extensions.json. Previously only macOS arm64 ran extract-telemetry.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Only run telemetry extraction on Linux x64 (client build)
Linux arm64 and armhf are server-only builds, no need for telemetry files.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove .ralph scaffolding files
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix telemetry extraction on Windows with native PowerShell
The bash extract-telemetry.sh script fails on Windows because the Unix
bin shim gets interpreted as Node.js code. Use a native PowerShell
implementation that calls the extractor JS entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Handle missing telemetry files gracefully on Windows
The telemetry extractor may skip emitting declarations-resolved.json
when no events are found. Handle this case with a warning instead of
failing the build.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Use deterministic build date from git commit timestamp
When each platform compiles independently, the build date embedded in
cli.js (via INSERT_PRODUCT_CONFIGURATION) differs between machines
because each uses new Date().toISOString(). This causes the macOS
Universal app merge to fail since cli.js SHA differs between x64/arm64.
Fix: use the git commit date (git log -1 --format=%cI HEAD) instead
of the current wall-clock time. This ensures all independent builds
on different machines produce identical timestamps.
Updated in:
- build/lib/date.ts: writeISODate() uses git commit date
- build/next/index.ts: bundle(), transpile, and readISODate fallback
all use git commit date
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Remove redundant extensions-ci task from CI pipelines
core-ci (esbuild path) already includes cleanExtensionsBuildTask,
compileNonNativeExtensionsBuildTask, and compileExtensionMediaBuildTask.
Running extensions-ci in parallel caused a race condition where
core-ci's rimraf of .build/extensions clashed with extensions-ci
writing to the same directory.
Also removes dead code:
- extensions-ci and extensions-ci-pr task definitions (fully subsumed)
- core-ci-old task (useEsbuildTranspile is always true)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* remove VSCODE_RUN_COMPILE_EXTRAS
* address PR feedback regarding code duplication of `getGitCommitDate()` function by exporting a single helper function from `build/lib/date.ts` and importing it in `build/next/index.ts` to ensure consistent behavior and improve code maintainability.
* update readISODate function to return git commit date instead of current date
* add telemetry sorting script and integrate into build process for consistent output
* refactor telemetry extraction process: replace shell script with TypeScript implementation
* update skill
* update telemetry-extractor dependency to version 1.19.0
* fix build
* fix more duplicate telemetry definition issues
* cleanup
* refactor: consolidate validation checks into quality checks and remove obsolete tasks
* bust the cache
* undo cache bust
* fix expression
* fix
* fix: update Azure storage account name in quality checks
* fix: initialize stages set with 'Quality'
* fix: add VSCODE_BUILD_TYPE parameter with options for Product and CI builds
* fix: update Azure Pipeline CLI to use parameters instead of variables for queueing builds
* fix: update VSCODE_BUILD_TYPE parameter values for clarity
* fix: update default value for VSCODE_BUILD_TYPE parameter to 'Product'
* leaner
* even leaner
* only npm ci in build
* 💄
* run entire npm ci
* fix
* fix
* fix it
* Inline CompileCLI into platform stages
- Remove centralized CompileCLI stage
- Move CLI jobs into Windows, Linux, macOS stages as independent jobs
- CLI jobs now compile, publish unsigned mid-job, sign, and publish signed
- Platform compile jobs use deemon + waitForArtifacts for async CLI download
- Delete separate CLI sign jobs (now merged into CLI compile jobs)
- Remove CompileCLI from publish.ts stage tracking
* fix: macOS CLI signing - use proper directory structure for ESRP
* fix: add BUILDS_API_URL to Windows and Linux job templates
* fix: label Linux CLI jobs clearly
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: João Moreno <22350+joaomoreno@users.noreply.github.com>
Per review feedback: Outdated servers should use the same per-server
startup grace period as Unknown servers. A prior fast startup does not
guarantee a fast restart, so both states now race startup against the
5s timeout before returning results.
* Fix potential listener leak in document semantic tokens
Hoist provider onDidChange and registry onDidChange subscriptions from
each ModelSemanticColoring instance into the singleton
DocumentSemanticTokensFeature.
Previously, every ModelSemanticColoring subscribed individually to both
the global LanguageFeatureRegistry.onDidChange and each provider's
onDidChange event, resulting in O(N*M) listeners (N models × M
providers). In scenarios like chat editing where many models are created
rapidly, these listeners accumulated and triggered leak detection.
Now the singleton subscribes once to the registry change and once per
provider (via allNoModel()), then fans out notifications to watchers.
Each watcher checks provider relevance via _provider.all(model).includes()
before acting on the event.
Also replaces manual IDisposable[] management with a DisposableStore for
proper lifecycle tracking.
* Review feedback
* fix#288515: wrong current index in find widget if matches > 1000
When there are more than 1000 matches, decorations use
_FIND_MATCH_NO_OVERVIEW_DECORATION instead of _FIND_MATCH_DECORATION.
getCurrentMatchesPosition did not check for this decoration type,
causing it to return 0 and fall through to a fallback with an
off-by-one error.
* Address review feedback
* Fix unused error
* editor: add 'foldedLine' unit to cursorMove command
Add a new 'foldedLine' movement unit to the `cursorMove` command that moves
by model lines while treating each folded region as a single step.
When moving down/up by 'wrappedLine' the cursor skips folds naturally because
it operates in view space. When moving by 'line' it uses model coordinates and
can land inside a fold, causing VS Code to auto-unfold it. The new 'foldedLine'
unit moves in model space but queries `viewModel.getHiddenAreas()` to detect
folds and jump to the first visible line past each one, so folds are skipped
without being opened.
This is the semantics needed by vim's j/k motions (VSCodeVim/Vim#1004):
each fold counts as exactly one step, matching how real vim treats folds.
Fixes: https://github.com/VSCodeVim/Vim/issues/1004
* editor: simplify foldedLine movement using fold-walk algorithm
Replace the step-by-step simulation (O(count × folds)) with a single
pass over sorted hidden areas (O(folds in path)). Compute a naive
target, then extend it for each fold encountered, stopping before any
fold that reaches the document boundary.
Also extracts _targetFoldedDown/_targetFoldedUp helpers to eliminate
the duplicated loop structure between the two directions.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* editor: fix foldedLine count movement at fold boundaries
---------
Co-authored-by: Jai <jai@jai.one>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Alexandru Dima <alexdima@microsoft.com>
Copilot-authored message: Fix inline reference at block start rendering on its own line
When an inlineReference is the first item in a chat response (no preceding
markdown), it creates a standalone markdownContent with default MarkdownString
properties. The subsequent markdown from the model has different properties
(e.g. isTrusted: true), causing canMergeMarkdownStrings to return false. This
leaves them as separate content parts, rendering the inline reference link on
its own line.
Fix by detecting when the previous item consists solely of synthesized
content-ref links (via isContentRefOnly check) and merging them by prepending
the reference text while adopting the incoming markdown's properties.
Fixes#278191