diff --git a/contributions.json b/contributions.json index 208c968212f2d..2676e9f7dceb1 100644 --- a/contributions.json +++ b/contributions.json @@ -5767,6 +5767,11 @@ "label": "Show Visual File History View", "commandPalette": "gitlens:enabled" }, + "gitlens.showWelcomePage": { + "label": "Show Welcome", + "icon": "$(heart)", + "commandPalette": "gitlens:enabled" + }, "gitlens.showWorkspacesView": { "label": "Show Cloud Workspaces View", "commandPalette": "gitlens:enabled && !gitlens:hasVirtualFolders" diff --git a/docs/telemetry-events.md b/docs/telemetry-events.md index 994a8e12afa57..88cdc46255241 100644 --- a/docs/telemetry-events.md +++ b/docs/telemetry-events.md @@ -581,7 +581,7 @@ void 'attempts': number, 'autoInstall': boolean, 'error.message': string, - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -593,7 +593,7 @@ void { 'attempts': number, 'autoInstall': boolean, - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -605,7 +605,7 @@ void { 'attempts': number, 'autoInstall': boolean, - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'version': string } ``` @@ -1027,7 +1027,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1082,7 +1082,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1137,7 +1137,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1192,7 +1192,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1247,7 +1247,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1302,7 +1302,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1357,7 +1357,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1412,7 +1412,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1467,7 +1467,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1522,7 +1522,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1577,7 +1577,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1632,7 +1632,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1699,7 +1699,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1754,7 +1754,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1836,7 +1836,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -1891,7 +1891,7 @@ or 'context.operations.undo.count': number, 'context.session.duration': number, 'context.session.start': string, - 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', + 'context.source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees', 'context.warnings.indexChanged': boolean, 'context.warnings.workingDirectoryChanged': boolean, 'context.webview.host': 'view' | 'editor', @@ -2823,7 +2823,7 @@ void 'cli.version': string, 'error.message': string, 'reason': string, - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -2835,7 +2835,7 @@ void { 'cli.version': string, 'requiresUserCompletion': boolean, - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -2848,7 +2848,7 @@ void 'cli.version': string, 'error.message': string, 'reason': string, - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -2858,7 +2858,7 @@ void ```typescript { - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -2895,7 +2895,7 @@ void 'repoPrivacy': 'private' | 'public' | 'local', 'repository.visibility': 'private' | 'public' | 'local', // Provided for compatibility with other GK surfaces - 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' + 'source': 'account' | 'subscription' | 'graph' | 'composer' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'rebaseEditor' | 'ai' | 'ai:markdown-preview' | 'ai:markdown-editor' | 'ai:picker' | 'associateIssueWithBranch' | 'cloud-patches' | 'code-suggest' | 'commandPalette' | 'deeplink' | 'editor:hover' | 'feature-badge' | 'feature-gate' | 'gk-cli-integration' | 'gk-mcp-provider' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'mcp' | 'mcp-welcome-message' | 'merge-target' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'scm' | 'scm-input' | 'startWork' | 'statusbar:hover' | 'trial-indicator' | 'view' | 'view:hover' | 'walkthrough' | 'whatsnew' | 'worktrees' } ``` @@ -3596,3 +3596,66 @@ or } ``` +### welcome/action + +> Sent when an action is taken in the welcome webview + +```typescript +{ + 'command': string, + 'detail': string, + 'name': 'plus/sign-up', + 'type': 'command' +} +``` + +or + +```typescript +{ + 'detail': string, + 'name': 'plus/sign-up', + 'type': 'url', + 'url': string +} +``` + +### welcome/closed + +```typescript +{ + [`context.${string}`]: string | number | boolean, + 'context.webview.host': 'view' | 'editor', + 'context.webview.id': string, + 'context.webview.instanceId': string, + 'context.webview.type': string +} +``` + +### welcome/showAborted + +```typescript +{ + 'context.webview.host': 'view' | 'editor', + 'context.webview.id': string, + 'context.webview.instanceId': string, + 'context.webview.type': string, + 'duration': number, + 'loading': boolean +} +``` + +### welcome/shown + +```typescript +{ + [`context.${string}`]: string | number | boolean, + 'context.webview.host': 'view' | 'editor', + 'context.webview.id': string, + 'context.webview.instanceId': string, + 'context.webview.type': string, + 'duration': number, + 'loading': boolean +} +``` + diff --git a/package.json b/package.json index 3859800a44c7b..0c0c5e07999f2 100644 --- a/package.json +++ b/package.json @@ -8404,6 +8404,12 @@ "title": "Show Visual File History View", "category": "GitLens" }, + { + "command": "gitlens.showWelcomePage", + "title": "Show Welcome", + "category": "GitLens", + "icon": "$(heart)" + }, { "command": "gitlens.showWorkspacesView", "title": "Show Cloud Workspaces View", @@ -13280,6 +13286,10 @@ "command": "gitlens.showTimelineView", "when": "gitlens:enabled" }, + { + "command": "gitlens.showWelcomePage", + "when": "gitlens:enabled" + }, { "command": "gitlens.showWorkspacesView", "when": "gitlens:enabled && !gitlens:hasVirtualFolders" diff --git a/src/constants.commands.generated.ts b/src/constants.commands.generated.ts index 8b5bbdaba1ac5..636128bf4a907 100644 --- a/src/constants.commands.generated.ts +++ b/src/constants.commands.generated.ts @@ -1010,6 +1010,7 @@ export type ContributedPaletteCommands = | 'gitlens.showTagsView' | 'gitlens.showTimelinePage' | 'gitlens.showTimelineView' + | 'gitlens.showWelcomePage' | 'gitlens.showWorkspacesView' | 'gitlens.showWorktreesView' | 'gitlens.startWork' diff --git a/src/constants.telemetry.ts b/src/constants.telemetry.ts index 089a854bac030..a342ef9d96cf1 100644 --- a/src/constants.telemetry.ts +++ b/src/constants.telemetry.ts @@ -363,6 +363,9 @@ export interface TelemetryEvents extends WebviewShowAbortedEvents, WebviewShownE /** Sent when the walkthrough is opened */ 'walkthrough/action': WalkthroughActionEvent; 'walkthrough/completion': WalkthroughCompletionEvent; + + /** Sent when an action is taken in the welcome webview */ + 'welcome/action': WelcomeActionEvent; } type WebviewShowAbortedEvents = { @@ -1219,6 +1222,12 @@ interface WalkthroughCompletionEvent { 'context.key': WalkthroughContextKeys; } +type WelcomeActionNames = 'plus/sign-up'; + +type WelcomeActionEvent = + | { type: 'command'; name: WelcomeActionNames; command: string; detail?: string } + | { type: 'url'; name: WelcomeActionNames; url: string; detail?: string }; + type WebviewContextEventData = { 'context.webview.id': string; 'context.webview.type': string; @@ -1301,6 +1310,7 @@ export type Sources = | 'view' | 'view:hover' | 'walkthrough' + | 'welcome' | 'whatsnew' | 'worktrees'; diff --git a/src/constants.views.ts b/src/constants.views.ts index cac195cb613e7..eb050b733fa8f 100644 --- a/src/constants.views.ts +++ b/src/constants.views.ts @@ -43,7 +43,7 @@ export type GroupableTreeViewTypes = Extract< >; export type GroupableTreeViewIds = TreeViewIds; -export type WebviewTypes = 'composer' | 'graph' | 'patchDetails' | 'settings' | 'timeline'; +export type WebviewTypes = 'composer' | 'graph' | 'patchDetails' | 'settings' | 'timeline' | 'welcome'; export type WebviewIds = `gitlens.${WebviewTypes}`; export type WebviewViewTypes = 'commitDetails' | 'graph' | 'graphDetails' | 'home' | 'patchDetails' | 'timeline'; diff --git a/src/extension.ts b/src/extension.ts index be844d156207a..ed3f84e7d0096 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -366,6 +366,12 @@ async function showWhatsNew( if (previousVersion == null) { Logger.log(`GitLens first-time install; window.focused=${window.state.focused}`); + // // Show welcome webview on first install for IDEs that don't support walkthroughs (e.g., Cursor) + // // For IDEs that support walkthroughs, the walkthrough will be shown instead + // if (window.state.focused && !container.walkthrough.isWalkthroughSupported) { + // void executeCommand('gitlens.showWelcomePage'); + // } + return; } diff --git a/src/webviews/apps/home/components/welcome-overlay.ts b/src/webviews/apps/home/components/welcome-overlay.ts new file mode 100644 index 0000000000000..79e5383ed0ce0 --- /dev/null +++ b/src/webviews/apps/home/components/welcome-overlay.ts @@ -0,0 +1,95 @@ +import { consume } from '@lit/context'; +import { css, html, LitElement, nothing } from 'lit'; +import { customElement, property, state } from 'lit/decorators.js'; +import type { State } from '../../../home/protocol'; +import { CollapseSectionCommand } from '../../../home/protocol'; +import { ipcContext } from '../../shared/contexts/ipc'; +import type { HostIpc } from '../../shared/ipc'; +import { stateContext } from '../context'; +import './welcome-page'; + +declare global { + interface HTMLElementTagNameMap { + 'gl-welcome-overlay': GlWelcomeOverlay; + } +} + +@customElement('gl-welcome-overlay') +export class GlWelcomeOverlay extends LitElement { + static override shadowRootOptions: ShadowRootInit = { + ...LitElement.shadowRootOptions, + delegatesFocus: true, + }; + + static override styles = [ + css` + :host { + --background-color: var(--vscode-editor-background); + } + .overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + display: block; + background-color: var(--background-color); + } + + gl-welcome-page { + --page-background-color: var(--background-color); + --page-margin-left: 1rem; + --page-margin-right: 0.5rem; + } + + gl-welcome-page::part(page) { + padding: 0 0.5rem 0 1rem; + } + `, + ]; + + @property({ type: String }) + webroot?: string; + + @property({ type: Boolean }) + private isLightTheme = false; + + @consume({ context: stateContext, subscribe: true }) + @state() + private _state!: State; + + @consume({ context: ipcContext, subscribe: true }) + @state() + private _ipc!: HostIpc; + + @state() + private closed = false; + + override render(): unknown { + const { welcomeOverlayCollapsed, walkthroughSupported, newInstall } = this._state; + if (this.closed || welcomeOverlayCollapsed || walkthroughSupported || !newInstall) { + return nothing; + } + + return html` +
+ this.onClose()} + > +
+ `; + } + + private onClose() { + this.closed = true; + + this._ipc.sendCommand(CollapseSectionCommand, { + section: 'welcomeOverlay', + collapsed: true, + }); + } +} diff --git a/src/webviews/apps/home/components/welcome-page.css.ts b/src/webviews/apps/home/components/welcome-page.css.ts new file mode 100644 index 0000000000000..0153a4f1e2b10 --- /dev/null +++ b/src/webviews/apps/home/components/welcome-page.css.ts @@ -0,0 +1,247 @@ +import { css } from 'lit'; + +const colorScheme = css` + :host { + --side-shadow-color: transparent; + --accent-color: #cb64ff; + --text-color: var(--vscode-descriptionForeground); + --em-color: var(--vscode-editor-foreground); + --link-color: var(--vscode-textLink-foreground); + + --hero-gradient: radial-gradient(76.32% 76.32% at 50% 7.24%, #7b00ff 29.72%, rgba(255, 0, 242, 0) 100%); + --trial-button-gradient: linear-gradient(90deg, #7900c9 0%, #196fff 100%); + --trial-button-border: none; + --trial-button-text-color: #fff; + } + + :host-context(.vscode-light) { + --hero-gradient: radial-gradient(62.4% 62.4% at 50% 7.24%, #7b00ff 29.72%, rgba(255, 0, 242, 0) 100%); + } + + :host-context(.vscode-dark) { + --hero-gradient: radial-gradient(76.32% 76.32% at 50% 7.24%, #7b00ff 29.72%, rgba(255, 0, 242, 0) 100%); + } + + :host-context(.vscode-high-contrast) { + --hero-gradient: transparent; + --trial-button-gradient: var(--color-button-background); + --trial-button-border: 1px solid var(--vscode-button-border); + --trial-button-text-color: var(--color-button-foreground); + } + + :host-context(.vscode-high-contrast-light) { + --accent-color: #500070; + } + :host-context(.vscode-high-contrast:not(.vscode-high-contrast-light)) { + --accent-color: #ffc0ff; + } +`; + +const typography = css` + :host { + font-size: var(--vscode-font-size); + + --h1-font-size: 1.7em; + --p-font-size: 1.23em; + --card-font-size: 1em; + } + + @media (max-width: 640px) { + :host { + font-size: var(--vscode-editor-font-size); + --h1-font-size: 1em; + --p-font-size: 1em; + --card-font-size: 1em; + } + } + + @media (max-width: 300px) { + :host { + font-size: calc(var(--vscode-editor-font-size) * 0.8); + } + } +`; + +const main = css` + :host { + --page-margin-left: 0px; + --page-margin-right: 0px; + max-width: 100%; + } + + .welcome { + max-height: 100%; + overflow: auto; + position: relative; + } + + .close-button { + position: absolute; + right: 2px; + top: 2px; + z-index: 1; + } +`; + +const heroGradient = css` + .welcome::before { + content: ' '; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%) translateY(-40%); + z-index: -1; + + background: var(--hero-gradient); + border-radius: 100%; + opacity: 0.25; + filter: blur(53px); + + width: 620px; + height: 517px; + max-width: 100%; + } + + @media (max-width: 400px) { + .welcome::before { + height: 273px; + } + } +`; + +const section = css` + .section { + display: flex; + flex-flow: column; + justify-content: center; + align-items: center; + text-align: center; + } + .section h1 { + color: var(--em-color); + } + .section h2 { + color: var(--em-color); + font-weight: normal; + font-size: var(--p-font-size); + } + .section p { + color: var(--text-color); + } + .section .accent { + color: var(--accent-color); + } + .section a { + color: var(--link-color); + text-decoration: none; + } + + .section.plain p { + max-width: 30em; + font-size: var(--p-font-size); + } + + .section.start-trial { + margin: 2em 3.1em; + } + .section.start-trial p { + width: 100%; + } + .section.start-trial gl-button { + background: var(--trial-button-gradient); + border: var(--trial-button-border); + color: var(--trial-button-text-color); + width: 100%; + } + + @media (min-width: 640px) { + .section.start-trial gl-button { + --button-padding: 0.4em 4em; + width: initial; + } + } + + .section.wide { + margin-left: calc(-1 * var(--page-margin-left)); + margin-right: calc(-1 * var(--page-margin-right)); + } +`; + +const header = css` + .logo { + transform: scale(0.7); + } + @media (max-width: 640px) { + .logo { + transform: scale(0.5); + } + } + + .header { + margin-top: 3em; + margin-bottom: 1em; + max-width: 620px; + margin-left: auto; + margin-right: auto; + } + .header gitlens-logo { + transform: translateX(-0.75rem); + } + .header h1 { + margin-bottom: 0; + font-size: var(--h1-font-size); + } +`; + +const cards = css` + .card { + border-radius: 0.63em; + background-color: var(--vscode-textBlockQuote-background); + padding: 1.8em; + text-align: initial; + } + + @media (max-width: 640px) { + .card { + padding: 1em; + } + } + + @media (max-width: 300px) { + .card { + padding: 0.5em 0.5em 1em; + } + } + + .card h1 { + margin: 0; + font-size: var(--card-font-size); + } + + .card p { + margin: 0.5em 0 0; + font-size: var(--card-font-size); + } + + .card p:last-child { + margin: 1em 0 0; + } + + .card img { + max-width: 100%; + } +`; + +const scrollableFeatures = css` + gl-scrollable-features { + --side-shadow-padding: max(var(--page-margin-left), var(--page-margin-right)); + --side-shadow-color: var(--page-background-color); + } +`; + +export const welcomeStyles = css` + ${colorScheme} ${typography} ${main} + ${heroGradient} ${section} ${header} + ${scrollableFeatures} + ${cards} +`; diff --git a/src/webviews/apps/home/components/welcome-page.ts b/src/webviews/apps/home/components/welcome-page.ts new file mode 100644 index 0000000000000..e8dff65cfebe5 --- /dev/null +++ b/src/webviews/apps/home/components/welcome-page.ts @@ -0,0 +1,162 @@ +import { consume } from '@lit/context'; +import { html, LitElement } from 'lit'; +import { customElement, property } from 'lit/decorators.js'; +import type { GlCommands } from '../../../../constants.commands'; +import { ExecuteCommand } from '../../../protocol'; +import { scrollableBase } from '../../shared/components/styles/lit/base.css'; +import { ipcContext } from '../../shared/contexts/ipc'; +import type { TelemetryContext } from '../../shared/contexts/telemetry'; +import { telemetryContext } from '../../shared/contexts/telemetry'; +import { welcomeStyles } from './welcome-page.css'; +import '../../shared/components/gitlens-logo'; +import '../../shared/components/button'; +import '../../shared/components/code-icon'; +import './welcome-parts'; + +declare global { + interface HTMLElementTagNameMap { + 'gl-welcome-page': GlWelcomePage; + } +} + +const helpBlameUrl = + 'https://www.gitkraken.com/gitlens?utm_source=gitlens-extension&utm_medium=in-app-links#Visual-Repository-Intelligence'; +const helpLaunchpadUrl = + 'https://www.gitkraken.com/gitlens?utm_source=gitlens-extension&utm_medium=in-app-links#Visual-Repository-Intelligence'; + +@customElement('gl-welcome-page') +export class GlWelcomePage extends LitElement { + static override styles = [scrollableBase, welcomeStyles]; + //static override styles = welcomeStyles; + + @property({ type: Boolean }) + closeable = false; + + @property({ type: String }) + webroot?: string; + + @property({ type: Boolean }) + private isLightTheme = false; + + @consume({ context: ipcContext }) + _ipc!: typeof ipcContext.__context__; + + @consume({ context: telemetryContext as { __context__: TelemetryContext } }) + _telemetry!: TelemetryContext; + + private onStartTrial() { + const command: GlCommands = 'gitlens.plus.signUp'; + this._telemetry.sendEvent({ + name: 'welcome/action', + data: { + type: 'command', + name: 'plus/sign-up', + command: command, + }, + source: { source: 'welcome' }, + }); + this._ipc.sendCommand(ExecuteCommand, { command: command, args: [{ source: 'welcome' }] }); + } + + private onClose() { + this.dispatchEvent(new CustomEvent('close')); + } + + override render(): unknown { + const themeSuffix = this.isLightTheme ? 'light' : 'dark'; + return html` +
+ ${this.closeable + ? html` this.onClose()} + >` + : ''} +
+ +

GitLens is now installed in Cursor

+

+ Understand every line of code — instantly. GitLens reveals authorship, activity, and history + inside the editor +

+
+
+

With PRO subscription you get more

+
+ +
+ + + Commit Graph +

Navigate Complex Repository Structures

+

by unlocking the full potential of the interactive Commit Graph.

+

Open Commit Graph

+
+ + Visual File History +

Accelereate Code Reviews

+

Visual File History provides context into the most important changes.

+

Open Visual File History

+
+ + Launchpad +

Streamline Pull Request Management

+

Launchpad integrates PR workflows directly into your editor.

+

Open Launchpad

+
+
+
+ +
+ this.onStartTrial()}>Start GitLens Pro Trial +
+ +
+

You also get these free features

+
+ +
+ + + Git Blame +

Git Blame

+

Understand the context behind every line with inline blame annotations

+

+ Learn more +

+
+ + Launchpad +

Launchpad

+

Your personalized command center for managing pull requests and issues

+

Learn more

+
+
+
+
+ `; + } +} diff --git a/src/webviews/apps/home/components/welcome-parts.ts b/src/webviews/apps/home/components/welcome-parts.ts new file mode 100644 index 0000000000000..d13c31dbdaa94 --- /dev/null +++ b/src/webviews/apps/home/components/welcome-parts.ts @@ -0,0 +1,312 @@ +import { css, html, LitElement } from 'lit'; +import { customElement, queryAssignedElements, state } from 'lit/decorators.js'; +import '../../shared/components/button'; +import '../../shared/components/code-icon'; + +declare global { + interface HTMLElementTagNameMap { + 'gl-feature-card': GlFeatureCard; + 'gl-feature-carousel': GlFeatureCarousel; + 'gl-feature-narrow-card': GlFeatureNarrowCard; + 'gl-scrollable-features': GlScrollableFeatures; + } +} + +@customElement('gl-feature-carousel') +export class GlFeatureCarousel extends LitElement { + static override styles = [ + css` + :host { + display: block; + width: 100%; + } + + .carousel { + display: flex; + gap: 1em; + justify-content: center; + } + + .button { + display: flex; + align-items: center; + } + + .content { + flex: 1; + max-width: 520px; + display: flex; + align-items: center; + justify-content: center; + } + + ::slotted(*) { + display: none; + } + + ::slotted([data-active]) { + display: flex; + width: 100%; + } + + @media (max-width: 400px) { + .carousel { + display: grid; + grid-template-columns: 1fr auto; + grid-template-rows: 1fr 1fr; + gap: 0.5em; + } + .content { + grid-column: 1; + grid-row: 1 / span 2; + } + .button { + grid-column: 2; + } + .button code-icon { + transform: rotate(90deg); + } + } + `, + ]; + + @queryAssignedElements({ flatten: true }) + private cards!: HTMLElement[]; + + @state() + private currentIndex = 0; + + override firstUpdated(): void { + this.updateActiveCard(); + } + + private updateActiveCard(): void { + this.cards.forEach((card, index) => { + if (index === this.currentIndex) { + card.setAttribute('data-active', ''); + } else { + card.removeAttribute('data-active'); + } + }); + } + + private handlePrevious(): void { + if (this.cards.length === 0) return; + this.currentIndex = (this.currentIndex - 1 + this.cards.length) % this.cards.length; + this.updateActiveCard(); + } + + private handleNext(): void { + if (this.cards.length === 0) return; + this.currentIndex = (this.currentIndex + 1) % this.cards.length; + this.updateActiveCard(); + } + + private handleSlotChange(): void { + this.currentIndex = 0; + this.updateActiveCard(); + } + + override render(): unknown { + return html` + + `; + } +} + +@customElement('gl-feature-card') +export class GlFeatureCard extends LitElement { + static override styles = [ + css` + :host { + display: flex; + gap: 1em; + } + + .image { + flex: 1 1 50%; + width: 50%; + } + + .content { + margin-top: 0.5em; + flex: 1 0 50%; + display: block; + } + + @media (max-width: 400px) { + :host { + flex-direction: column; + } + + .image { + width: 100%; + } + + .content { + margin-top: 0; + margin-left: 0.3em; + margin-right: 0.3em; + } + + ::slotted(*) { + width: 100%; + } + } + `, + ]; + + override render(): unknown { + return html` +
+ +
+
+ +
+ `; + } +} + +@customElement('gl-feature-narrow-card') +export class GlFeatureNarrowCard extends LitElement { + static override styles = [ + css` + :host { + display: flex; + flex-direction: column; + gap: 0.7em; + width: 12em; + min-width: 12em; + text-align: initial; + } + + .image ::slotted(img) { + max-height: 2.23em; + border-radius: 0.6em; + } + + ::slotted(p:last-child) { + margin-top: 0.5em; + } + + .content { + display: block; + } + + @media (max-width: 400px) { + .content { + margin-left: 0.3em; + margin-right: 0.3em; + } + } + `, + ]; + + override render(): unknown { + return html` +
+ +
+
+ +
+ `; + } +} + +@customElement('gl-scrollable-features') +export class GlScrollableFeatures extends LitElement { + static override styles = [ + css` + :host { + --side-shadow-padding: 1em; + --side-shadow-color: transparent; + + --final-side-shadow-padding: max(var(--side-shadow-padding), 1em); + position: relative; + max-width: 100%; + } + + :host::before, + :host::after { + content: ' '; + position: absolute; + display: block; + top: 0; + width: var(--final-side-shadow-padding); + height: 100%; + } + + :host::before { + left: 0; + background: linear-gradient(to left, transparent 0%, var(--side-shadow-color) 83%); + } + :host::after { + right: 0; + background: linear-gradient(to right, transparent 0%, var(--side-shadow-color) 83%); + } + + .content { + box-sizing: border-box; + padding: 0 var(--final-side-shadow-padding); + display: flex; + gap: 1em; + overflow-x: auto; + overflow-y: hidden; + scrollbar-width: none; + } + + @media (max-width: 400px) { + :host { + --final-side-shadow-padding: max(var(--side-shadow-padding), 2em); + margin-top: -1em; + } + :host::before, + :host::after { + height: var(--final-side-shadow-padding); + width: 100%; + left: 0; + right: 0; + } + :host::before { + position: sticky; + top: 0; + background: linear-gradient(to top, transparent 0%, var(--side-shadow-color) 83%); + } + :host::after { + position: fixed; + top: auto; + bottom: 0; + background: linear-gradient(to bottom, transparent 0%, var(--side-shadow-color) 83%); + } + .content { + flex-direction: column; + gap: 0.5em; + padding: 0; + } + } + `, + ]; + + override render(): unknown { + return html`
`; + } +} diff --git a/src/webviews/apps/home/home.html b/src/webviews/apps/home/home.html index ae2ca4cb107f4..a4b1a167f1e6e 100644 --- a/src/webviews/apps/home/home.html +++ b/src/webviews/apps/home/home.html @@ -21,6 +21,6 @@ data-placement="#{placement}" data-vscode-context='{ "webview": "#{webviewId}", "webviewInstance": "#{webviewInstanceId}" }' > - + diff --git a/src/webviews/apps/home/home.ts b/src/webviews/apps/home/home.ts index 24060a3f93fc8..505dc409b236b 100644 --- a/src/webviews/apps/home/home.ts +++ b/src/webviews/apps/home/home.ts @@ -2,7 +2,7 @@ import './home.scss'; import { provide } from '@lit/context'; import { html } from 'lit'; -import { customElement, query } from 'lit/decorators.js'; +import { customElement, property, query, state } from 'lit/decorators.js'; import { when } from 'lit/directives/when.js'; import type { State } from '../../home/protocol'; import { DidChangeSubscription, DidFocusAccount } from '../../home/protocol'; @@ -17,6 +17,7 @@ import { GlAppHost } from '../shared/appHost'; import { scrollableBase } from '../shared/components/styles/lit/base.css'; import type { LoggerContext } from '../shared/contexts/logger'; import type { HostIpc } from '../shared/ipc'; +import type { ThemeChangeEvent } from '../shared/theme'; import type { GlAiAllAccessBanner } from './components/ai-all-access-banner'; import { homeBaseStyles, homeStyles } from './home.css'; import { HomeStateProvider } from './stateProvider'; @@ -29,6 +30,7 @@ import './components/ai-all-access-banner'; import './components/ama-banner'; import './components/integration-banner'; import './components/preview-banner'; +import './components/welcome-overlay'; import '../shared/components/mcp-banner'; import './components/repo-alerts'; import '../shared/components/banner/banner'; @@ -76,6 +78,16 @@ export class GlHomeApp extends GlAppHost { ); } + @property({ type: String }) + webroot?: string; + + @state() + private isLightTheme = false; + + protected override onThemeUpdated(e: ThemeChangeEvent): void { + this.isLightTheme = e.isLightTheme; + } + override render(): unknown { return html`
@@ -111,6 +123,7 @@ export class GlHomeApp extends GlAppHost { `, )} +
`; } diff --git a/src/webviews/apps/media/feature-graph-dark.svg b/src/webviews/apps/media/feature-graph-dark.svg new file mode 100644 index 0000000000000..c6adf986bafd8 --- /dev/null +++ b/src/webviews/apps/media/feature-graph-dark.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webviews/apps/media/feature-graph-light.svg b/src/webviews/apps/media/feature-graph-light.svg new file mode 100644 index 0000000000000..61127b91486b1 --- /dev/null +++ b/src/webviews/apps/media/feature-graph-light.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webviews/apps/media/feature-icon-compass-dark.svg b/src/webviews/apps/media/feature-icon-compass-dark.svg new file mode 100644 index 0000000000000..06f6328323a4c --- /dev/null +++ b/src/webviews/apps/media/feature-icon-compass-dark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/webviews/apps/media/feature-icon-compass-light.svg b/src/webviews/apps/media/feature-icon-compass-light.svg new file mode 100644 index 0000000000000..d9bb1dc52a8bc --- /dev/null +++ b/src/webviews/apps/media/feature-icon-compass-light.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/webviews/apps/media/feature-icon-pr-dark.svg b/src/webviews/apps/media/feature-icon-pr-dark.svg new file mode 100644 index 0000000000000..e3a2abf2d1026 --- /dev/null +++ b/src/webviews/apps/media/feature-icon-pr-dark.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/webviews/apps/media/feature-icon-pr-light.svg b/src/webviews/apps/media/feature-icon-pr-light.svg new file mode 100644 index 0000000000000..3f413922080c7 --- /dev/null +++ b/src/webviews/apps/media/feature-icon-pr-light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/webviews/apps/media/feature-launchpad-dark.svg b/src/webviews/apps/media/feature-launchpad-dark.svg new file mode 100644 index 0000000000000..fe1782a802af7 --- /dev/null +++ b/src/webviews/apps/media/feature-launchpad-dark.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webviews/apps/media/feature-launchpad-light.svg b/src/webviews/apps/media/feature-launchpad-light.svg new file mode 100644 index 0000000000000..afa7031dc5c75 --- /dev/null +++ b/src/webviews/apps/media/feature-launchpad-light.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webviews/apps/media/feature-timeline-dark.svg b/src/webviews/apps/media/feature-timeline-dark.svg new file mode 100644 index 0000000000000..eca1dfba8500b --- /dev/null +++ b/src/webviews/apps/media/feature-timeline-dark.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webviews/apps/media/feature-timeline-light.svg b/src/webviews/apps/media/feature-timeline-light.svg new file mode 100644 index 0000000000000..f6dea6f39e788 --- /dev/null +++ b/src/webviews/apps/media/feature-timeline-light.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/webviews/home/homeWebview.ts b/src/webviews/home/homeWebview.ts index e3e011bf78ff9..2b321f49fb5ee 100644 --- a/src/webviews/home/homeWebview.ts +++ b/src/webviews/home/homeWebview.ts @@ -803,6 +803,10 @@ export class HomeWebviewProvider implements WebviewProvider { previewEnabled: boolean; newInstall: boolean; amaBannerCollapsed: boolean; + welcomeOverlayCollapsed: boolean; } export interface IntegrationState extends IntegrationDescriptor {