Files
vscode/product.json
T
Sandeep Somavarapu 717e853871 Add APPLICATION_SHARED storage scope for cross-app state sharing (#311317)
* shared application storage

* add tests

* fix tests

Co-authored-by: Copilot <copilot@github.com>

* add logging and address feedback

* Add application shared storage scope

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add fallback migration for APPLICATION_SHARED storage

VS Code: AbstractStorageService.get() falls back from
APPLICATION_SHARED to APPLICATION scope transparently,
enabling lazy per-key migration without a registry.

Agents App: SharedSQLiteStorageDatabase reads the host
(VS Code) app's application storage DB as a fallback
during getItems(), merging missing keys so shared data
is available even before VS Code runs with new scope code.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Move storage fallback into Storage class with auto-migration

Move the APPLICATION → APPLICATION_SHARED fallback logic from
AbstractStorageService into the base Storage class via the new
fallbackStorage property on IStorage. When a key is not found,
the fallback is checked and the value is automatically written
through to persist the migration.

This eliminates duplicated fallback code in get/getBoolean/
getNumber and ensures write-through happens for all access
patterns.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Make fallbackStorage an implementation detail of Storage

Remove fallbackStorage from IStorage interface. It is now a
property on the Storage class only, set directly by callers
that have access to the concrete type.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Pass fallback storage via ApplicationSharedStorageMain constructor

Wire up the application storage as fallback during doCreate()
instead of post-init. The ApplicationStorageMain is created
first and passed to ApplicationSharedStorageMain's constructor.
The fallback is set on the Storage instance when the shared
database is created, so it's ready by the time reads happen.

Removes setFallbackStorage() method and post-init wiring.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Remove fallbackDatabasePath - use fallbackStorage only

The in-memory fallbackStorage (application storage) makes the
DB-level fallback (reading VS Code's DB from disk) redundant.
Both VS Code and Agents App now use the same mechanism: the
Storage.fallbackStorage property that reads from application
storage and auto-migrates on hit.

Removes getHostUserDataPath, IProductService dependency, and
INativeEnvironmentService from StorageMainService.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add MigratingStorage with persisted migration tracking

Introduce MigratingStorage that migrates keys from a fallback
storage on first access. Migrated keys are tracked via a
persisted marker key (__$__migratedStorageMarker) in the DB
so deleted keys are never resurrected from the fallback.

- VS Code windows: MigratingStorage falls back to own
  APPLICATION storage for transparent key migration
- Sessions windows: MigratingStorage falls back to host
  (VS Code) application storage loaded via IPC
- Main process: ApplicationSharedStorageMain uses
  HostApplicationStorageMain for embedded app fallback
- sharedDataFolderName added to product configuration
- Workspace trust migration simplified (handled by
  MigratingStorage automatically)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix compilation

* minimise changes

* some fixes

Co-authored-by: Copilot <copilot@github.com>

* fixes

* fix

* delete migrated key

* fix removing migrated key

* update distro

* feedback

* Fix MigratingStorage: persist marker only on actual migration

Add key to migratedKeys immediately before checking fallback
to prevent redundant lookups. Only persist the MIGRATED_KEY
marker when a value was actually found and migrated, avoiding
unnecessary writes when the key doesn't exist in the fallback.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feedback

* fix tests

Co-authored-by: Copilot <copilot@github.com>

* fix application storage path

* fix compilation

---------

Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 14:17:18 +00:00

239 lines
7.5 KiB
JSON

{
"nameShort": "Code - OSS",
"nameLong": "Code - OSS",
"applicationName": "code-oss",
"dataFolderName": ".vscode-oss",
"sharedDataFolderName": ".vscode-oss-shared",
"win32MutexName": "vscodeoss",
"licenseName": "MIT",
"licenseUrl": "https://github.com/microsoft/vscode/blob/main/LICENSE.txt",
"serverLicenseUrl": "https://github.com/microsoft/vscode/blob/main/LICENSE.txt",
"serverGreeting": [],
"serverLicense": [],
"serverLicensePrompt": "",
"serverApplicationName": "code-server-oss",
"serverDataFolderName": ".vscode-server-oss",
"tunnelApplicationName": "code-tunnel-oss",
"win32DirName": "Microsoft Code OSS",
"win32NameVersion": "Microsoft Code OSS",
"win32RegValueName": "CodeOSS",
"win32x64AppId": "{{D77B7E06-80BA-4137-BCF4-654B95CCEBC5}",
"win32arm64AppId": "{{D1ACE434-89C5-48D1-88D3-E2991DF85475}",
"win32x64UserAppId": "{{CC6B787D-37A0-49E8-AE24-8559A032BE0C}",
"win32arm64UserAppId": "{{3AEBF0C8-F733-4AD4-BADE-FDB816D53D7B}",
"win32AppUserModelId": "Microsoft.CodeOSS",
"win32ShellNameShort": "C&ode - OSS",
"win32TunnelServiceMutex": "vscodeoss-tunnelservice",
"win32TunnelMutex": "vscodeoss-tunnel",
"darwinBundleIdentifier": "com.visualstudio.code.oss",
"darwinProfileUUID": "47827DD9-4734-49A0-AF80-7E19B11495CC",
"darwinProfilePayloadUUID": "CF808BE7-53F3-46C6-A7E2-7EDB98A5E959",
"linuxIconName": "code-oss",
"licenseFileName": "LICENSE.txt",
"reportIssueUrl": "https://github.com/microsoft/vscode/issues/new",
"nodejsRepository": "https://nodejs.org",
"urlProtocol": "code-oss",
"webviewContentExternalBaseUrlTemplate": "https://{{uuid}}.vscode-cdn.net/insider/ef65ac1ba57f57f2a3961bfe94aa20481caca4c6/out/vs/workbench/contrib/webview/browser/pre/",
"builtInExtensions": [
{
"name": "ms-vscode.js-debug-companion",
"version": "1.1.3",
"sha256": "7380a890787452f14b2db7835dfa94de538caf358ebc263f9d46dd68ac52de93",
"repo": "https://github.com/microsoft/vscode-js-debug-companion",
"metadata": {
"id": "99cb0b7f-7354-4278-b8da-6cc79972169d",
"publisherId": {
"publisherId": "5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee",
"publisherName": "ms-vscode",
"displayName": "Microsoft",
"flags": "verified"
},
"publisherDisplayName": "Microsoft"
}
},
{
"name": "ms-vscode.js-debug",
"version": "1.117.0",
"sha256": "854eeb8a785b1f41ba2bd02d7ccd4fdbe10021b61473293973c7e96d036c7fb8",
"repo": "https://github.com/microsoft/vscode-js-debug",
"metadata": {
"id": "25629058-ddac-4e17-abba-74678e126c5d",
"publisherId": {
"publisherId": "5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee",
"publisherName": "ms-vscode",
"displayName": "Microsoft",
"flags": "verified"
},
"publisherDisplayName": "Microsoft"
}
},
{
"name": "ms-vscode.vscode-js-profile-table",
"version": "1.0.10",
"sha256": "7361748ddf9fd09d8a2ed1f2a2d7376a2cf9aae708692820b799708385c38e08",
"repo": "https://github.com/microsoft/vscode-js-profile-visualizer",
"metadata": {
"id": "7e52b41b-71ad-457b-ab7e-0620f1fc4feb",
"publisherId": {
"publisherId": "5f5636e7-69ed-4afe-b5d6-8d231fb3d3ee",
"publisherName": "ms-vscode",
"displayName": "Microsoft",
"flags": "verified"
},
"publisherDisplayName": "Microsoft"
}
}
],
"defaultChatAgent": {
"extensionId": "GitHub.copilot",
"chatExtensionId": "GitHub.copilot-chat",
"chatExtensionOutputId": "GitHub.copilot-chat.GitHub Copilot Chat.log",
"chatExtensionOutputExtensionStateCommand": "github.copilot.debug.extensionState",
"documentationUrl": "https://aka.ms/github-copilot-overview",
"termsStatementUrl": "https://aka.ms/github-copilot-terms-statement",
"privacyStatementUrl": "https://aka.ms/github-copilot-privacy-statement",
"skusDocumentationUrl": "https://aka.ms/github-copilot-plans",
"publicCodeMatchesUrl": "https://aka.ms/github-copilot-match-public-code",
"manageSettingsUrl": "https://aka.ms/github-copilot-settings",
"managePlanUrl": "https://aka.ms/github-copilot-manage-plan",
"manageOverageUrl": "https://aka.ms/github-copilot-manage-overage",
"upgradePlanUrl": "https://aka.ms/github-copilot-upgrade-plan",
"signUpUrl": "https://aka.ms/github-sign-up",
"provider": {
"default": {
"id": "github",
"name": "GitHub"
},
"enterprise": {
"id": "github-enterprise",
"name": "GHE"
},
"google": {
"id": "google",
"name": "Google"
},
"apple": {
"id": "apple",
"name": "Apple"
}
},
"providerExtensionId": "vscode.github-authentication",
"providerUriSetting": "github-enterprise.uri",
"providerScopes": [
[
"read:user",
"user:email",
"repo",
"workflow"
],
[
"user:email"
],
[
"read:user"
]
],
"entitlementUrl": "https://api.github.com/copilot_internal/user",
"entitlementSignupLimitedUrl": "https://api.github.com/copilot_internal/subscribe_limited_user",
"chatQuotaExceededContext": "github.copilot.chat.quotaExceeded",
"completionsQuotaExceededContext": "github.copilot.completions.quotaExceeded",
"walkthroughCommand": "github.copilot.open.walkthrough",
"completionsMenuCommand": "github.copilot.toggleStatusMenu",
"completionsRefreshTokenCommand": "github.copilot.signIn",
"chatRefreshTokenCommand": "github.copilot.refreshToken",
"generateCommitMessageCommand": "github.copilot.git.generateCommitMessage",
"resolveMergeConflictsCommand": "github.copilot.git.resolveMergeConflicts",
"completionsAdvancedSetting": "github.copilot.advanced",
"completionsEnablementSetting": "github.copilot.enable",
"nextEditSuggestionsSetting": "github.copilot.nextEditSuggestions.enabled",
"tokenEntitlementUrl": "https://api.github.com/copilot_internal/v2/token",
"mcpRegistryDataUrl": "https://api.github.com/copilot/mcp_registry"
},
"trustedExtensionAuthAccess": {
"github": [
"GitHub.copilot-chat"
],
"github-enterprise": [
"GitHub.copilot-chat"
]
},
"onboardingKeymaps": [
{
"id": "vscode",
"label": "VS Code",
"description": "Default keyboard mapping"
},
{
"id": "sublime",
"label": "Sublime Text",
"extensionId": "ms-vscode.sublime-keybindings",
"description": "Keyboard mapping from Sublime Text"
},
{
"id": "intellij",
"label": "IntelliJ / JetBrains",
"extensionId": "k--kato.intellij-idea-keybindings",
"description": "Keyboard mapping from IntelliJ IDEA"
},
{
"id": "vim",
"label": "Vim",
"extensionId": "vscodevim.vim",
"description": "Vim modal editing"
},
{
"id": "eclipse",
"label": "Eclipse",
"extensionId": "alphabotsec.vscode-eclipse-keybindings",
"description": "Keyboard mapping from Eclipse"
},
{
"id": "notepadpp",
"label": "Notepad++",
"extensionId": "ms-vscode.notepadplusplus-keybindings",
"description": "Keyboard mapping from Notepad++"
}
],
"onboardingThemes": [
{
"id": "dark-2026",
"label": "Dark 2026",
"themeId": "Dark 2026",
"type": "dark"
},
{
"id": "hc-dark",
"label": "Dark High Contrast",
"themeId": "Default High Contrast",
"type": "hcDark"
},
{
"id": "solarized-dark",
"label": "Solarized Dark",
"themeId": "Solarized Dark",
"type": "dark"
},
{
"id": "light-2026",
"label": "Light 2026",
"themeId": "Light 2026",
"type": "light"
},
{
"id": "hc-light",
"label": "Light High Contrast",
"themeId": "Default High Contrast Light",
"type": "hcLight"
},
{
"id": "solarized-light",
"label": "Solarized Light",
"themeId": "Solarized Light",
"type": "light"
}
],
"builtInExtensionsEnabledWithAutoUpdates": [
"GitHub.copilot-chat"
]
}