diff --git a/docs/telemetry-events.md b/docs/telemetry-events.md index 4805527f54c16..f60a95f675f99 100644 --- a/docs/telemetry-events.md +++ b/docs/telemetry-events.md @@ -1320,7 +1320,7 @@ void 'repository.visibility': 'private' | 'public' | 'local', 'repoPrivacy': 'private' | 'public' | 'local', 'filesChanged': number, - 'source': 'graph' | 'patchDetails' | 'settings' | 'timeline' | 'welcome' | 'home' | 'code-suggest' | 'account' | 'cloud-patches' | 'commandPalette' | 'deeplink' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'trial-indicator' | 'scm-input' | 'subscription' | 'walkthrough' | 'worktrees' + 'source': 'graph' | 'patchDetails' | 'settings' | 'timeline' | 'home' | 'code-suggest' | 'account' | 'cloud-patches' | 'commandPalette' | 'deeplink' | 'inspect' | 'inspect-overview' | 'integrations' | 'launchpad' | 'launchpad-indicator' | 'launchpad-view' | 'notification' | 'prompt' | 'quick-wizard' | 'remoteProvider' | 'trial-indicator' | 'scm-input' | 'subscription' | 'walkthrough' | 'worktrees' } ``` @@ -1476,7 +1476,7 @@ or ```typescript { - 'usage.key': 'graphWebview:shown' | 'patchDetailsWebview:shown' | 'settingsWebview:shown' | 'timelineWebview:shown' | 'welcomeWebview:shown' | 'graphView:shown' | 'patchDetailsView:shown' | 'timelineView:shown' | 'commitDetailsView:shown' | 'graphDetailsView:shown' | 'homeView:shown' | 'commitsView:shown' | 'stashesView:shown' | 'tagsView:shown' | 'launchpadView:shown' | 'worktreesView:shown' | 'branchesView:shown' | 'contributorsView:shown' | 'draftsView:shown' | 'fileHistoryView:shown' | 'lineHistoryView:shown' | 'pullRequestView:shown' | 'remotesView:shown' | 'repositoriesView:shown' | 'searchAndCompareView:shown' | 'workspacesView:shown' | 'rebaseEditor:shown' | 'command:gitlens.action.:executed' | 'command:gitlens.addAuthors:executed' | 'command:gitlens.browseRepoAtRevision:executed' | 'command:gitlens.browseRepoAtRevisionInNewWindow:executed' | 'command:gitlens.browseRepoBeforeRevision:executed' | 'command:gitlens.browseRepoBeforeRevisionInNewWindow:executed' | 'command:gitlens.clearFileAnnotations:executed' | 'command:gitlens.closeUnchangedFiles:executed' | 'command:gitlens.compareWith:executed' | 'command:gitlens.compareHeadWith:executed' | 'command:gitlens.compareWorkingWith:executed' | 'command:gitlens.computingFileAnnotations:executed' | 'command:gitlens.connectRemoteProvider:executed' | 'command:gitlens.copyCurrentBranch:executed' | 'command:gitlens.copyDeepLinkToBranch:executed' | 'command:gitlens.copyDeepLinkToCommit:executed' | 'command:gitlens.copyDeepLinkToComparison:executed' | 'command:gitlens.copyDeepLinkToFile:executed' | 'command:gitlens.copyDeepLinkToFileAtRevision:executed' | 'command:gitlens.copyDeepLinkToLines:executed' | 'command:gitlens.copyDeepLinkToRepo:executed' | 'command:gitlens.copyDeepLinkToTag:executed' | 'command:gitlens.copyDeepLinkToWorkspace:executed' | 'command:gitlens.copyMessageToClipboard:executed' | 'command:gitlens.copyRemoteBranchesUrl:executed' | 'command:gitlens.copyRemoteBranchUrl:executed' | 'command:gitlens.copyRemoteCommitUrl:executed' | 'command:gitlens.copyRemoteComparisonUrl:executed' | 'command:gitlens.copyRemoteFileUrlToClipboard:executed' | 'command:gitlens.copyRemoteFileUrlWithoutRange:executed' | 'command:gitlens.copyRemoteFileUrlFrom:executed' | 'command:gitlens.copyRemotePullRequestUrl:executed' | 'command:gitlens.copyRemoteRepositoryUrl:executed' | 'command:gitlens.copyShaToClipboard:executed' | 'command:gitlens.copyRelativePathToClipboard:executed' | 'command:gitlens.applyPatchFromClipboard:executed' | 'command:gitlens.pastePatchFromClipboard:executed' | 'command:gitlens.copyPatchToClipboard:executed' | 'command:gitlens.copyWorkingChangesToWorktree:executed' | 'command:gitlens.createPatch:executed' | 'command:gitlens.createCloudPatch:executed' | 'command:gitlens.createPullRequestOnRemote:executed' | 'command:gitlens.diffDirectory:executed' | 'command:gitlens.diffDirectoryWithHead:executed' | 'command:gitlens.diffFolderWithRevision:executed' | 'command:gitlens.diffFolderWithRevisionFrom:executed' | 'command:gitlens.diffWith:executed' | 'command:gitlens.diffWithNext:executed' | 'command:gitlens.diffWithNextInDiffLeft:executed' | 'command:gitlens.diffWithNextInDiffRight:executed' | 'command:gitlens.diffWithPrevious:executed' | 'command:gitlens.diffWithPreviousInDiffLeft:executed' | 'command:gitlens.diffWithPreviousInDiffRight:executed' | 'command:gitlens.diffLineWithPrevious:executed' | 'command:gitlens.diffWithRevision:executed' | 'command:gitlens.diffWithRevisionFrom:executed' | 'command:gitlens.diffWithWorking:executed' | 'command:gitlens.diffWithWorkingInDiffLeft:executed' | 'command:gitlens.diffWithWorkingInDiffRight:executed' | 'command:gitlens.diffLineWithWorking:executed' | 'command:gitlens.disconnectRemoteProvider:executed' | 'command:gitlens.disableDebugLogging:executed' | 'command:gitlens.enableDebugLogging:executed' | 'command:gitlens.disableRebaseEditor:executed' | 'command:gitlens.enableRebaseEditor:executed' | 'command:gitlens.externalDiff:executed' | 'command:gitlens.externalDiffAll:executed' | 'command:gitlens.fetchRepositories:executed' | 'command:gitlens.generateCommitMessage:executed' | 'command:gitlens.getStarted:executed' | 'command:gitlens.gk.switchOrganization:executed' | 'command:gitlens.inviteToLiveShare:executed' | 'command:gitlens.openBlamePriorToChange:executed' | 'command:gitlens.openBranchesOnRemote:executed' | 'command:gitlens.openBranchOnRemote:executed' | 'command:gitlens.openCurrentBranchOnRemote:executed' | 'command:gitlens.openChangedFiles:executed' | 'command:gitlens.openCommitOnRemote:executed' | 'command:gitlens.openComparisonOnRemote:executed' | 'command:gitlens.openFileHistory:executed' | 'command:gitlens.openFileFromRemote:executed' | 'command:gitlens.openFileOnRemote:executed' | 'command:gitlens.openFileOnRemoteFrom:executed' | 'command:gitlens.openFileRevision:executed' | 'command:gitlens.openFileRevisionFrom:executed' | 'command:gitlens.openFolderHistory:executed' | 'command:gitlens.openOnRemote:executed' | 'command:gitlens.openCloudPatch:executed' | 'command:gitlens.openPatch:executed' | 'command:gitlens.openPullRequestOnRemote:executed' | 'command:gitlens.openAssociatedPullRequestOnRemote:executed' | 'command:gitlens.openRepoOnRemote:executed' | 'command:gitlens.openRevisionFile:executed' | 'command:gitlens.openRevisionFileInDiffLeft:executed' | 'command:gitlens.openRevisionFileInDiffRight:executed' | 'command:gitlens.openWalkthrough:executed' | 'command:gitlens.openWorkingFile:executed' | 'command:gitlens.openWorkingFileInDiffLeft:executed' | 'command:gitlens.openWorkingFileInDiffRight:executed' | 'command:gitlens.pullRepositories:executed' | 'command:gitlens.pushRepositories:executed' | 'command:gitlens.gitCommands:executed' | 'command:gitlens.gitCommands.branch:executed' | 'command:gitlens.gitCommands.branch.create:executed' | 'command:gitlens.gitCommands.branch.delete:executed' | 'command:gitlens.gitCommands.branch.prune:executed' | 'command:gitlens.gitCommands.branch.rename:executed' | 'command:gitlens.gitCommands.checkout:executed' | 'command:gitlens.gitCommands.cherryPick:executed' | 'command:gitlens.gitCommands.history:executed' | 'command:gitlens.gitCommands.merge:executed' | 'command:gitlens.gitCommands.rebase:executed' | 'command:gitlens.gitCommands.remote:executed' | 'command:gitlens.gitCommands.remote.add:executed' | 'command:gitlens.gitCommands.remote.prune:executed' | 'command:gitlens.gitCommands.remote.remove:executed' | 'command:gitlens.gitCommands.reset:executed' | 'command:gitlens.gitCommands.revert:executed' | 'command:gitlens.gitCommands.show:executed' | 'command:gitlens.gitCommands.stash:executed' | 'command:gitlens.gitCommands.stash.drop:executed' | 'command:gitlens.gitCommands.stash.list:executed' | 'command:gitlens.gitCommands.stash.pop:executed' | 'command:gitlens.gitCommands.stash.push:executed' | 'command:gitlens.gitCommands.stash.rename:executed' | 'command:gitlens.gitCommands.status:executed' | 'command:gitlens.gitCommands.switch:executed' | 'command:gitlens.gitCommands.tag:executed' | 'command:gitlens.gitCommands.tag.create:executed' | 'command:gitlens.gitCommands.tag.delete:executed' | 'command:gitlens.gitCommands.worktree:executed' | 'command:gitlens.gitCommands.worktree.create:executed' | 'command:gitlens.gitCommands.worktree.delete:executed' | 'command:gitlens.gitCommands.worktree.open:executed' | 'command:gitlens.ghpr.views.openOrCreateWorktree:executed' | 'command:gitlens.plus.cloudIntegrations.connect:executed' | 'command:gitlens.plus.hide:executed' | 'command:gitlens.plus.login:executed' | 'command:gitlens.plus.logout:executed' | 'command:gitlens.plus.manage:executed' | 'command:gitlens.plus.cloudIntegrations.manage:executed' | 'command:gitlens.plus.reactivateProTrial:executed' | 'command:gitlens.plus.resendVerification:executed' | 'command:gitlens.plus.restore:executed' | 'command:gitlens.plus.showPlans:executed' | 'command:gitlens.plus.signUp:executed' | 'command:gitlens.plus.startPreviewTrial:executed' | 'command:gitlens.plus.upgrade:executed' | 'command:gitlens.plus.validate:executed' | 'command:gitlens.plus.simulateSubscription:executed' | 'command:gitlens.quickOpenFileHistory:executed' | 'command:gitlens.launchpad.refresh:executed' | 'command:gitlens.graph.refresh:executed' | 'command:gitlens.refreshHover:executed' | 'command:gitlens.reset:executed' | 'command:gitlens.resetAIKey:executed' | 'command:gitlens.resetViewsLayout:executed' | 'command:gitlens.revealCommitInView:executed' | 'command:gitlens.shareAsCloudPatch:executed' | 'command:gitlens.showCommitSearch:executed' | 'command:gitlens.views.searchAndCompare.searchCommits:executed' | 'command:gitlens.showBranchesView:executed' | 'command:gitlens.showCommitDetailsView:executed' | 'command:gitlens.showCommitInView:executed' | 'command:gitlens.showCommitsInView:executed' | 'command:gitlens.showCommitsView:executed' | 'command:gitlens.showContributorsView:executed' | 'command:gitlens.showDraftsView:executed' | 'command:gitlens.showFileHistoryView:executed' | 'command:gitlens.showGraph:executed' | 'command:gitlens.showGraphPage:executed' | 'command:gitlens.showGraphView:executed' | 'command:gitlens.showHomeView:executed' | 'command:gitlens.showAccountView:executed' | 'command:gitlens.showInCommitGraph:executed' | 'command:gitlens.showInCommitGraphView:executed' | 'command:gitlens.showInDetailsView:executed' | 'command:gitlens.showInTimeline:executed' | 'command:gitlens.showLastQuickPick:executed' | 'command:gitlens.showLaunchpad:executed' | 'command:gitlens.showLaunchpadView:executed' | 'command:gitlens.showLineCommitInView:executed' | 'command:gitlens.showLineHistoryView:executed' | 'command:gitlens.openOnlyChangedFiles:executed' | 'command:gitlens.showPatchDetailsPage:executed' | 'command:gitlens.showQuickBranchHistory:executed' | 'command:gitlens.showQuickCommitDetails:executed' | 'command:gitlens.showQuickCommitFileDetails:executed' | 'command:gitlens.showQuickRepoHistory:executed' | 'command:gitlens.showQuickFileHistory:executed' | 'command:gitlens.showQuickRepoStatus:executed' | 'command:gitlens.showQuickRevisionDetails:executed' | 'command:gitlens.showQuickRevisionDetailsInDiffLeft:executed' | 'command:gitlens.showQuickRevisionDetailsInDiffRight:executed' | 'command:gitlens.showQuickStashList:executed' | 'command:gitlens.showRemotesView:executed' | 'command:gitlens.showRepositoriesView:executed' | 'command:gitlens.showSearchAndCompareView:executed' | 'command:gitlens.showSettingsPage:executed' | 'command:gitlens.showSettingsPage!file-annotations:executed' | 'command:gitlens.showSettingsPage!branches-view:executed' | 'command:gitlens.showSettingsPage!commits-view:executed' | 'command:gitlens.showSettingsPage!contributors-view:executed' | 'command:gitlens.showSettingsPage!file-history-view:executed' | 'command:gitlens.showSettingsPage!line-history-view:executed' | 'command:gitlens.showSettingsPage!remotes-view:executed' | 'command:gitlens.showSettingsPage!repositories-view:executed' | 'command:gitlens.showSettingsPage!search-compare-view:executed' | 'command:gitlens.showSettingsPage!stashes-view:executed' | 'command:gitlens.showSettingsPage!tags-view:executed' | 'command:gitlens.showSettingsPage!worktrees-view:executed' | 'command:gitlens.showSettingsPage!views:executed' | 'command:gitlens.showSettingsPage!commit-graph:executed' | 'command:gitlens.showSettingsPage!autolinks:executed' | 'command:gitlens.showStashesView:executed' | 'command:gitlens.showTagsView:executed' | 'command:gitlens.showTimelinePage:executed' | 'command:gitlens.showTimelineView:executed' | 'command:gitlens.showWelcomePage:executed' | 'command:gitlens.showWorktreesView:executed' | 'command:gitlens.showWorkspacesView:executed' | 'command:gitlens.stashApply:executed' | 'command:gitlens.stashSave:executed' | 'command:gitlens.stashSaveFiles:executed' | 'command:gitlens.switchAIModel:executed' | 'command:gitlens.switchMode:executed' | 'command:gitlens.toggleCodeLens:executed' | 'command:gitlens.toggleFileBlame:executed' | 'command:gitlens.toggleFileBlameInDiffLeft:executed' | 'command:gitlens.toggleFileBlameInDiffRight:executed' | 'command:gitlens.toggleFileChanges:executed' | 'command:gitlens.toggleFileChangesOnly:executed' | 'command:gitlens.toggleFileHeatmap:executed' | 'command:gitlens.toggleFileHeatmapInDiffLeft:executed' | 'command:gitlens.toggleFileHeatmapInDiffRight:executed' | 'command:gitlens.launchpad.indicator.toggle:executed' | 'command:gitlens.toggleGraph:executed' | 'command:gitlens.toggleMaximizedGraph:executed' | 'command:gitlens.toggleLineBlame:executed' | 'command:gitlens.toggleReviewMode:executed' | 'command:gitlens.toggleZenMode:executed' | 'command:gitlens.views.copy:executed' | 'command:gitlens.views.copyAsMarkdown:executed' | 'command:gitlens.views.copyUrl:executed' | 'command:gitlens.views.openDirectoryDiff:executed' | 'command:gitlens.views.openDirectoryDiffWithWorking:executed' | 'command:gitlens.views.openUrl:executed' | 'command:gitlens.diffHeadWith:executed' | 'command:gitlens.diffWorkingWith:executed' | 'command:gitlens.openBranchesInRemote:executed' | 'command:gitlens.openBranchInRemote:executed' | 'command:gitlens.openCommitInRemote:executed' | 'command:gitlens.openFileInRemote:executed' | 'command:gitlens.openInRemote:executed' | 'command:gitlens.openRepoInRemote:executed' | 'command:gitlens.showFileHistoryInView:executed' | 'home:walkthrough:dismissed', + 'usage.key': 'graphWebview:shown' | 'patchDetailsWebview:shown' | 'settingsWebview:shown' | 'timelineWebview:shown' | 'graphView:shown' | 'patchDetailsView:shown' | 'timelineView:shown' | 'commitDetailsView:shown' | 'graphDetailsView:shown' | 'homeView:shown' | 'commitsView:shown' | 'stashesView:shown' | 'tagsView:shown' | 'launchpadView:shown' | 'worktreesView:shown' | 'branchesView:shown' | 'contributorsView:shown' | 'draftsView:shown' | 'fileHistoryView:shown' | 'groupedView:shown' | 'lineHistoryView:shown' | 'pullRequestView:shown' | 'remotesView:shown' | 'repositoriesView:shown' | 'searchAndCompareView:shown' | 'workspacesView:shown' | 'rebaseEditor:shown' | 'command:gitlens.action.:executed' | 'command:gitlens.addAuthors:executed' | 'command:gitlens.browseRepoAtRevision:executed' | 'command:gitlens.browseRepoAtRevisionInNewWindow:executed' | 'command:gitlens.browseRepoBeforeRevision:executed' | 'command:gitlens.browseRepoBeforeRevisionInNewWindow:executed' | 'command:gitlens.clearFileAnnotations:executed' | 'command:gitlens.closeUnchangedFiles:executed' | 'command:gitlens.compareWith:executed' | 'command:gitlens.compareHeadWith:executed' | 'command:gitlens.compareWorkingWith:executed' | 'command:gitlens.computingFileAnnotations:executed' | 'command:gitlens.connectRemoteProvider:executed' | 'command:gitlens.copyCurrentBranch:executed' | 'command:gitlens.copyDeepLinkToBranch:executed' | 'command:gitlens.copyDeepLinkToCommit:executed' | 'command:gitlens.copyDeepLinkToComparison:executed' | 'command:gitlens.copyDeepLinkToFile:executed' | 'command:gitlens.copyDeepLinkToFileAtRevision:executed' | 'command:gitlens.copyDeepLinkToLines:executed' | 'command:gitlens.copyDeepLinkToRepo:executed' | 'command:gitlens.copyDeepLinkToTag:executed' | 'command:gitlens.copyDeepLinkToWorkspace:executed' | 'command:gitlens.copyMessageToClipboard:executed' | 'command:gitlens.copyRemoteBranchesUrl:executed' | 'command:gitlens.copyRemoteBranchUrl:executed' | 'command:gitlens.copyRemoteCommitUrl:executed' | 'command:gitlens.copyRemoteComparisonUrl:executed' | 'command:gitlens.copyRemoteFileUrlToClipboard:executed' | 'command:gitlens.copyRemoteFileUrlWithoutRange:executed' | 'command:gitlens.copyRemoteFileUrlFrom:executed' | 'command:gitlens.copyRemotePullRequestUrl:executed' | 'command:gitlens.copyRemoteRepositoryUrl:executed' | 'command:gitlens.copyShaToClipboard:executed' | 'command:gitlens.copyRelativePathToClipboard:executed' | 'command:gitlens.applyPatchFromClipboard:executed' | 'command:gitlens.pastePatchFromClipboard:executed' | 'command:gitlens.copyPatchToClipboard:executed' | 'command:gitlens.copyWorkingChangesToWorktree:executed' | 'command:gitlens.createPatch:executed' | 'command:gitlens.createCloudPatch:executed' | 'command:gitlens.createPullRequestOnRemote:executed' | 'command:gitlens.diffDirectory:executed' | 'command:gitlens.diffDirectoryWithHead:executed' | 'command:gitlens.diffFolderWithRevision:executed' | 'command:gitlens.diffFolderWithRevisionFrom:executed' | 'command:gitlens.diffWith:executed' | 'command:gitlens.diffWithNext:executed' | 'command:gitlens.diffWithNextInDiffLeft:executed' | 'command:gitlens.diffWithNextInDiffRight:executed' | 'command:gitlens.diffWithPrevious:executed' | 'command:gitlens.diffWithPreviousInDiffLeft:executed' | 'command:gitlens.diffWithPreviousInDiffRight:executed' | 'command:gitlens.diffLineWithPrevious:executed' | 'command:gitlens.diffWithRevision:executed' | 'command:gitlens.diffWithRevisionFrom:executed' | 'command:gitlens.diffWithWorking:executed' | 'command:gitlens.diffWithWorkingInDiffLeft:executed' | 'command:gitlens.diffWithWorkingInDiffRight:executed' | 'command:gitlens.diffLineWithWorking:executed' | 'command:gitlens.disconnectRemoteProvider:executed' | 'command:gitlens.disableDebugLogging:executed' | 'command:gitlens.enableDebugLogging:executed' | 'command:gitlens.disableRebaseEditor:executed' | 'command:gitlens.enableRebaseEditor:executed' | 'command:gitlens.externalDiff:executed' | 'command:gitlens.externalDiffAll:executed' | 'command:gitlens.fetchRepositories:executed' | 'command:gitlens.generateCommitMessage:executed' | 'command:gitlens.getStarted:executed' | 'command:gitlens.gk.switchOrganization:executed' | 'command:gitlens.inviteToLiveShare:executed' | 'command:gitlens.openBlamePriorToChange:executed' | 'command:gitlens.openBranchesOnRemote:executed' | 'command:gitlens.openBranchOnRemote:executed' | 'command:gitlens.openCurrentBranchOnRemote:executed' | 'command:gitlens.openChangedFiles:executed' | 'command:gitlens.openCommitOnRemote:executed' | 'command:gitlens.openComparisonOnRemote:executed' | 'command:gitlens.openFileHistory:executed' | 'command:gitlens.openFileFromRemote:executed' | 'command:gitlens.openFileOnRemote:executed' | 'command:gitlens.openFileOnRemoteFrom:executed' | 'command:gitlens.openFileRevision:executed' | 'command:gitlens.openFileRevisionFrom:executed' | 'command:gitlens.openFolderHistory:executed' | 'command:gitlens.openOnRemote:executed' | 'command:gitlens.openCloudPatch:executed' | 'command:gitlens.openPatch:executed' | 'command:gitlens.openPullRequestOnRemote:executed' | 'command:gitlens.openAssociatedPullRequestOnRemote:executed' | 'command:gitlens.openRepoOnRemote:executed' | 'command:gitlens.openRevisionFile:executed' | 'command:gitlens.openRevisionFileInDiffLeft:executed' | 'command:gitlens.openRevisionFileInDiffRight:executed' | 'command:gitlens.openWalkthrough:executed' | 'command:gitlens.openWorkingFile:executed' | 'command:gitlens.openWorkingFileInDiffLeft:executed' | 'command:gitlens.openWorkingFileInDiffRight:executed' | 'command:gitlens.pullRepositories:executed' | 'command:gitlens.pushRepositories:executed' | 'command:gitlens.gitCommands:executed' | 'command:gitlens.gitCommands.branch:executed' | 'command:gitlens.gitCommands.branch.create:executed' | 'command:gitlens.gitCommands.branch.delete:executed' | 'command:gitlens.gitCommands.branch.prune:executed' | 'command:gitlens.gitCommands.branch.rename:executed' | 'command:gitlens.gitCommands.checkout:executed' | 'command:gitlens.gitCommands.cherryPick:executed' | 'command:gitlens.gitCommands.history:executed' | 'command:gitlens.gitCommands.merge:executed' | 'command:gitlens.gitCommands.rebase:executed' | 'command:gitlens.gitCommands.remote:executed' | 'command:gitlens.gitCommands.remote.add:executed' | 'command:gitlens.gitCommands.remote.prune:executed' | 'command:gitlens.gitCommands.remote.remove:executed' | 'command:gitlens.gitCommands.reset:executed' | 'command:gitlens.gitCommands.revert:executed' | 'command:gitlens.gitCommands.show:executed' | 'command:gitlens.gitCommands.stash:executed' | 'command:gitlens.gitCommands.stash.drop:executed' | 'command:gitlens.gitCommands.stash.list:executed' | 'command:gitlens.gitCommands.stash.pop:executed' | 'command:gitlens.gitCommands.stash.push:executed' | 'command:gitlens.gitCommands.stash.rename:executed' | 'command:gitlens.gitCommands.status:executed' | 'command:gitlens.gitCommands.switch:executed' | 'command:gitlens.gitCommands.tag:executed' | 'command:gitlens.gitCommands.tag.create:executed' | 'command:gitlens.gitCommands.tag.delete:executed' | 'command:gitlens.gitCommands.worktree:executed' | 'command:gitlens.gitCommands.worktree.create:executed' | 'command:gitlens.gitCommands.worktree.delete:executed' | 'command:gitlens.gitCommands.worktree.open:executed' | 'command:gitlens.ghpr.views.openOrCreateWorktree:executed' | 'command:gitlens.plus.cloudIntegrations.connect:executed' | 'command:gitlens.plus.hide:executed' | 'command:gitlens.plus.login:executed' | 'command:gitlens.plus.logout:executed' | 'command:gitlens.plus.manage:executed' | 'command:gitlens.plus.cloudIntegrations.manage:executed' | 'command:gitlens.plus.reactivateProTrial:executed' | 'command:gitlens.plus.resendVerification:executed' | 'command:gitlens.plus.restore:executed' | 'command:gitlens.plus.showPlans:executed' | 'command:gitlens.plus.signUp:executed' | 'command:gitlens.plus.startPreviewTrial:executed' | 'command:gitlens.plus.upgrade:executed' | 'command:gitlens.plus.validate:executed' | 'command:gitlens.plus.simulateSubscription:executed' | 'command:gitlens.quickOpenFileHistory:executed' | 'command:gitlens.launchpad.refresh:executed' | 'command:gitlens.graph.refresh:executed' | 'command:gitlens.refreshHover:executed' | 'command:gitlens.reset:executed' | 'command:gitlens.resetAIKey:executed' | 'command:gitlens.resetViewsLayout:executed' | 'command:gitlens.revealCommitInView:executed' | 'command:gitlens.shareAsCloudPatch:executed' | 'command:gitlens.showCommitSearch:executed' | 'command:gitlens.views.searchAndCompare.searchCommits:executed' | 'command:gitlens.showBranchesView:executed' | 'command:gitlens.showCommitDetailsView:executed' | 'command:gitlens.showCommitInView:executed' | 'command:gitlens.showCommitsInView:executed' | 'command:gitlens.showCommitsView:executed' | 'command:gitlens.showContributorsView:executed' | 'command:gitlens.showDraftsView:executed' | 'command:gitlens.showFileHistoryView:executed' | 'command:gitlens.showGraph:executed' | 'command:gitlens.showGraphPage:executed' | 'command:gitlens.showGraphView:executed' | 'command:gitlens.showHomeView:executed' | 'command:gitlens.showAccountView:executed' | 'command:gitlens.showInCommitGraph:executed' | 'command:gitlens.showInCommitGraphView:executed' | 'command:gitlens.showInDetailsView:executed' | 'command:gitlens.showInTimeline:executed' | 'command:gitlens.showLastQuickPick:executed' | 'command:gitlens.showLaunchpad:executed' | 'command:gitlens.showLaunchpadView:executed' | 'command:gitlens.showLineCommitInView:executed' | 'command:gitlens.showLineHistoryView:executed' | 'command:gitlens.openOnlyChangedFiles:executed' | 'command:gitlens.showPatchDetailsPage:executed' | 'command:gitlens.showQuickBranchHistory:executed' | 'command:gitlens.showQuickCommitDetails:executed' | 'command:gitlens.showQuickCommitFileDetails:executed' | 'command:gitlens.showQuickRepoHistory:executed' | 'command:gitlens.showQuickFileHistory:executed' | 'command:gitlens.showQuickRepoStatus:executed' | 'command:gitlens.showQuickRevisionDetails:executed' | 'command:gitlens.showQuickRevisionDetailsInDiffLeft:executed' | 'command:gitlens.showQuickRevisionDetailsInDiffRight:executed' | 'command:gitlens.showQuickStashList:executed' | 'command:gitlens.showRemotesView:executed' | 'command:gitlens.showRepositoriesView:executed' | 'command:gitlens.showSearchAndCompareView:executed' | 'command:gitlens.showSettingsPage:executed' | 'command:gitlens.showSettingsPage!file-annotations:executed' | 'command:gitlens.showSettingsPage!branches-view:executed' | 'command:gitlens.showSettingsPage!commits-view:executed' | 'command:gitlens.showSettingsPage!contributors-view:executed' | 'command:gitlens.showSettingsPage!file-history-view:executed' | 'command:gitlens.showSettingsPage!line-history-view:executed' | 'command:gitlens.showSettingsPage!remotes-view:executed' | 'command:gitlens.showSettingsPage!repositories-view:executed' | 'command:gitlens.showSettingsPage!search-compare-view:executed' | 'command:gitlens.showSettingsPage!stashes-view:executed' | 'command:gitlens.showSettingsPage!tags-view:executed' | 'command:gitlens.showSettingsPage!worktrees-view:executed' | 'command:gitlens.showSettingsPage!views:executed' | 'command:gitlens.showSettingsPage!commit-graph:executed' | 'command:gitlens.showSettingsPage!autolinks:executed' | 'command:gitlens.showStashesView:executed' | 'command:gitlens.showTagsView:executed' | 'command:gitlens.showTimelinePage:executed' | 'command:gitlens.showTimelineView:executed' | 'command:gitlens.showWorktreesView:executed' | 'command:gitlens.showWorkspacesView:executed' | 'command:gitlens.stashApply:executed' | 'command:gitlens.stashSave:executed' | 'command:gitlens.stashSaveFiles:executed' | 'command:gitlens.switchAIModel:executed' | 'command:gitlens.switchMode:executed' | 'command:gitlens.toggleCodeLens:executed' | 'command:gitlens.toggleFileBlame:executed' | 'command:gitlens.toggleFileBlameInDiffLeft:executed' | 'command:gitlens.toggleFileBlameInDiffRight:executed' | 'command:gitlens.toggleFileChanges:executed' | 'command:gitlens.toggleFileChangesOnly:executed' | 'command:gitlens.toggleFileHeatmap:executed' | 'command:gitlens.toggleFileHeatmapInDiffLeft:executed' | 'command:gitlens.toggleFileHeatmapInDiffRight:executed' | 'command:gitlens.launchpad.indicator.toggle:executed' | 'command:gitlens.toggleGraph:executed' | 'command:gitlens.toggleMaximizedGraph:executed' | 'command:gitlens.toggleLineBlame:executed' | 'command:gitlens.toggleReviewMode:executed' | 'command:gitlens.toggleZenMode:executed' | 'command:gitlens.views.copy:executed' | 'command:gitlens.views.copyAsMarkdown:executed' | 'command:gitlens.views.copyUrl:executed' | 'command:gitlens.views.openDirectoryDiff:executed' | 'command:gitlens.views.openDirectoryDiffWithWorking:executed' | 'command:gitlens.views.openUrl:executed' | 'command:gitlens.diffHeadWith:executed' | 'command:gitlens.diffWorkingWith:executed' | 'command:gitlens.openBranchesInRemote:executed' | 'command:gitlens.openBranchInRemote:executed' | 'command:gitlens.openCommitInRemote:executed' | 'command:gitlens.openFileInRemote:executed' | 'command:gitlens.openInRemote:executed' | 'command:gitlens.openRepoInRemote:executed' | 'command:gitlens.showFileHistoryInView:executed' | 'home:walkthrough:dismissed', 'usage.count': number } ``` @@ -1543,19 +1543,6 @@ or } ``` -### welcome/showAborted - -```typescript -{ - 'duration': number, - 'loading': false | true, - 'context.webview.id': string, - 'context.webview.type': string, - 'context.webview.instanceId': string, - 'context.webview.host': 'editor' | 'view' -} -``` - ### commitDetails/showAborted ```typescript @@ -1621,19 +1608,6 @@ or } ``` -### welcome/shown - -```typescript -{ - 'duration': number, - 'loading': false | true, - 'context.webview.id': string, - 'context.webview.type': string, - 'context.webview.instanceId': string, - 'context.webview.host': 'editor' | 'view' -} -``` - ### home/shown ```typescript diff --git a/package.json b/package.json index e06552eafaabf..aadc0db862e20 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "onWebviewPanel:gitlens.patchDetails", "onWebviewPanel:gitlens.settings", "onWebviewPanel:gitlens.timeline", - "onWebviewPanel:gitlens.welcome", "onStartupFinished" ], "capabilities": { @@ -4898,13 +4897,6 @@ "title": "General", "order": 0, "properties": { - "gitlens.showWelcomeOnInstall": { - "type": "boolean", - "default": true, - "markdownDescription": "Specifies whether to show the Welcome experience on first install", - "scope": "window", - "order": 10 - }, "gitlens.showWhatsNewAfterUpgrades": { "type": "boolean", "default": true, @@ -6075,11 +6067,6 @@ "title": "Show Visual File History View", "category": "GitLens" }, - { - "command": "gitlens.showWelcomePage", - "title": "Welcome", - "category": "GitLens" - }, { "command": "gitlens.showWorktreesView", "title": "Show Worktrees View", @@ -13203,11 +13190,6 @@ "when": "extension =~ /^eamodio.gitlens?$/ && extensionStatus == installed", "group": "9_gitlens@1" }, - { - "command": "gitlens.showWelcomePage", - "when": "extension =~ /^eamodio.gitlens?$/ && extensionStatus == installed", - "group": "9_gitlens@2" - }, { "command": "gitlens.showSettingsPage", "when": "extension =~ /^eamodio.gitlens?$/ && extensionStatus == installed", diff --git a/src/config.ts b/src/config.ts index 4454a05a57078..7beabfe450c2a 100644 --- a/src/config.ts +++ b/src/config.ts @@ -203,7 +203,6 @@ export interface Config { readonly showDetailsView: 'open' | 'selection' | false; }; readonly remotes: RemotesConfig[] | null; - readonly showWelcomeOnInstall: boolean; readonly showWhatsNewAfterUpgrades: boolean; readonly sortBranchesBy: BranchSorting; readonly sortContributorsBy: ContributorSorting; diff --git a/src/constants.commands.ts b/src/constants.commands.ts index c079c984388ec..6e3885245a846 100644 --- a/src/constants.commands.ts +++ b/src/constants.commands.ts @@ -220,7 +220,6 @@ export const enum Commands { ShowTagsView = 'gitlens.showTagsView', ShowTimelinePage = 'gitlens.showTimelinePage', ShowTimelineView = 'gitlens.showTimelineView', - ShowWelcomePage = 'gitlens.showWelcomePage', ShowWorktreesView = 'gitlens.showWorktreesView', ShowWorkspacesView = 'gitlens.showWorkspacesView', StashApply = 'gitlens.stashApply', diff --git a/src/constants.storage.ts b/src/constants.storage.ts index 9fbbd4f107721..2fbf584e66731 100644 --- a/src/constants.storage.ts +++ b/src/constants.storage.ts @@ -19,7 +19,6 @@ export type IntegrationAuthenticationKeys = export const enum SyncedStorageKeys { Version = 'gitlens:synced:version', PreReleaseVersion = 'gitlens:synced:preVersion', - HomeViewWelcomeVisible = 'gitlens:views:welcome:visible', } export type DeprecatedGlobalStorage = { @@ -36,6 +35,8 @@ export type DeprecatedGlobalStorage = { /** @deprecated */ 'home:banners:dismissed': string[]; /** @deprecated */ + pendingWelcomeOnFocus: boolean; + /** @deprecated */ 'plus:discountNotificationShown': boolean; /** @deprecated */ 'plus:migratedAuthentication': boolean; @@ -45,6 +46,8 @@ export type DeprecatedGlobalStorage = { 'views:layout': 'gitlens' | 'scm'; /** @deprecated */ 'views:commitDetails:dismissed': 'sidebar'[]; + /** @deprecated */ + 'views:welcome:visible': boolean; } & { /** @deprecated */ [key in `disallow:connection:${string}`]: any; @@ -54,7 +57,6 @@ export type GlobalStorage = { avatars: [string, StoredAvatar][]; repoVisibility: [string, StoredRepoVisibilityInfo][]; 'deepLinks:pending': StoredDeepLinkContext; - pendingWelcomeOnFocus: boolean; pendingWhatsNewOnFocus: boolean; // Don't change this key name ('premium`) as its the stored subscription 'premium:subscription': Stored; @@ -65,7 +67,6 @@ export type GlobalStorage = { version: string; // Keep the pre-release version separate from the released version preVersion: string; - 'views:welcome:visible': boolean; 'confirm:draft:storage': boolean; 'home:sections:collapsed': string[]; 'home:walkthrough:dismissed': boolean; diff --git a/src/constants.telemetry.ts b/src/constants.telemetry.ts index 597f103911a41..a1beb5712ee6d 100644 --- a/src/constants.telemetry.ts +++ b/src/constants.telemetry.ts @@ -611,7 +611,6 @@ export type Sources = | 'scm-input' | 'subscription' | 'walkthrough' - | 'welcome' | 'worktrees'; export type Source = { diff --git a/src/constants.views.ts b/src/constants.views.ts index 645aaa8d0a472..6c7389f8aede2 100644 --- a/src/constants.views.ts +++ b/src/constants.views.ts @@ -35,7 +35,7 @@ export type GroupableTreeViewTypes = Extract< >; export type GroupableTreeViewIds = TreeViewIds; -export type WebviewTypes = 'graph' | 'patchDetails' | 'settings' | 'timeline' | 'welcome'; +export type WebviewTypes = 'graph' | 'patchDetails' | 'settings' | 'timeline'; export type WebviewIds = `gitlens.${WebviewTypes}`; export type WebviewViewTypes = 'commitDetails' | 'graph' | 'graphDetails' | 'home' | 'patchDetails' | 'timeline'; diff --git a/src/container.ts b/src/container.ts index 3b7ab1840be71..a13b3e7c03ff2 100644 --- a/src/container.ts +++ b/src/container.ts @@ -60,7 +60,6 @@ import { VslsController } from './vsls/vsls'; import { RebaseEditorProvider } from './webviews/rebase/rebaseEditor'; import { registerSettingsWebviewCommands, registerSettingsWebviewPanel } from './webviews/settings/registration'; import { WebviewsController } from './webviews/webviewsController'; -import { registerWelcomeWebviewPanel } from './webviews/welcome/registration'; export type Environment = 'dev' | 'staging' | 'production'; @@ -231,8 +230,6 @@ export class Container { this._disposables.push(settingsPanels); this._disposables.push(registerSettingsWebviewCommands(settingsPanels)); - this._disposables.push(registerWelcomeWebviewPanel(webviews)); - this._disposables.push(new ViewFileDecorationProvider()); const patchDetailsPanels = registerPatchDetailsWebviewPanel(webviews); diff --git a/src/extension.ts b/src/extension.ts index b9fa61912cfd8..b666b56b0cfcb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -149,13 +149,7 @@ export async function activate(context: ExtensionContext): Promise { - if (!e.focused) return; - - disposable.dispose(); - - // If the window is now focused and we are pending the welcome, clear the pending state and show the welcome - if (container.storage.get('pendingWelcomeOnFocus') === true) { - void container.storage.delete('pendingWelcomeOnFocus'); - if (configuration.get('showWelcomeOnInstall')) { - void executeCommand(Commands.ShowWelcomePage); - } - } - }); - container.context.subscriptions.push(disposable); - } - return; } diff --git a/src/telemetry/walkthroughStateProvider.ts b/src/telemetry/walkthroughStateProvider.ts index 9599aa920f00a..d627c17b31663 100644 --- a/src/telemetry/walkthroughStateProvider.ts +++ b/src/telemetry/walkthroughStateProvider.ts @@ -30,7 +30,6 @@ export class WalkthroughStateProvider implements Disposable { private readonly walkthroughByTracking: Partial> = { [`command:${Commands.PlusStartPreviewTrial}:executed`]: WalkthroughContextKeys.GettingStarted, [`command:${Commands.PlusReactivateProTrial}:executed`]: WalkthroughContextKeys.GettingStarted, - [`command:${Commands.ShowWelcomePage}:executed`]: WalkthroughContextKeys.GettingStarted, [`command:${Commands.OpenWalkthrough}:executed`]: WalkthroughContextKeys.GettingStarted, [`command:${Commands.GetStarted}:executed`]: WalkthroughContextKeys.GettingStarted, diff --git a/src/webviews/apps/settings/settings.ts b/src/webviews/apps/settings/settings.ts index 6f45c0112da8b..425e2cb3ca87a 100644 --- a/src/webviews/apps/settings/settings.ts +++ b/src/webviews/apps/settings/settings.ts @@ -17,7 +17,7 @@ import { formatDate, setDefaultDateLocales } from '../shared/date'; import { DOM } from '../shared/dom'; // import { Snow } from '../shared/snow'; import '../shared/components/feature-badge'; -import '../welcome/components/gitlens-logo'; +import '../shared/components/gitlens-logo'; const topOffset = 83; const offset = (new Date().getTimezoneOffset() / 60) * 100; diff --git a/src/webviews/apps/welcome/components/gitlens-logo.ts b/src/webviews/apps/shared/components/gitlens-logo.ts similarity index 100% rename from src/webviews/apps/welcome/components/gitlens-logo.ts rename to src/webviews/apps/shared/components/gitlens-logo.ts diff --git a/src/webviews/apps/shared/styles/properties.scss b/src/webviews/apps/shared/styles/properties.scss index b4bdc21a4eed1..4f4cf0f5625e5 100644 --- a/src/webviews/apps/shared/styles/properties.scss +++ b/src/webviews/apps/shared/styles/properties.scss @@ -1,17 +1,4 @@ :root { --gitlens-gutter-width: 20px; --gk-action-radius: 0.2rem; - --gk-card-radius: 0.4rem; -} - -.vscode-high-contrast, -.vscode-dark { - --gk-card-background: var(--color-background--lighten-05); - --gk-card-hover-background: var(--color-background--lighten-075); -} - -.vscode-high-contrast-light, -.vscode-light { - --gk-card-background: var(--color-background--darken-05); - --gk-card-hover-background: var(--color-background--darken-075); } diff --git a/src/webviews/apps/welcome/components/card.ts b/src/webviews/apps/welcome/components/card.ts deleted file mode 100644 index 631d56f3294f1..0000000000000 --- a/src/webviews/apps/welcome/components/card.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import { focusOutline } from '../../shared/components/styles/lit/a11y.css'; -import { elementBase } from '../../shared/components/styles/lit/base.css'; - -@customElement('gk-card') -export class GKCard extends LitElement { - static override styles = [ - elementBase, - css` - :host { - display: block; - padding: 1.6rem; - background-color: var(--gk-card-background); - border-radius: var(--gk-card-radius); - } - - :host > a { - color: inherit; - text-decoration: none; - } - - :host([tabindex]:not([tabindex='-1'])) { - cursor: pointer; - } - - :host([tabindex]:not([tabindex='-1']):hover) { - background-color: var(--gk-card-hover-background); - } - - :host([tabindex]:not([tabindex='-1']):focus) { - ${focusOutline} - } - - .header { - } - - slot[name='header']::slotted(*) { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .content { - margin-top: 0.4rem; - } - - /* - slot:not([name])::slotted(:first-child) { - margin-top: 0; - } - slot:not([name])::slotted(:last-child) { - margin-bottom: 0; - } */ - `, - ]; - - @property() - href?: string; - - override render() { - const main = html` -
- -
-
- -
- `; - return this.href != null ? html`${main}` : main; - } -} diff --git a/src/webviews/apps/welcome/components/svg-annotations.ts b/src/webviews/apps/welcome/components/svg-annotations.ts deleted file mode 100644 index 6ee0a93d4d3f1..0000000000000 --- a/src/webviews/apps/welcome/components/svg-annotations.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; - -@customElement('gk-annotations-svg') -export class AnnotationsSvg extends LitElement { - static override styles = css` - :host > svg { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - - border: 0.1rem solid var(--vscode-editorWidget-border); - } - - * { - user-select: none; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } - - .line text { - font-family: var(--vscode-editor-font-family); - font-size: var(--vscode-editor-font-size); - font-weight: var(--vscode-editor-font-weight); - } - - .cursor { - fill: var(--vscode-editorCursor-foreground); - } - - .splitter { - stroke: var(--vscode-editorGroup-border); - } - - .punctuation { - fill: var(--vscode-editor-foreground); - } - - .function-declaration { - fill: var(--vscode-symbolIcon-functionForeground); - } - - .function-name { - fill: var(--vscode-symbolIcon-colorForeground); - } - - .function-argument { - fill: var(--vscode-symbolIcon-variableForeground); - } - - .function-argument-type { - fill: var(--vscode-symbolIcon-typeParameterForeground); - } - - .function-return { - fill: var(--vscode-debugTokenExpression-name); - } - - .line-current { - fill: var(--vscode-editor-lineHighlightBackground); - stroke: var(--vscode-editor-lineHighlightBorder); - stroke-width: 0.1rem; - fill-opacity: 0.8; - } - - .line-number { - fill: var(--vscode-editorLineNumber-foreground); - } - - .line-number-active { - fill: var(--vscode-editorLineNumber-activeForeground); - } - - .gutter { - fill: var(--vscode-gitlens-gutterBackgroundColor); - } - - .gutter-avatar circle { - fill: var(--vscode-editorInfo-foreground); - } - .gutter-avatar text { - fill: var(--vscode-gitlens-gutterForegroundColor); - font-size: 0.75rem; - } - - .gutter-text { - fill: var(--vscode-gitlens-gutterForegroundColor); - } - - .heatmap { - stroke: #7162db; - } - - .annotations-left { - transition: opacity 150ms ease-in-out; - } - - .annotations-right { - transition: transform 150ms ease-in-out; - } - - :host(:not([toggled])) .annotations-left { - opacity: 0; - } - :host(:not([toggled])) .annotations-right { - transform: translateX(-242px); - } - `; - - @property({ type: Boolean, reflect: true }) - toggled?: boolean; - - override render() { - return html` - - - - - - 12 - 13 - - - - - - - EA - - Hello GitLens6 yrs ago - - - EA - - Supercharged6 yrs ago - - - - - - functiongitlens(git:object){ - returnsupercharged(git);| - - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-blame.ts b/src/webviews/apps/welcome/components/svg-blame.ts deleted file mode 100644 index 59363b23a6369..0000000000000 --- a/src/webviews/apps/welcome/components/svg-blame.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; - -@customElement('gk-blame-svg') -export class BlameSvg extends LitElement { - static override styles = css` - :host { - position: relative; - - --gl-svg-indicator-color: var( - --vscode-activityBarBadge-background, - dodgerblue - ); //color-mix(in srgb, var(--vscode-activityBarBadge-background) 90%, white); - --gl-svg-indicator-size: 2.5; - --gl-svg-indicator-pulse-size: 12; // calc(var(--gl-svg-indicator-size, 3) * 4); - } - - :host svg:last-child { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - - border: 0.1rem solid var(--vscode-editorWidget-border); - } - - * { - user-select: none; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } - - .line text { - font-family: var(--vscode-editor-font-family); - font-size: var(--vscode-editor-font-size); - font-weight: var(--vscode-editor-font-weight); - } - - .cursor { - fill: var(--vscode-editorCursor-foreground); - } - - .splitter { - stroke: var(--vscode-editorGroup-border); - } - - .punctuation { - fill: var(--vscode-editor-foreground); - } - - .function-declaration { - fill: var(--vscode-symbolIcon-functionForeground); - } - - .function-name { - fill: var(--vscode-symbolIcon-colorForeground); - } - - .function-argument { - fill: var(--vscode-symbolIcon-variableForeground); - } - - .function-argument-type { - fill: var(--vscode-symbolIcon-typeParameterForeground); - } - - .function-return { - fill: var(--vscode-debugTokenExpression-name); - } - - .line-current { - fill: var(--vscode-editor-lineHighlightBackground); - stroke: var(--vscode-editor-lineHighlightBorder); - stroke-width: 0.1rem; - fill-opacity: 0.8; - } - - .line-number { - fill: var(--vscode-editorLineNumber-foreground); - } - - .line-number-active { - fill: var(--vscode-editorLineNumber-activeForeground); - } - - .blame { - fill: var(--vscode-gitlens-trailingLineForegroundColor); - cursor: pointer; - } - - .codelens text { - font-family: var(--vscode-font-family); - font-size: var(--vscode-font-size); - font-weight: var(--vscode-font-weight); - - fill: var(--vscode-editorCodeLens-foreground); - } - .codelens text tspan { - font-size: 0.8em; - } - - .hover { - opacity: 0; - visibility: hidden; - position: absolute; - bottom: 30px; - right: -30px; - animation-duration: 0.25s; - animation-timing-function: ease-in-out; - animation-fill-mode: both; - } - - .hover rect { - fill: var(--vscode-editorHoverWidget-background); - stroke: var(--vscode-editorHoverWidget-border); - stroke-width: 1; - } - - .hover line { - stroke: var(--vscode-editorHoverWidget-border); - stroke-width: 1; - } - - .hover text { - font-family: var(--vscode-font-family); - font-weight: var(--vscode-font-weight); - font-size: 1.1rem; - - fill: var(--vscode-editorHoverWidget-foreground); - } - - .hover__diff tspan { - font-family: var(--vscode-editor-font-family); - font-weight: var(--vscode-editor-font-weight); - font-size: var(--vscode-editor-font-size); - } - - .hover__diff-removed { - fill: var(--vscode-gitDecoration-deletedResourceForeground); - } - - .hover__diff-added { - fill: var(--vscode-gitDecoration-addedResourceForeground); - } - - .hover__author { - font-weight: 700; - } - - .hover__date { - font-style: italic; - } - - .hover__link { - fill: #3794ff !important; - } - - @keyframes fadeInHover { - 0% { - opacity: 0; - visibility: visible; - } - - 100% { - opacity: 1; - visibility: visible; - } - } - - @keyframes fadeOutHover { - 0% { - opacity: 1; - visibility: visible; - } - - 100% { - opacity: 0; - visibility: hidden; - } - } - - :host([hovering]) { - z-index: 1000; - } - :host([hovered][hovering]) .hover { - animation-name: fadeInHover; - } - - :host([hovered]:not([hovering])) .hover { - animation-name: fadeOutHover; - } - - .blame, - .codelens { - transition: opacity 150ms ease-in-out; - } - - :host(:not([inline])) .blame, - :host(:not([codelens])) .codelens { - cursor: default; - opacity: 0; - } - - circle.indicator { - fill: var(--gl-svg-indicator-color); - stroke: var(--gl-svg-indicator-color); - stroke-width: 1; - r: var(--gl-svg-indicator-size); - pointer-events: none; - } - - circle.indicator--pulse { - animation: 1.05s ease 0s infinite normal none running pulse; - } - - @keyframes pulse { - 0% { - stroke-width: 1; - opacity: 1; - } - 100% { - stroke-width: var(--gl-svg-indicator-pulse-size, 12); - opacity: 0; - } - } - `; - - @property({ type: Boolean, reflect: true }) - inline?: boolean; - - @property({ type: Boolean, reflect: true }) - codelens?: boolean; - - @property({ type: Boolean, reflect: true }) - hovered?: boolean; - - @property({ type: Boolean, reflect: true }) - hovering?: boolean; - - protected onMouseOver() { - this.hovered = true; - this.hovering = this.inline; - } - - protected onMouseOut() { - this.hovered = true; - this.hovering = false; - } - - override render() { - return html` - - - - - - - You, 6 years ago via PR #1(November 12th, 2016 3:41pm)Supercharge Git - - - - - - 29ad3a0|||| - - - - - - - return git; - + return supercharged(git); - - - - - - Changes3ac1d3f29ad3a0| - - - - - - - - Eric Amodio, 3 minutes ago | 1 author (Eric Amodio) - - - 13returnsupercharged(git);|You, 6 years ago via PR #1 • Supercharge Git - - - - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-editor-toolbar.ts b/src/webviews/apps/welcome/components/svg-editor-toolbar.ts deleted file mode 100644 index c45336f536e32..0000000000000 --- a/src/webviews/apps/welcome/components/svg-editor-toolbar.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { css, html, LitElement, svg } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import type { AnnotationsSvg } from './svg-annotations'; -import type { RevisionNavigationSvg } from './svg-revision-navigation'; - -@customElement('gk-editor-toolbar-svg') -export class EditorToolbarSvg extends LitElement { - static override styles = css` - :host { - --gl-svg-indicator-color: var( - --vscode-activityBarBadge-background, - dodgerblue - ); //color-mix(in srgb, var(--vscode-activityBarBadge-background) 90%, white); - --gl-svg-indicator-size: 2.5; - --gl-svg-indicator-pulse-size: 12; // calc(var(--gl-svg-indicator-size, 3) * 4); - } - - :host > svg { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - - fill: var(--vscode-menu-background); - } - - * { - user-select: none; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } - - .interactive { - cursor: pointer; - } - - .icon { - fill: var(--vscode-icon-foreground); - font-size: 16px; - } - - .icon.active { - fill: var(--color-foreground); - } - - .icon.inactive { - opacity: 0.6; - } - - .icon__annotations circle { - fill: #f05133; - stroke: none; - } - - .icon__annotations path { - fill: var(--vscode-menu-background); - } - - :host([revision-toggled]) .icon__revision-bg { - fill: var(--color-foreground); - opacity: 0.2; - } - :host(:not([revision-toggled])) .icon__revision-bg { - fill: none; - } - - circle.indicator { - fill: var(--gl-svg-indicator-color); - stroke: var(--gl-svg-indicator-color); - stroke-width: 1; - r: var(--gl-svg-indicator-size); - pointer-events: none; - } - - circle.indicator--pulse { - animation: 1.05s ease 0s infinite normal none running pulse; - } - - @keyframes pulse { - 0% { - stroke-width: 1; - opacity: 1; - } - 100% { - stroke-width: var(--gl-svg-indicator-pulse-size, 12); - opacity: 0; - } - } - `; - - @property({ type: Boolean, reflect: true }) - annotations?: boolean; - - @property({ type: Boolean, reflect: true }) - revision?: boolean; - - @property({ type: Boolean, reflect: true, attribute: 'annotations-toggled' }) - annotationsToggled?: boolean; - - @property({ type: Boolean, reflect: true, attribute: 'revision-toggled' }) - revisionToggled?: boolean; - - protected onClick(e: Event) { - const feature = (e.target as HTMLElement).dataset.feature; - switch (feature) { - case 'annotations': { - this.annotationsToggled = !this.annotationsToggled; - const $el = document.getElementById('annotations') as AnnotationsSvg; - $el.toggled = !$el.toggled; - - break; - } - case 'revision': { - this.revisionToggled = !this.revisionToggled; - const $el = document.getElementById('revision') as RevisionNavigationSvg; - $el.toggled = !$el.toggled; - - break; - } - } - - this.dispatchEvent(new CustomEvent('click')); - } - - override render() { - return html` - - - - ${this.revision ? svg`` : ''} - - - - - - - - ${this.annotationsToggled - ? svg` - - - ` - : svg``} - - ${this.revision - ? svg` - ${ - this.revisionToggled - ? 'Click to reset simulated revision navigation below\nShowing diff with revision (simulated)' - : 'Click to simulate revision navigation below\nShowing original (simulated)' - } - - - ` - : ''} - ${this.annotations - ? svg` - ${ - this.annotationsToggled - ? 'Click to simulate toggling the annotation below\nFile annotations are on (simulated)' - : 'Click to simulate toggling the annotation below\nFile annotations are off (simulated)' - } - - - ` - : ''} - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-focus.ts b/src/webviews/apps/welcome/components/svg-focus.ts deleted file mode 100644 index 222f20358e7e2..0000000000000 --- a/src/webviews/apps/welcome/components/svg-focus.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; -import { icons, svgBase } from './svg.css'; - -@customElement('gk-focus-svg') -export class BlameSvg extends LitElement { - static override styles = [ - svgBase, - icons, - css` - text { - fill: var(--vscode-foreground); - font-size: 18px; - } - .heading { - font-weight: 600; - font-size: 20px; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } - .indicator-info { - fill: var(--vscode-problemsInfoIcon-foreground); - } - .indicator-warning { - fill: var(--vscode-problemsWarningIcon-foreground); - } - .indicator-error { - fill: var(--vscode-problemsErrorIcon-foreground); - } - .tabs { - } - .tab { - text-decoration: underline; - opacity: 0.8; - font-size: 16px; - cursor: pointer; - } - .row-box { - fill: var(--vscode-foreground); - opacity: 0; - } - .row:hover .row-box { - opacity: 0.06; - } - .link { - fill: var(--vscode-textLink-foreground); - cursor: pointer; - } - .link:hover { - text-decoration: underline; - } - .addition { - fill: var(--vscode-gitDecoration-addedResourceForeground); - } - .deletion { - fill: var(--vscode-gitDecoration-deletedResourceForeground); - } - `, - ]; - - override render() { - return html` - - - - - - My Pull Requests - - - All - Opened by me - Assigned to me - Needs my review - Mentions me - - - - - - - - 1wk - adds stylelint - #2453 - - - - +1735 - -748 - - - - - - - - - 1wk - Workspaces side bar view - #2650 - - - - +3,556 - -136 - - - - - - - - - 3wk - Adds experimental.OpenAIModel - #2637 - - - - +79 - -12 - - - - - - - - 2mo - adds focus view - #2516 - - - - +3,327 - -28 - - - - - - My Issues - - - All - Opened by me - Assigned to me - Mentions me - - - - - - - 2mo - Labs: add AI explain panel to Inspect - #2628 - - - - - - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-graph.ts b/src/webviews/apps/welcome/components/svg-graph.ts deleted file mode 100644 index c5aff054830df..0000000000000 --- a/src/webviews/apps/welcome/components/svg-graph.ts +++ /dev/null @@ -1,192 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; - -@customElement('gk-graph-svg') -export class GraphSvg extends LitElement { - static override styles = css` - :host > svg { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - - border: 0.1rem solid var(--vscode-editorWidget-border); - fill: var(--vscode-editor-background); - } - - * { - user-select: none; - } - - text { - font-family: var(--vscode-font-family); - font-weight: var(--vscode-font-weight); - font-size: 1.1rem; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .foreground { - fill: var(--vscode-editor-foreground); - } - - .branch { - fill: white; - } - - .branch-current { - font-weight: 700 !important; - } - - .messages { - opacity: 0.7; - } - - .authors { - opacity: 0.45; - } - - .wip { - opacity: 0.45; - } - - .lane1-foreground { - stroke: var(--vscode-gitlens-graphLane1Color); - } - .lane1-background { - fill: var(--vscode-gitlens-graphLane1Color); - } - - .lane2-foreground { - stroke: var(--vscode-gitlens-graphLane2Color); - } - .lane2-background { - fill: var(--vscode-gitlens-graphLane2Color); - } - - .lane3-foreground { - stroke: var(--vscode-gitlens-graphLane3Color); - } - .lane3-background { - fill: var(--vscode-gitlens-graphLane3Color); - } - - .lane4-foreground { - stroke: var(--vscode-gitlens-graphLane4Color); - } - .lane4-background { - fill: var(--vscode-gitlens-graphLane4Color); - } - - .lane5-foreground { - stroke: var(--vscode-gitlens-graphLane5Color); - } - .lane5-background { - fill: var(--vscode-gitlens-graphLane5Color); - } - `; - - override render() { - return html` - - - - - main - - - feature/onboard - - - feature/graph - - - bug/crash - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Work in progress21 - - Improves performance & reduces bundle size - Adds brand new welcome experience - Adds new Commit Graph panel layout - Optimizes startup performance - Revamps Home view experience for better utility - Optimizes Commit Graph loading performance - Adds new GitLens Inspect side bar for a better experience - Fixes crash when run on a phone - Updates package dependencies - - - - Eric Amodio - Keith Daulton - Eric Amodio - Ramin Tadayon - Keith Daulton - Eric Amodio - Keith Daulton - Ramin Tadayon - Ramin Tadayon - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-launchpad.ts b/src/webviews/apps/welcome/components/svg-launchpad.ts deleted file mode 100644 index 7f131f48cc8e6..0000000000000 --- a/src/webviews/apps/welcome/components/svg-launchpad.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; -import { svgBase } from './svg.css'; - -@customElement('gk-launchpad-quickpick-svg') -export class GLLaunchpadQuickpickSvg extends LitElement { - static override styles = [ - svgBase, - css` - :host > svg { - border: none; - } - `, - ]; - override render() { - return html` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`; - } -} diff --git a/src/webviews/apps/welcome/components/svg-revision-navigation.ts b/src/webviews/apps/welcome/components/svg-revision-navigation.ts deleted file mode 100644 index 2f827bc72c6b4..0000000000000 --- a/src/webviews/apps/welcome/components/svg-revision-navigation.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; - -@customElement('gk-revision-navigation-svg') -export class RevisionNavigationSvg extends LitElement { - static override styles = css` - :host > svg { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - - border: 0.1rem solid var(--vscode-editorWidget-border); - } - - * { - user-select: none; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } - - .line text { - font-family: var(--vscode-editor-font-family); - font-size: var(--vscode-editor-font-size); - font-weight: var(--vscode-editor-font-weight); - } - - .cursor { - fill: var(--vscode-editorCursor-foreground); - } - - .punctuation { - fill: var(--vscode-editor-foreground); - } - - .function-declaration { - fill: var(--vscode-symbolIcon-functionForeground); - } - - .function-name { - fill: var(--vscode-symbolIcon-colorForeground); - } - - .function-argument { - fill: var(--vscode-symbolIcon-variableForeground); - } - - .function-argument-type { - fill: var(--vscode-symbolIcon-typeParameterForeground); - } - - .function-return { - fill: var(--vscode-debugTokenExpression-name); - } - - .line-current { - fill: var(--vscode-editor-lineHighlightBackground); - stroke: var(--vscode-editor-lineHighlightBorder); - stroke-width: 0.1rem; - fill-opacity: 0.8; - } - - .line-number { - fill: var(--vscode-editorLineNumber-foreground); - } - - .line-number-active { - fill: var(--vscode-editorLineNumber-activeForeground); - } - - .splitter { - stroke: var(--vscode-editorGroup-border); - } - - .added-line { - fill: var(--vscode-diffEditor-insertedLineBackground); - } - - .removed-line { - fill: var(--vscode-diffEditor-removedLineBackground); - } - - .added-text { - outline: 1px solid green; - fill: green; - } - - .revision-left { - transition: opacity 150ms ease-in-out; - } - - .revision-right { - transition: transform 150ms ease-in-out; - } - - :host(:not([toggled])) .revision-left { - opacity: 0; - } - :host(:not([toggled])) .revision-right { - transform: translateX(-283px); - } - :host(:not([toggled])) .revision-right .added-text { - outline-color: transparent; - fill: inherit; - } - `; - - @property({ type: Boolean, reflect: true }) - toggled?: boolean; - - override render() { - return html` - - - - - - - - - - - - - - - - 12functiongitlens(git:object){ - 13returnsupercharged(git); - - - - - - 12functiongitlens(git:object){ - 13returnsuperDuperCharged(git);| - - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-timeline.ts b/src/webviews/apps/welcome/components/svg-timeline.ts deleted file mode 100644 index 634919247f7ed..0000000000000 --- a/src/webviews/apps/welcome/components/svg-timeline.ts +++ /dev/null @@ -1,211 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; - -@customElement('gk-timeline-svg') -export class TimelineSvg extends LitElement { - static override styles = css` - :host { - --color-lane1: #7101ff; - --color-lane2: #f90; - } - - :host > svg { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - - border: 0.1rem solid var(--vscode-editorWidget-border); - } - - * { - user-select: none; - } - - .additions line { - stroke: var(--vscode-gitlens-decorations-addedForegroundColor, #339e3e); - stroke-width: 1.2; - } - - .deletions line { - stroke: var(--vscode-gitlens-decorations-deletedForegroundColor, #9e2716); - stroke-width: 1.2; - } - - .grid-line { - stroke: var(--vscode-editorWidget-border, #474747); - stroke-dasharray: 4.5 4.5; - } - - .lane1 circle { - fill: var(--color-lane1); - opacity: 0.3; - } - - .lane1 circle:hover { - cursor: pointer; - opacity: 0.8; - } - - .lane2 circle { - fill: var(--color-lane2); - opacity: 0.3; - } - - .lane2 circle:hover { - cursor: pointer; - opacity: 0.8; - } - - :host-context(.vscode-light), - :host-context(.vscode-high-contrast-light) { - --color-lane1: #007acc; - --color-lane2: #ea5c00; - } - `; - - override render() { - return html` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg-workspaces.ts b/src/webviews/apps/welcome/components/svg-workspaces.ts deleted file mode 100644 index bbc34611b8921..0000000000000 --- a/src/webviews/apps/welcome/components/svg-workspaces.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; -import { icons, svgBase } from './svg.css'; - -@customElement('gk-workspaces-svg') -export class BlameSvg extends LitElement { - static override styles = [ - svgBase, - icons, - css` - text { - fill: var(--vscode-foreground); - font-size: 18px; - } - .header { - font-weight: 700; - } - - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - font-size: 20px; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } - .desc { - font-size: 0.9em; - opacity: 0.6; - } - .small { - font-size: 0.9em; - } - .header-box { - fill: var(--vscode-sideBarSectionHeader-background); - } - .row-box { - fill: var(--vscode-list-hoverBackground); - opacity: 0; - } - .row { - cursor: pointer; - } - .row:hover .row-box { - opacity: 1; - } - .row-box-selected { - fill: var(--vscode-list-activeSelectionBackground); - stroke: var(--vscode-list-focusOutline); - stroke-width: 1; - } - .selected { - fill: var(--vscode-list-activeSelectionForeground); - } - .row:not(:hover) .row-actions { - display: none; - } - .link { - fill: var(--vscode-textLink-foreground); - } - .link:hover { - text-decoration: underline; - } - .addition { - fill: var(--vscode-gitDecoration-addedResourceForeground); - } - .deletion { - fill: var(--vscode-gitDecoration-deletedResourceForeground); - } - `, - ]; - - override render() { - return html` - - - - - - - - GITKRAKEN WORKSPACES - - - - - - - - Client apps - - - - - - - - - - - - - vscode-gitlens - 0 - - 1 - - - main - - Last fetched 6/9/23 - - - - - - - - - - - - - - GitKraken - 1 - - 0 - - - development - - Last fetched 6/7/23 - - - - - - - - - - - - - - Backend services - - - - - - - - - - - - - Open source projects - - - - - - - - - `; - } -} diff --git a/src/webviews/apps/welcome/components/svg.css.ts b/src/webviews/apps/welcome/components/svg.css.ts deleted file mode 100644 index 46dd5eaacde58..0000000000000 --- a/src/webviews/apps/welcome/components/svg.css.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { css } from 'lit'; - -export const svgBase = css` - :host { - display: block; - max-width: 69.2rem; - width: calc(100% - 2rem); - margin: 0 1rem 1.3rem; - } - :host > svg { - width: 100%; - height: auto; - border: 0.1rem solid var(--vscode-editorWidget-border); - fill: var(--vscode-editor-background); - } - - * { - user-select: none; - } -`; - -export const icons = css` - .codicon { - font-family: codicon; - cursor: default; - user-select: none; - } - - .glicon { - font-family: glicons; - cursor: default; - user-select: none; - } -`; diff --git a/src/webviews/apps/welcome/components/video-button.ts b/src/webviews/apps/welcome/components/video-button.ts deleted file mode 100644 index fa997f104999b..0000000000000 --- a/src/webviews/apps/welcome/components/video-button.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { customElement, property } from 'lit/decorators.js'; -import { elementBase } from '../../shared/components/styles/lit/base.css'; -import '../../shared/components/overlays/tooltip'; - -@customElement('video-button') -export class VideoButton extends LitElement { - static override styles = [ - elementBase, - css` - :host { - --video-button-background: #01000a; - --video-button-foreground: #fff; - display: block; - } - - .video-button { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - background-color: var(--video-button-background); - padding: 0 2rem 0 1rem; - color: var(--video-button-foreground); - transition: background-color ease-in-out 150ms; - border-radius: 0.4rem; - position: relative; - overflow: hidden; - height: 70px; - text-decoration: none; - } - - .video-button .play { - transform: scale(1.2); - transition: transform ease-in-out 150ms; - } - .video-button:hover .play { - transform: scale(1.4); - } - - .background { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - width: 100%; - height: 100%; - object-fit: cover; - object-position: center; - transition: transform ease-in-out 150ms; - } - .video-button:hover .background { - transform: translateX(-3px) scale(1.05); - } - - .background__base { - fill: var(--video-button-background); - transition: fill ease-in-out 150ms; - } - .video-button:hover .background__base { - opacity: 0.5; - } - - .title { - /* position: absolute; */ - align-self: center; - color: var(--video-button-foreground); - font-weight: 400; - text-shadow: - 0 0 5px rgba(0, 0, 0, 1), - 0 0 10px rgba(0, 0, 0, 1), - 0 0 15px rgba(0, 0, 0, 1); - transform: scale(1.2); - transform-origin: left; - transition: transform ease-in-out 150ms; - z-index: 1; - } - .video-button:hover .title { - transform: scale(1.4); - } - `, - ]; - - @property({ reflect: true }) - src: string | undefined; - - override render() { - return html` - Video thumbnail - Tutorial Video - - - - - - - `; - } -} diff --git a/src/webviews/apps/welcome/welcome.html b/src/webviews/apps/welcome/welcome.html deleted file mode 100644 index bd247d80a2cb1..0000000000000 --- a/src/webviews/apps/welcome/welcome.html +++ /dev/null @@ -1,808 +0,0 @@ - - - - - - - - - -
-

Git Supercharged

-

- Version - - Release notes -

-
-
-
-

- Supercharge Git and unlock untapped knowledge within your repository to better - understand, write, and review code. Focus, - collaborate, accelerate. -

- -
-
-
-

Get Started

-

- GitLens is powerful, feature rich, and highly - customizable to meet your needs. Check out our tutorial video and walkthrough - to get started. -

-

- - Get Started Walkthrough - -

- -

- - - -

- -
-

Unlock the full power of GitLens

-

- Start Pro trial -  or - sign in -

-
-
- -
-

Powerful Features

-
-

- All features are free to use on all repos, except for - features, which require a - trial or paid plan. -

-
- -
-

- - -
- Enables or disables Inline Blame -
- Toggle to see it in action below -
and -
- Enables or disables Git CodeLens -
- Toggle to see it in action below -
-

-

- Gain a deeper understanding of how code changed and by whom through in-editor code - annotations and rich hovers. -

- - - -

- Want more control? - Use the interactive -  GitLens Settings - editor to customize GitLens to meet your needs -

-
- -
-

File Annotations

-

- Use on-demand whole file annotations to see authorship, recent changes, and a - heatmap. - -

- -
- -
-

Revision Navigation

-

- Effortlessly explore the history of a file to see how the code evolved over time. - -

- -
- -
-

- Commit Graph -

-

Easily visualize your repository and keep track of all work in progress.

-

- Use the rich commit search to find exactly what you're looking for. Its powerful filters - allow you to search by a specific commit, message, author, a changed file or files, or even - a specific code change. - Learn more -

- -
- -
-

Side Bar Views

-

Powerful views into Git that don't come in the box.

- -

- Features which need a repository are currently - unavailable -

-
- -
-

- Launchpad -

-

- Use Launchpad to bring all of your GitHub pull requests into a unified, actionable list to - better track work in progress, pending work, reviews, and more. Stay focused and take action - on the most important items to keep your team unblocked. - Learn more -

- -
- -
-

- Code Suggest - Code Suggest - -

-

- Liberate your code reviews from GitHub's restrictive, comment-only feedback style. Like - suggesting changes on a Google-doc, suggest code changes from where you're already coding — - your IDE and on anything in your project, not just on the lines of code changed in the PR. - Learn more -

-
- -
-

- Cloud Patches - Cloud Patches - -

-

- Easily and securely share code changes with your teammates or other developers by creating a - Cloud Patch from your WIP, commit or stash and sharing the generated link. Use Cloud Patches - to collaborate early for feedback on direction, approach, and more, to minimize rework and - streamline your workflow. - Learn more -

-
- -
-

- Worktrees - -

-

- Efficiently multitask by minimizing the context switching between branches, allowing you to - easily work on different branches of a repository simultaneously. Avoid interrupting your - work in progress when needing to review a pull request. Simply create a new worktree and - open it in a new VS Code window, all without impacting your work in progress. -

-
- -
-

- GitKraken (GK) Workspaces - -

-

- Leverage workspaces to easily group and manage multiple repositories together, accessible - from anywhere, streamlining your workflow. Create workspaces just for yourself or share - (coming soon in GitLens) them with your team for faster onboarding and better collaboration. - Learn more -

- - -
- -
-

- Visual File History - -

-

- Quickly see the evolution of a file, including when changes were made, how large they were, - and who made them. Use it to quickly find when the most impactful changes were made to a - file or who best to talk to about file changes and more. -

- -
- -
-

Integrations

-

- Simplify your workflow and quickly gain insights with automatic linking of issues and pull - requests across multiple Git hosting platforms including GitHub, GitHub Enterprise - , GitLab, GitLab self-managed - , Gitea, Gerrit, Google Source, Bitbucket, - Bitbucket Server, Azure DevOps, and custom servers. -

-

- All integration provide automatic linking, while rich integrations with GitHub & GitLab - offer detailed hover information for autolinks, and correlations between pull requests, - branches, and commits, as well as user avatars for added context. -

-

- Define your own autolinks -
- Use autolinks to linkify external references, like Jira issues or Zendesk tickets, in commit - messages. -

- Configure Autolinks -
- -
-

GitKraken Labs

-

- Our incubator for experimentation and exploration with the community to gather early - reactions and feedback. Below are some of our current experiments. -

-

- Explain Commit (AI) -
- Use the Explain panel on the - Inspect view - to leverage AI to help you understand the changes introduced by a commit. -

-

- Automatically Generate Commit Message (AI) -
- Use the - Generate Commit Message - command from the Source Control view's context menu to automatically generate a commit - message for your staged changes by leveraging AI. -

-
-
-
- -
-
-

Get Started

-

- GitLens is powerful, feature rich, and highly - customizable to meet your needs. Check out our tutorial video and walkthrough - to get started. -

-

- Get Started Walkthrough -

- - - -
-

Unlock the full power of GitLens

-

- Start Pro Trial -  or - sign in -

-
-
- -
-

Quick Access

-

- Features which need a repository are currently - unavailable -

- - - - -
- -
-

Companion Tools

-

Supercharge GitLens with our other dev tools

- -
- -
-

Resources

- -
-
-
- #{endOfBody} - - diff --git a/src/webviews/apps/welcome/welcome.scss b/src/webviews/apps/welcome/welcome.scss deleted file mode 100644 index a7dd0447c594c..0000000000000 --- a/src/webviews/apps/welcome/welcome.scss +++ /dev/null @@ -1,584 +0,0 @@ -@use '../shared/styles/utils'; -@use '../shared/styles/properties'; -@use '../shared/styles/normalize'; -@use '../shared/styles/theme'; - -.vscode-high-contrast, -.vscode-dark { - --promo-banner-dark-display: inline-block; -} - -.vscode-high-contrast-light, -.vscode-light { - --promo-banner-light-display: inline-block; -} - -// normalize type -body { - line-height: 1.4; - --gl-indicator-size: 0.6rem; -} - -a { - text-decoration: none; - - &:hover { - text-decoration: underline; - } -} - -a.muted { - color: var(--color-foreground); -} - -a, -button:not([disabled]), -[tabindex]:not([tabindex='-1']) { - &:focus { - @include utils.focus(); - } -} - -nav { - margin-bottom: 1.6rem; -} - -h1, -h2, -p { - margin-top: 0; -} - -h2 { - font-size: 1.8rem; - margin-top: 3.2rem; - margin-bottom: 0.6rem; - - &:first-child { - margin-top: 0; - } -} - -h3 { - margin-top: 3.2rem; - margin-bottom: 0.4rem; - font-size: 1.6rem; - font-weight: 600; -} - -h4 { - margin-top: 1rem; - margin-bottom: 0.4rem; - font-weight: normal; -} - -footer { - margin-top: 3.2rem; -} - -.checkbox { - cursor: pointer; - position: relative; - text-align: left; - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - display: inline-flex; - align-items: center; -} - -.checkbox-group { - display: flex; - align-items: center; - flex-direction: row; - - span { - display: inline-block; - margin-left: 0.6rem; - margin-right: 0.4rem; - } -} - -input[type='checkbox'] { - position: relative; - appearance: none; - cursor: pointer; - width: 2rem; - height: 2rem; - - border: 1px solid var(--vscode-input-border); - background-color: var(--vscode-checkbox-background); - border-color: var(--vscode-checkbox-border); - border-radius: 0.25rem; - color: var(--vscode-checkbox-foreground); - outline: none; - margin-right: 0.5rem; - vertical-align: middle; - transition: border-color 0.1s ease-in-out; - - &::after { - content: ''; - border: 0.2rem solid var(--vscode-checkbox-foreground); - border-width: 0 0.2rem 0.2rem 0; - position: absolute; - top: 0.2rem; - left: 0.6rem; - height: 1.2rem; - width: 0.6rem; - - opacity: 0; - transform: rotate(0deg); - transition: 0.2s ease-in-out; - } - - &:checked { - background-color: var(--vscode-checkbox-selectBackground); - border-color: var(--vscode-checkbox-selectBorder); - - &::after { - opacity: 1; - transform: rotate(45deg); - } - } - - &:hover, - &:focus { - background-color: var(--vscode-checkbox-selectBackground); - border-color: var(--vscode-focusBorder); - } -} - -label { - vertical-align: middle; - cursor: pointer; -} - -p, -li { - color: var(--color-foreground--65); -} - -.t { - &-desc { - font-size: 1.4rem; - color: var(--color-foreground); - } - - &-feature { - font-size: 1.4rem; - color: var(--color-foreground--85); - line-height: 2rem; - max-width: 692px; - } - - &-eyebrow { - text-transform: uppercase; - font-size: 1rem; - font-weight: 600; - color: var(--color-foreground--50); - margin: 0; - } - - &-nowrap { - white-space: nowrap; - } -} - -.h { - &-space-half { - margin-top: 1.6rem; - margin-bottom: 0.65rem; - } - - @media (min-width: 744px) { - &-large-mt-0 { - margin-top: 0; - } - } - - &-show-large { - display: none; - - @media (min-width: 744px) { - display: block; - } - } - - &-show-small { - display: block; - - @media (min-width: 744px) { - display: none; - } - } -} - -gk-card p { - margin: 0; -} - -.promo-banner { - text-align: center; - - &__media { - width: 100%; - max-width: 100%; - height: auto; - - &.is-light { - display: var(--promo-banner-light-display, none); - } - - &.is-dark { - display: var(--promo-banner-dark-display, none); - } - } -} - -.welcome { - padding: var(--gitlens-gutter-width); - - #version { - color: var(--color-foreground); - font-weight: 600; - } - - &__header { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; - gap: 1.6rem; - margin-bottom: 1.6rem; - } - - &__brand { - margin: 0; - - small { - display: inline-block; - font-size: 1.6rem; - font-weight: 200; - color: var(--color-foreground--50); - transform: translateY(0.3rem); - margin-left: 1rem; - } - } - - &__release { - display: flex; - flex-direction: column; - align-items: flex-end; - margin: 0; - } - - &__main { - // display: flex; - // flex-direction: column; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: min-content; - gap: 1.6rem 3rem; - } - - &__section { - & + & { - // border-top: 1px solid var(--vscode-editorWidget-border); - padding-top: 0.5rem; - max-width: 692px; - } - - > *:last-child { - margin-bottom: 0; - } - } - - &__gates { - p:first-child { - margin-bottom: 0.5rem; - } - - p:last-child { - margin-top: 0.5rem; - margin-left: 2rem; - } - } - - &__preview { - margin-left: 0.5rem; - font-size: 1.1rem; - font-weight: normal; - text-transform: uppercase; - } - - &__toolbar { - display: flex; - flex-direction: row; - align-items: center; - gap: 1.6rem; - justify-content: space-between; - - :last-child { - flex: none; - } - } - - &__illustration { - max-width: 69.2rem; - width: calc(100% - 2rem); - height: auto; - margin: 0 1rem; - } - - &__plus-cards { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 1.6rem; - } - - &__starting-nav { - max-width: 69.2rem; - container-type: inline-size; - display: flex; - flex-direction: column; - } - - &__views-nav { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); - gap: 0.64rem 2rem; - // width: min-content; - margin: 0 1rem 1.3rem; - - > * { - white-space: nowrap; - } - - a { - color: var(--color-foreground); - } - code-icon { - margin-right: 0.8rem; - color: var(--color-foreground--50); - transform: translateY(0.2rem); - vertical-align: text-bottom; - } - } - - &__resources-nav { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); - gap: 0.64rem 2rem; - - > * { - white-space: nowrap; - } - - h3 { - grid-column: 1 / -1; - // margin-bottom: -0.6rem; - } - - a { - // font-size: 1.4rem; - color: inherit; - } - - code-icon { - color: var(--color-foreground--50); - margin-right: 0.8rem; - } - } - - @media (min-width: 744px) { - &__main { - grid-template-columns: 3fr 2fr; - grid-template-rows: min-content min-content min-content 1fr; - } - &__section { - grid-column: 1; - - &:nth-child(3) { - grid-column: 2; - grid-row: 1 / 5; - border-top: none; - padding-top: 0; - } - } - - &__plus-cards { - display: flex; - flex-direction: column; - } - - footer { - margin-top: 0; - } - } - - @media (min-width: 880px) { - &__main { - grid-template-columns: 4fr 2fr; - } - } - - @media (min-width: 1200px) { - margin: 0 auto; - max-width: 1200px; - } -} - -.codicon { - font-family: codicon; - cursor: default; - user-select: none; -} - -.glicon { - font-family: glicons; - cursor: default; - user-select: none; -} - -body { - &[data-repos='blocked'] [data-requires='repo'] { - opacity: 0.5; - cursor: not-allowed; - } - - &:not([data-repos='blocked']) [data-requires='norepo'] { - display: none; - } - - &[data-org-ai='blocked'] [data-org-requires='ai'], - &[data-org-drafts='blocked'] [data-org-requires='drafts'] { - display: none; - } - - &[data-org-ai='allowed'] [data-org-requires='noai'], - &[data-org-drafts='allowed'] [data-org-requires='nodrafts'] { - display: none; - } -} - -.button-container { - margin: 1rem auto 0; - text-align: left; - max-width: 30rem; - transition: max-width 0.2s ease-out; -} - -@media (min-width: 640px) { - .button-container { - max-width: 100%; - } -} - -.button-group { - display: inline-flex; - gap: 0.1rem; - - &--single { - width: 100%; - max-width: 30rem; - } - - gl-button { - &:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - &:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - } - - video-button { - width: 100%; - } -} - -.alert { - max-width: 38.4rem; - position: relative; - padding: 0.8rem 1.2rem; - line-height: 1.2; - margin-bottom: 1.2rem; - background-color: var(--color-alert-neutralBackground); - border-left: 0.3rem solid var(--color-alert-neutralBorder); - color: var(--color-alert-foreground); - - &__title { - font-size: 1.4rem; - margin: 0; - } - - &__description { - font-size: 1.2rem; - margin: 0.4rem 0 0; - } - - &__close { - position: absolute; - top: 0.8rem; - right: 0.8rem; - color: inherit; - } - - &--info { - background-color: var(--color-alert-infoBackground); - border-left-color: var(--color-alert-infoBorder); - } - - &--warning { - background-color: var(--color-alert-warningBackground); - border-left-color: var(--color-alert-warningBorder); - } - - &--danger { - background-color: var(--color-alert-errorBackground); - border-left-color: var(--color-alert-errorBorder); - } -} - -.sticky { - background-color: var(--color-background); - position: -webkit-sticky; - position: sticky; - top: -1px; - z-index: 2; - padding-top: 1px; - padding-bottom: 1px; -} - -.t-eyebrow.sticky { - top: 2.4rem; - z-index: 1; -} - -gl-feature-badge { - display: inline-block; -} - -gl-feature-badge.super { - vertical-align: super; - margin-left: 0.2rem; -} - -gl-feature-badge.super.small { - --gl-feature-badge-font-size: 7px; - margin-left: 0.4rem; -} - -gl-indicator { - position: absolute; - top: -15px; - z-index: 1; -} - -hr { - border: none; - border-top: 1px solid var(--color-foreground--25); -} diff --git a/src/webviews/apps/welcome/welcome.ts b/src/webviews/apps/welcome/welcome.ts deleted file mode 100644 index a490978c6a5f2..0000000000000 --- a/src/webviews/apps/welcome/welcome.ts +++ /dev/null @@ -1,164 +0,0 @@ -/*global*/ -import './welcome.scss'; -import type { Disposable } from 'vscode'; -import type { IpcMessage } from '../../protocol'; -import type { State } from '../../welcome/protocol'; -import { DidChangeNotification, DidChangeOrgSettings, UpdateConfigurationCommand } from '../../welcome/protocol'; -import { App } from '../shared/appBase'; -import type { GlFeatureBadge } from '../shared/components/feature-badge'; -import { DOM } from '../shared/dom'; -import type { BlameSvg } from './components/svg-blame'; -// import { Snow } from '../shared/snow'; -import '../shared/components/code-icon'; -import '../shared/components/button'; -import '../shared/components/feature-badge'; -import '../shared/components/overlays/tooltip'; -import './components/card'; -import './components/gitlens-logo'; -import './components/svg-annotations'; -import './components/svg-blame'; -import './components/svg-editor-toolbar'; -import './components/svg-focus'; -import './components/svg-graph'; -import './components/svg-launchpad'; -import './components/svg-revision-navigation'; -import './components/svg-timeline'; -import './components/svg-workspaces'; -import './components/video-button'; -import '../shared/components/indicators/indicator'; - -export class WelcomeApp extends App { - constructor() { - super('WelcomeApp'); - } - - protected override onInitialize() { - this.updateState(); - } - - protected override onBind(): Disposable[] { - const disposables = [ - ...(super.onBind?.() ?? []), - DOM.on('[data-feature]', 'change', (e, target: HTMLInputElement) => this.onFeatureToggled(e, target)), - DOM.on('[data-requires="repo"]', 'click', (e, target: HTMLElement) => this.onRepoFeatureClicked(e, target)), - ]; - return disposables; - } - - protected override onMessageReceived(msg: IpcMessage) { - switch (true) { - case DidChangeNotification.is(msg): - this.state = msg.params.state; - this.setState(this.state); - this.updateState(); - break; - - case DidChangeOrgSettings.is(msg): - this.state.orgSettings = msg.params.orgSettings; - this.setState(this.state); - this.updateOrgSettings(); - break; - - default: - super.onMessageReceived?.(msg); - break; - } - } - - private onRepoFeatureClicked(e: MouseEvent, _target: HTMLElement) { - if (this.state.repoFeaturesBlocked ?? false) { - e.preventDefault(); - e.stopPropagation(); - return false; - } - - return true; - } - - private onFeatureToggled(_e: Event, target: HTMLElement) { - const feature = target.dataset.feature; - if (!feature) return; - - let type: keyof State['config']; - switch (feature) { - case 'blame': - type = 'currentLine'; - break; - case 'codelens': - type = 'codeLens'; - break; - default: - return; - } - - const enabled = (target as HTMLInputElement).checked; - this.state.config[type] = enabled; - this.sendCommand(UpdateConfigurationCommand, { type: type, value: enabled }); - this.updateFeatures(); - } - - private updateState() { - this.updateVersion(); - this.updateFeatures(); - this.updateRepoState(); - this.updateAccountState(); - this.updatePromo(); - this.updateSource(); - this.updateOrgSettings(); - } - - private updateOrgSettings() { - const { - orgSettings: { drafts, ai }, - } = this.state; - - document.body.dataset.orgDrafts = drafts ? 'allowed' : 'blocked'; - document.body.dataset.orgAi = ai ? 'allowed' : 'blocked'; - } - - private updatePromo() { - const { canShowPromo } = this.state; - document.getElementById('promo')!.hidden = !(canShowPromo ?? false); - } - - private updateSource() { - const els = document.querySelectorAll('gl-feature-badge'); - for (const el of els) { - el.source = { source: 'welcome', detail: 'badge' }; - } - } - - private updateVersion() { - document.getElementById('version')!.textContent = this.state.version; - } - - private updateFeatures() { - const { config } = this.state; - - const $el = document.getElementById('blame') as BlameSvg; - $el.inline = config.currentLine ?? false; - $el.codelens = config.codeLens ?? false; - - let $input = document.getElementById('inline-blame') as HTMLInputElement; - $input.checked = config.currentLine ?? false; - - $input = document.getElementById('codelens') as HTMLInputElement; - $input.checked = config.codeLens ?? false; - } - - private updateRepoState() { - const { repoFeaturesBlocked } = this.state; - document.body.dataset.repos = repoFeaturesBlocked ? 'blocked' : 'allowed'; - } - - private updateAccountState() { - const { isTrialOrPaid } = this.state; - for (const el of document.querySelectorAll('[data-visible="try-pro"]')) { - (el as HTMLElement).hidden = isTrialOrPaid ?? false; - } - // document.getElementById('try-pro')!.hidden = isTrialOrPaid ?? false; - } -} - -new WelcomeApp(); -// requestAnimationFrame(() => new Snow()); diff --git a/src/webviews/welcome/protocol.ts b/src/webviews/welcome/protocol.ts deleted file mode 100644 index 06cd94c1dedd9..0000000000000 --- a/src/webviews/welcome/protocol.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { Config } from '../../config'; -import type { IpcScope, WebviewState } from '../protocol'; -import { IpcCommand, IpcNotification } from '../protocol'; - -export const scope: IpcScope = 'welcome'; - -export interface State extends WebviewState { - version: string; - config: { - codeLens: Config['codeLens']['enabled']; - currentLine: Config['currentLine']['enabled']; - }; - repoFeaturesBlocked?: boolean; - isTrialOrPaid: boolean; - canShowPromo: boolean; - orgSettings: { - ai: boolean; - drafts: boolean; - }; -} - -// COMMANDS - -export interface UpdateConfigurationParams { - type: 'codeLens' | 'currentLine'; - value: boolean; -} -export const UpdateConfigurationCommand = new IpcCommand(scope, 'configuration/update'); - -// NOTIFICATIONS - -export interface DidChangeParams { - state: State; -} -export const DidChangeNotification = new IpcNotification(scope, 'didChange', true); - -export interface DidChangeOrgSettingsParams { - orgSettings: State['orgSettings']; -} -export const DidChangeOrgSettings = new IpcNotification(scope, 'org/settings/didChange'); diff --git a/src/webviews/welcome/registration.ts b/src/webviews/welcome/registration.ts deleted file mode 100644 index 5462a11255e42..0000000000000 --- a/src/webviews/welcome/registration.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ViewColumn } from 'vscode'; -import { Commands } from '../../constants.commands'; -import type { WebviewsController } from '../webviewsController'; -import type { State } from './protocol'; - -export function registerWelcomeWebviewPanel(controller: WebviewsController) { - return controller.registerWebviewPanel( - { id: Commands.ShowWelcomePage }, - { - id: 'gitlens.welcome', - fileName: 'welcome.html', - iconPath: 'images/gitlens-icon.png', - title: 'Welcome to GitLens', - contextKeyPrefix: `gitlens:webview:welcome`, - trackingFeature: 'welcomeWebview', - type: 'welcome', - plusFeature: false, - column: ViewColumn.Active, - webviewHostOptions: { - retainContextWhenHidden: false, - enableFindWidget: true, - }, - }, - async (container, host) => { - const { WelcomeWebviewProvider } = await import( - /* webpackChunkName: "webview-welcome" */ './welcomeWebview' - ); - return new WelcomeWebviewProvider(container, host); - }, - ); -} diff --git a/src/webviews/welcome/welcomeWebview.ts b/src/webviews/welcome/welcomeWebview.ts deleted file mode 100644 index 4fec9a66fa2b4..0000000000000 --- a/src/webviews/welcome/welcomeWebview.ts +++ /dev/null @@ -1,142 +0,0 @@ -import type { ConfigurationChangeEvent } from 'vscode'; -import { Disposable, workspace } from 'vscode'; -import type { ContextKeys } from '../../constants.context'; -import { SubscriptionState } from '../../constants.subscription'; -import type { WebviewTelemetryContext } from '../../constants.telemetry'; -import type { Container } from '../../container'; -import type { Subscription } from '../../plus/gk/account/subscription'; -import { isSubscriptionPaid } from '../../plus/gk/account/subscription'; -import type { SubscriptionChangeEvent } from '../../plus/gk/account/subscriptionService'; -import { configuration } from '../../system/vscode/configuration'; -import { getContext, onDidChangeContext } from '../../system/vscode/context'; -import type { IpcMessage } from '../protocol'; -import type { WebviewHost, WebviewProvider } from '../webviewProvider'; -import type { State, UpdateConfigurationParams } from './protocol'; -import { DidChangeNotification, DidChangeOrgSettings, UpdateConfigurationCommand } from './protocol'; - -const emptyDisposable = Object.freeze({ - dispose: () => { - /* noop */ - }, -}); - -export class WelcomeWebviewProvider implements WebviewProvider { - private readonly _disposable: Disposable; - - constructor( - private readonly container: Container, - private readonly host: WebviewHost, - ) { - this._disposable = Disposable.from( - configuration.onDidChange(this.onConfigurationChanged, this), - this.container.git.onDidChangeRepositories(() => this.notifyDidChange(), this), - !workspace.isTrusted - ? workspace.onDidGrantWorkspaceTrust(() => this.notifyDidChange(), this) - : emptyDisposable, - this.container.subscription.onDidChange(this.onSubscriptionChanged, this), - onDidChangeContext(this.onContextChanged, this), - ); - } - - dispose() { - this._disposable.dispose(); - } - - getTelemetryContext(): WebviewTelemetryContext { - return { - ...this.host.getTelemetryContext(), - }; - } - - includeBootstrap(): Promise { - return this.getState(); - } - - onReloaded() { - void this.notifyDidChange(); - } - - private getOrgSettings(): State['orgSettings'] { - return { - ai: getContext('gitlens:gk:organization:ai:enabled', false), - drafts: getContext('gitlens:gk:organization:drafts:enabled', false), - }; - } - - private onContextChanged(key: keyof ContextKeys) { - if (['gitlens:gk:organization:ai:enabled', 'gitlens:gk:organization:drafts:enabled'].includes(key)) { - this.notifyDidChangeOrgSettings(); - } - } - - private onSubscriptionChanged(e: SubscriptionChangeEvent) { - void this.notifyDidChange(e.current); - } - - private onConfigurationChanged(e: ConfigurationChangeEvent) { - if (!configuration.changed(e, 'codeLens.enabled') && !configuration.changed(e, 'currentLine.enabled')) return; - - void this.notifyDidChange(); - } - - onMessageReceived(e: IpcMessage) { - switch (true) { - case UpdateConfigurationCommand.is(e): - this.updateConfiguration(e.params); - break; - } - } - - private async getState(subscription?: Subscription): Promise { - return { - ...this.host.baseWebviewState, - version: this.container.version, - // Make sure to get the raw config so to avoid having the mode mixed in - config: { - codeLens: configuration.get('codeLens.enabled', undefined, true, true), - currentLine: configuration.get('currentLine.enabled', undefined, true, true), - }, - repoFeaturesBlocked: - !workspace.isTrusted || - this.container.git.openRepositoryCount === 0 || - this.container.git.hasUnsafeRepositories(), - isTrialOrPaid: await this.getTrialOrPaidState(subscription), - canShowPromo: await this.getCanShowPromo(subscription), - orgSettings: this.getOrgSettings(), - }; - } - - private async getTrialOrPaidState(subscription?: Subscription): Promise { - const sub = subscription ?? (await this.container.subscription.getSubscription(true)); - - if ([SubscriptionState.ProTrial, SubscriptionState.Paid].includes(sub.state)) { - return true; - } - - return false; - } - - private async getCanShowPromo(subscription?: Subscription): Promise { - const expiresTime = new Date('2023-12-31T07:59:00.000Z').getTime(); // 2023-12-30 23:59:00 PST-0800 - if (Date.now() > expiresTime) { - return false; - } - - const sub = subscription ?? (await this.container.subscription.getSubscription(true)); - return !isSubscriptionPaid(sub); - } - - private updateConfiguration(params: UpdateConfigurationParams) { - void configuration.updateEffective(`${params.type}.enabled`, params.value); - } - - private async notifyDidChange(subscription?: Subscription) { - void this.host.notify(DidChangeNotification, { state: await this.getState(subscription) }); - } - - private notifyDidChangeOrgSettings() { - void this.host.notify(DidChangeOrgSettings, { - orgSettings: this.getOrgSettings(), - }); - } -} diff --git a/tests/e2e/specs/command_palette.test.ts b/tests/e2e/specs/command_palette.test.ts index d327dd9fa4894..dd8e468cbed50 100644 --- a/tests/e2e/specs/command_palette.test.ts +++ b/tests/e2e/specs/command_palette.test.ts @@ -2,11 +2,6 @@ import { expect, MaxTimeout, test } from './baseTest'; test.describe('Test GitLens Command Palette commands', () => { test('should open commit graph with the command', async ({ page }) => { - // Close any open tabs to ensure a clean state - const welcomePageTab = page.locator('div[role="tab"][aria-label="Welcome to GitLens"]'); - await welcomePageTab.waitFor({ state: 'visible', timeout: MaxTimeout }); - void welcomePageTab.locator('div.tab-actions .action-item a.codicon-close').click(); - // Open the command palette by clicking on the View menu and selecting Command Palette const commandPalette = page.locator('div[id="workbench.parts.titlebar"] .command-center-quick-pick'); await commandPalette.click(); diff --git a/tests/e2e/specs/gitlens_install.test.ts b/tests/e2e/specs/gitlens_install.test.ts index 6ec5410f117d3..1748a17524890 100644 --- a/tests/e2e/specs/gitlens_install.test.ts +++ b/tests/e2e/specs/gitlens_install.test.ts @@ -1,11 +1,6 @@ import { expect, test } from './baseTest'; test.describe('Test GitLens installation', () => { - test('should display GitLens Welcome page after installation', async ({ page }) => { - const title = await page.textContent('.tab a'); - expect(title).toBe('Welcome to GitLens'); - }); - test('should contain GitLens & GitLens Inspect icons in activity bar', async ({ page }) => { await page.getByRole('tab', { name: 'GitLens Inspect' }).waitFor(); const gitlensIcons = page.getByRole('tab', { name: 'GitLens' }); diff --git a/webpack.config.mjs b/webpack.config.mjs index 744a7cab3a074..736de088e83b0 100644 --- a/webpack.config.mjs +++ b/webpack.config.mjs @@ -322,7 +322,6 @@ function getWebviewsConfig(mode, env) { getHtmlPlugin('rebase', false, mode, env), getHtmlPlugin('settings', false, mode, env), getHtmlPlugin('timeline', true, mode, env), - getHtmlPlugin('welcome', false, mode, env), getHtmlPlugin('patchDetails', true, mode, env), getCspHtmlPlugin(mode, env), // new InlineChunkHtmlPlugin(HtmlPlugin, mode === 'production' ? ['\\.css$'] : []), @@ -399,7 +398,6 @@ function getWebviewsConfig(mode, env) { rebase: './rebase/rebase.ts', settings: './settings/settings.ts', timeline: './plus/timeline/timeline.ts', - welcome: './welcome/welcome.ts', patchDetails: './plus/patchDetails/patchDetails.ts', }, mode: mode,