A/B experiment: close button vs Skip for now button on sign-in dialog
Add experiment 'chatSetupDialogCloseButton' using IWorkbenchAssignmentService:
- Treatment (true): show standard X close button, hide Skip for now button
- Control (default): show Skip for now button, hide X close button
Both variants produce the same 'failedMaybeLater' telemetry on dismiss.
Test locally via: experiments.override.chatSetupDialogCloseButton: true
* perf: defer expensive repo diff capture to export time
Split repo info capture into two paths:
1. On first chat message (lightweight, no file I/O):
- captureRepoMetadata() reads only from already-loaded SCM
provider observables (branch name, commit hash, remote refs)
- Synchronous, zero file I/O, no diff computation
- Stores ~200 bytes of metadata per session
2. At export time only (on-demand, user-initiated):
- captureRepoInfo() performs full file reads and diff generation
- Only runs when user explicitly triggers 'Export Chat as Zip'
Additional changes:
- Remove repoData from toJSON() serialization. Repo state does not
need to survive VS Code restarts, only matters for current session
export. This eliminates serialization overhead in saveState().
- Remove trimOldSessionDiffs(). No longer needed since diffs are
never stored on the model.
- Remove IFileService dependency from ChatRepoInfoContribution
- Export action no longer gated on chat.repoInfo.enabled for diff
capture (always captures at export time since it is user-initiated)
Addresses feedback from #286812 about per-message overhead.
Fixes#294863 root cause (expensive file I/O on every message).
* fix: address PR review feedback
- Fix undefined === undefined falsely reporting 'synced' by requiring
both localHeadCommit and remoteHeadCommit to be defined
- Use 'local-git' / 'local-only' when no remote refs are available
instead of always claiming 'remote-git'
- Update setting description to reflect metadata-only capture
- Chat session loads, katex has not yet been loaded
- ListView really wants to render from the top down so it checks the heights of some elements at the top
- Katex not loaded, so we don't render markdown at all
- Measured element height is very wrong
- But we initialize scroll all the way down so those elements don't get a chance to fix their height
- When scrolling up, we render an element and it is resized massively from the previous estimate, content shifts down
* queuing: interrupt when messages are sent during confirmation
Got this feedback from a few people that steering/queuing during a tool
call confirmation should just cancel the confirmation and send the
message. This does that.
Also cleans up the opt-in setting I had added initially that was only
partially working, now that the feature has shipped.
* comments
Fixes an issue where stopping a chat session would fail to cancel the
request when a message was queued. The problem occurred because queued
messages could replace the pending request before the finally block
attempted to delete it.
The fix stores a reference to the CancellableRequest and checks that it
matches before deleting, preventing race conditions between queued messages
and request cancellation.
Fixes https://github.com/microsoft/vscode/issues/295022
(Commit message generated by Copilot)
* Support multi-root external terminal selection
* Dont use any
* Can I get rid of unknown?
* unknown to any
* edit tests
* try fix test
* better types?
* Use service directly