├── .browserslistrc ├── .devcontainer └── devcontainer.json ├── .fantasticonrc.js ├── .git-blame-ignore-revs ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ └── feature_request.yml ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── cd-pre.yml │ ├── cd-stable.yml │ ├── codeql.yml │ ├── issues-completed.yml │ ├── issues-lock.yml │ ├── issues-stale.yml │ └── unit-tests.yml ├── .gitignore ├── .mailmap ├── .prettierignore ├── .prettierrc ├── .vscode-test.mjs ├── .vscode ├── extensions.json ├── issues.github-issues ├── launch.json ├── queries.github-graphql-nb ├── settings.json └── tasks.json ├── .vscodeignore ├── BACKERS.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── LICENSE.plus ├── README.md ├── README.pre.md ├── ThirdPartyNotices.txt ├── contributions.json ├── contributions.schema.json ├── docs ├── links.md └── telemetry-events.md ├── eslint.config.mjs ├── images ├── dark │ ├── icon-activity.svg │ ├── icon-azdo.svg │ ├── icon-bitbucket.svg │ ├── icon-branch-ahead.svg │ ├── icon-branch-behind.svg │ ├── icon-branch-diverged.svg │ ├── icon-branch-synced.svg │ ├── icon-branch.svg │ ├── icon-check.svg │ ├── icon-checkout.svg │ ├── icon-commit-horizontal.svg │ ├── icon-compare-ref-working.svg │ ├── icon-diff.svg │ ├── icon-gerrit.svg │ ├── icon-gitea.svg │ ├── icon-github.svg │ ├── icon-gitlab.svg │ ├── icon-gitlens-filled-orange.svg │ ├── icon-gitlens-filled-progress.svg │ ├── icon-match-all-selected.svg │ ├── icon-match-all.svg │ ├── icon-match-case-selected.svg │ ├── icon-match-case.svg │ ├── icon-match-regex-selected.svg │ ├── icon-match-regex.svg │ ├── icon-next-commit.svg │ ├── icon-no-check.svg │ ├── icon-open-revision.svg │ ├── icon-prev-commit-menu.svg │ ├── icon-prev-commit.svg │ ├── icon-push-force.svg │ ├── icon-repo-ahead-cloud.svg │ ├── icon-repo-ahead-solid.svg │ ├── icon-repo-ahead.svg │ ├── icon-repo-behind-cloud.svg │ ├── icon-repo-behind-solid.svg │ ├── icon-repo-behind.svg │ ├── icon-repo-changes-cloud.svg │ ├── icon-repo-changes-solid.svg │ ├── icon-repo-changes.svg │ ├── icon-repo-cloud.svg │ ├── icon-repo-diverged-cloud.svg │ ├── icon-repo-diverged-solid.svg │ ├── icon-repo-diverged.svg │ ├── icon-repo-solid.svg │ ├── icon-repo-synced-cloud.svg │ ├── icon-repo-synced-solid.svg │ ├── icon-repo-synced.svg │ ├── icon-repo.svg │ ├── icon-stash-pop.svg │ ├── icon-stash-save.svg │ ├── icon-stash.svg │ ├── icon-status-added.svg │ ├── icon-status-conflict.svg │ ├── icon-status-copied.svg │ ├── icon-status-deleted.svg │ ├── icon-status-ignored.svg │ ├── icon-status-modified.svg │ ├── icon-status-renamed.svg │ ├── icon-status-unknown.svg │ ├── icon-status-untracked.svg │ ├── icon-tag-selected.svg │ ├── icon-unfold.svg │ ├── icon-unplug.svg │ └── icon-view-auto.svg ├── docs │ ├── branches-view.png │ ├── code-suggest.png │ ├── commit-graph-illustrated.png │ ├── commit-graph.png │ ├── commits-view-merge.png │ ├── commits-view-rebase.png │ ├── commits-view.png │ ├── contributors-view.png │ ├── current-line-blame.png │ ├── file-history-view-merge-conflict.png │ ├── file-history-view.png │ ├── get-started-video.png │ ├── git-command-palette.png │ ├── gutter-blame.png │ ├── gutter-changes.png │ ├── gutter-heatmap.png │ ├── hovers-current-line-details.png │ ├── hovers-current-line.png │ ├── launchpad.png │ ├── rebase.gif │ ├── remotes-view.png │ ├── revision-navigation.gif │ ├── search-and-compare-view.png │ ├── side-bar-views.png │ ├── sponsors │ │ ├── cresus.png │ │ ├── dendron.png │ │ ├── embark-studios_dark.png │ │ ├── embark-studios_light.png │ │ ├── localize_dark.png │ │ ├── localize_light.png │ │ ├── stepsize.png │ │ └── tabnine.png │ ├── stashes-view.png │ ├── status-bar.png │ ├── tags-view.png │ ├── terminal-links.gif │ ├── visual-file-history-illustrated.png │ ├── worktrees-illustrated.png │ └── worktrees.png ├── gitlens-icon.png ├── icons │ ├── branches-view-filled.svg │ ├── branches-view.svg │ ├── clock.svg │ ├── cloud-patch-share.svg │ ├── cloud-patch.svg │ ├── code-suggestion.svg │ ├── commit-horizontal.svg │ ├── commit-view.svg │ ├── commits-view-filled.svg │ ├── commits-view.svg │ ├── compare-ref-working.svg │ ├── compare-view.svg │ ├── confirm-checked.svg │ ├── confirm-unchecked.svg │ ├── contributors-view-filled.svg │ ├── contributors-view.svg │ ├── expand.svg │ ├── gitlens-filled.svg │ ├── gitlens-inspect.svg │ ├── gitlens.svg │ ├── graph.svg │ ├── history-view-filled.svg │ ├── history-view.svg │ ├── inspect.svg │ ├── launchpad-view-filled.svg │ ├── launchpad-view.svg │ ├── list-auto.svg │ ├── merge-target.svg │ ├── next-commit.svg │ ├── open-revision.svg │ ├── pinned-filled.svg │ ├── play-button.svg │ ├── prev-commit-menu.svg │ ├── prev-commit.svg │ ├── provider-azdo.svg │ ├── provider-bitbucket.svg │ ├── provider-gerrit.svg │ ├── provider-gitea.svg │ ├── provider-github.svg │ ├── provider-gitlab.svg │ ├── provider-jira.svg │ ├── remotes-view-filled.svg │ ├── remotes-view.svg │ ├── repositories-view-filled.svg │ ├── repositories-view.svg │ ├── repository-filled.svg │ ├── rocket-filled.svg │ ├── search-view-filled.svg │ ├── search-view.svg │ ├── stash-pop.svg │ ├── stash-save.svg │ ├── stashes-view-filled.svg │ ├── stashes-view.svg │ ├── switch.svg │ ├── tags-view-filled.svg │ ├── tags-view.svg │ ├── template │ │ ├── component-map.hbs │ │ ├── icons-contribution.hbs │ │ ├── mapping.json │ │ ├── sass-map.hbs │ │ └── styles.hbs │ ├── unplug.svg │ ├── workspaces-view.svg │ ├── worktrees-view-filled.svg │ └── worktrees-view.svg ├── light │ ├── icon-activity.svg │ ├── icon-azdo.svg │ ├── icon-bitbucket.svg │ ├── icon-branch-ahead.svg │ ├── icon-branch-behind.svg │ ├── icon-branch-diverged.svg │ ├── icon-branch-synced.svg │ ├── icon-branch.svg │ ├── icon-check.svg │ ├── icon-checkout.svg │ ├── icon-commit-horizontal.svg │ ├── icon-compare-ref-working.svg │ ├── icon-diff.svg │ ├── icon-gerrit.svg │ ├── icon-gitea.svg │ ├── icon-github.svg │ ├── icon-gitlab.svg │ ├── icon-gitlens-filled-orange.svg │ ├── icon-gitlens-filled-progress.svg │ ├── icon-match-all-selected.svg │ ├── icon-match-all.svg │ ├── icon-match-case-selected.svg │ ├── icon-match-case.svg │ ├── icon-match-regex-selected.svg │ ├── icon-match-regex.svg │ ├── icon-next-commit.svg │ ├── icon-no-check.svg │ ├── icon-open-revision.svg │ ├── icon-prev-commit-menu.svg │ ├── icon-prev-commit.svg │ ├── icon-push-force.svg │ ├── icon-repo-ahead-cloud.svg │ ├── icon-repo-ahead-solid.svg │ ├── icon-repo-ahead.svg │ ├── icon-repo-behind-cloud.svg │ ├── icon-repo-behind-solid.svg │ ├── icon-repo-behind.svg │ ├── icon-repo-changes-cloud.svg │ ├── icon-repo-changes-solid.svg │ ├── icon-repo-changes.svg │ ├── icon-repo-cloud.svg │ ├── icon-repo-diverged-cloud.svg │ ├── icon-repo-diverged-solid.svg │ ├── icon-repo-diverged.svg │ ├── icon-repo-solid.svg │ ├── icon-repo-synced-cloud.svg │ ├── icon-repo-synced-solid.svg │ ├── icon-repo-synced.svg │ ├── icon-repo.svg │ ├── icon-stash-pop.svg │ ├── icon-stash-save.svg │ ├── icon-stash.svg │ ├── icon-status-added.svg │ ├── icon-status-conflict.svg │ ├── icon-status-copied.svg │ ├── icon-status-deleted.svg │ ├── icon-status-ignored.svg │ ├── icon-status-modified.svg │ ├── icon-status-renamed.svg │ ├── icon-status-unknown.svg │ ├── icon-status-untracked.svg │ ├── icon-tag-selected.svg │ ├── icon-unfold.svg │ ├── icon-unplug.svg │ └── icon-view-auto.svg └── originals │ ├── blame.pdn │ ├── branches-view.pdn │ ├── changes.pdn │ ├── code-lens.pdn │ ├── commits-view.pdn │ ├── contributors-view.pdn │ ├── current-line-blame.pdn │ ├── file-history-view.pdn │ ├── gitlens-logo-1000.png │ ├── gitlens-logo-2000.png │ ├── gitlens-logo-256.png │ ├── gitlens-logo-500.png │ ├── gitlens-logo.ai │ ├── gitlens-logo.pdn │ ├── gitlens-mono-inverted.pdn │ ├── gitlens-mono.pdn │ ├── gitlens.pdn │ ├── heatmap.pdn │ ├── line-history-view.pdn │ ├── remotes-view.pdn │ ├── repositories-view.pdn │ ├── search-and-compare-view.pdn │ ├── stashes-view.pdn │ ├── status-bar.pdn │ ├── tags-view.pdn │ └── worktrees-view.pdn ├── package.json ├── patches ├── debug.js ├── tr46.js └── whatwg-url.js ├── pnpm-lock.yaml ├── resources └── icons.fig ├── scripts ├── applyIconsContribution.mjs ├── applyPreReleasePatch.mjs ├── contributions │ ├── contributionsBuilder.mts │ ├── models.ts │ └── whenParser.mts ├── esbuild.mjs ├── esbuild.tests.mjs ├── eslint-rules │ └── no-src-imports.js ├── export-codicons.mjs ├── generateCommandTypes.mts ├── generateContributions.mts ├── generateEmojiShortcodeMap.mjs ├── generateLicenses.mjs ├── generateTelemetryDocs.mjs └── prep-release.mjs ├── src ├── @types │ ├── bb.d.ts │ ├── global.d.ts │ ├── node-fetch.d.ts │ ├── vscode.git.d.ts │ ├── vscode.git.enums.ts │ ├── vscode.git.resources.d.ts │ ├── vscode.git.resources.enums.ts │ ├── vscode.git.timeline.d.ts │ ├── vscode.git.uri.ts │ ├── vscode.iconpath.d.ts │ ├── vscode.proposed.timeline.d.ts │ └── vsls.d.ts ├── annotations │ ├── annotationProvider.ts │ ├── annotations.ts │ ├── blameAnnotationProvider.ts │ ├── fileAnnotationController.ts │ ├── gutterBlameAnnotationProvider.ts │ ├── gutterChangesAnnotationProvider.ts │ ├── gutterHeatmapBlameAnnotationProvider.ts │ └── lineAnnotationController.ts ├── api │ ├── actionRunners.ts │ ├── api.ts │ └── gitlens.d.ts ├── autolinks │ ├── __tests__ │ │ └── autolinks.test.ts │ ├── autolinksProvider.ts │ ├── models │ │ └── autolinks.ts │ └── utils │ │ └── -webview │ │ └── autolinks.utils.ts ├── avatars.ts ├── cache.ts ├── codelens │ ├── codeLensController.ts │ └── codeLensProvider.ts ├── commands.ts ├── commands │ ├── addAuthors.ts │ ├── browseRepoAtRevision.ts │ ├── changeBranchMergeTarget.ts │ ├── closeUnchangedFiles.ts │ ├── cloudIntegrations.ts │ ├── commandBase.ts │ ├── commandBase.utils.ts │ ├── commandContext.ts │ ├── commandContext.utils.ts │ ├── compareWith.ts │ ├── copyCurrentBranch.ts │ ├── copyDeepLink.ts │ ├── copyMessageToClipboard.ts │ ├── copyRelativePathToClipboard.ts │ ├── copyShaToClipboard.ts │ ├── createPullRequestOnRemote.ts │ ├── diffFolderWithRevision.ts │ ├── diffFolderWithRevisionFrom.ts │ ├── diffLineWithPrevious.ts │ ├── diffLineWithWorking.ts │ ├── diffWith.ts │ ├── diffWithNext.ts │ ├── diffWithPrevious.ts │ ├── diffWithRevision.ts │ ├── diffWithRevisionFrom.ts │ ├── diffWithWorking.ts │ ├── explainBase.ts │ ├── explainBranch.ts │ ├── explainCommit.ts │ ├── explainStash.ts │ ├── explainWip.ts │ ├── externalDiff.ts │ ├── generateChangelog.ts │ ├── generateCommitMessage.ts │ ├── generateRebase.ts │ ├── ghpr │ │ └── openOrCreateWorktree.ts │ ├── git │ │ ├── branch.ts │ │ ├── cherry-pick.ts │ │ ├── coauthors.ts │ │ ├── fetch.ts │ │ ├── log.ts │ │ ├── merge.ts │ │ ├── pull.ts │ │ ├── push.ts │ │ ├── rebase.ts │ │ ├── remote.ts │ │ ├── reset.ts │ │ ├── revert.ts │ │ ├── search.ts │ │ ├── show.ts │ │ ├── stash.ts │ │ ├── status.ts │ │ ├── switch.ts │ │ ├── tag.ts │ │ └── worktree.ts │ ├── gitWizard.ts │ ├── inspect.ts │ ├── inviteToLiveShare.ts │ ├── logging.ts │ ├── openAssociatedPullRequestOnRemote.ts │ ├── openBranchOnRemote.ts │ ├── openBranchesOnRemote.ts │ ├── openChangedFiles.ts │ ├── openCommitOnRemote.ts │ ├── openComparisonOnRemote.ts │ ├── openCurrentBranchOnRemote.ts │ ├── openDirectoryCompare.ts │ ├── openFileAtRevision.ts │ ├── openFileAtRevisionFrom.ts │ ├── openFileFromRemote.ts │ ├── openFileOnRemote.ts │ ├── openOnRemote.ts │ ├── openOnlyChangedFiles.ts │ ├── openPullRequestOnRemote.ts │ ├── openRepoOnRemote.ts │ ├── openRevisionFile.ts │ ├── openWorkingFile.ts │ ├── patches.ts │ ├── quickCommand.buttons.ts │ ├── quickCommand.steps.ts │ ├── quickCommand.ts │ ├── quickWizard.base.ts │ ├── quickWizard.ts │ ├── quickWizard.utils.ts │ ├── rebaseEditor.ts │ ├── refreshHover.ts │ ├── regenerateMarkdownDocument.ts │ ├── remoteProviders.ts │ ├── repositories.ts │ ├── resetViewsLayout.ts │ ├── resets.ts │ ├── searchCommits.ts │ ├── showCommitsInView.ts │ ├── showLastQuickPick.ts │ ├── showQuickBranchHistory.ts │ ├── showQuickCommit.ts │ ├── showQuickCommitFile.ts │ ├── showQuickFileHistory.ts │ ├── showQuickRepoStatus.ts │ ├── showQuickStashList.ts │ ├── showView.ts │ ├── stashApply.ts │ ├── stashSave.ts │ ├── switchAIModel.ts │ ├── switchMode.ts │ ├── toggleCodeLens.ts │ ├── toggleFileAnnotations.ts │ ├── toggleLineBlame.ts │ └── walkthroughs.ts ├── config.ts ├── constants.ai.ts ├── constants.colors.ts ├── constants.commands.generated.ts ├── constants.commands.ts ├── constants.context.ts ├── constants.integrations.ts ├── constants.search.ts ├── constants.storage.ts ├── constants.subscription.ts ├── constants.telemetry.ts ├── constants.ts ├── constants.views.ts ├── container.ts ├── documents │ └── markdown.ts ├── emojis.generated.ts ├── emojis.ts ├── env │ ├── browser │ │ ├── base64.ts │ │ ├── crypto.ts │ │ ├── fetch.ts │ │ ├── hex.ts │ │ ├── hrtime.ts │ │ ├── json.ts │ │ ├── md5.ts │ │ ├── platform.ts │ │ └── providers.ts │ └── node │ │ ├── base64.ts │ │ ├── crypto.ts │ │ ├── fetch.ts │ │ ├── git │ │ ├── commitMessageProvider.ts │ │ ├── git.ts │ │ ├── localGitProvider.ts │ │ ├── locator.ts │ │ ├── shell.errors.ts │ │ ├── shell.ts │ │ ├── sub-providers │ │ │ ├── branches.ts │ │ │ ├── commits.ts │ │ │ ├── config.ts │ │ │ ├── contributors.ts │ │ │ ├── diff.ts │ │ │ ├── graph.ts │ │ │ ├── patch.ts │ │ │ ├── refs.ts │ │ │ ├── remotes.ts │ │ │ ├── revision.ts │ │ │ ├── staging.ts │ │ │ ├── stash.ts │ │ │ ├── status.ts │ │ │ ├── tags.ts │ │ │ └── worktrees.ts │ │ └── vslsGitProvider.ts │ │ ├── gk │ │ ├── cli │ │ │ ├── commands.ts │ │ │ ├── integration.ts │ │ │ └── ipcServer.ts │ │ ├── localRepositoryLocationProvider.ts │ │ ├── localSharedGkStorageLocationProvider.ts │ │ └── localWorkspacesSharedStorageProvider.ts │ │ ├── hex.ts │ │ ├── hrtime.ts │ │ ├── json.ts │ │ ├── platform.ts │ │ └── providers.ts ├── errors.ts ├── eventBus.ts ├── extension.ts ├── features.ts ├── git │ ├── actions.ts │ ├── actions │ │ ├── branch.ts │ │ ├── commit.ts │ │ ├── contributor.ts │ │ ├── pausedOperation.ts │ │ ├── remote.ts │ │ ├── repository.ts │ │ ├── stash.ts │ │ ├── tag.ts │ │ └── worktree.ts │ ├── cache.ts │ ├── commandOptions.ts │ ├── errors.ts │ ├── formatters │ │ ├── commitFormatter.ts │ │ ├── formatter.ts │ │ └── statusFormatter.ts │ ├── fsProvider.ts │ ├── gitProvider.ts │ ├── gitProviderService.ts │ ├── gitRepositoryService.ts │ ├── gitUri.authority.ts │ ├── gitUri.ts │ ├── gitUri.utils.ts │ ├── location │ │ └── repositorylocationProvider.ts │ ├── models │ │ ├── author.ts │ │ ├── blame.ts │ │ ├── branch.ts │ │ ├── commit.ts │ │ ├── contributor.ts │ │ ├── defaultBranch.ts │ │ ├── diff.ts │ │ ├── file.ts │ │ ├── fileChange.ts │ │ ├── fileStatus.ts │ │ ├── graph.ts │ │ ├── issue.ts │ │ ├── issueOrPullRequest.ts │ │ ├── log.ts │ │ ├── mergeConflict.ts │ │ ├── patch.ts │ │ ├── pathMapping.ts │ │ ├── pausedOperationStatus.ts │ │ ├── pullRequest.ts │ │ ├── reference.ts │ │ ├── reflog.ts │ │ ├── remote.ts │ │ ├── remoteProvider.ts │ │ ├── remoteResource.ts │ │ ├── repository.ts │ │ ├── repositoryIdentities.ts │ │ ├── repositoryMetadata.ts │ │ ├── repositoryShape.ts │ │ ├── resourceDescriptor.ts │ │ ├── revision.ts │ │ ├── shortlog.ts │ │ ├── stash.ts │ │ ├── status.ts │ │ ├── statusFile.ts │ │ ├── tag.ts │ │ ├── tree.ts │ │ ├── user.ts │ │ └── worktree.ts │ ├── parsers │ │ ├── blameParser.ts │ │ ├── diffParser.ts │ │ ├── logParser.ts │ │ ├── mergeTreeParser.ts │ │ ├── refParser.ts │ │ ├── reflogParser.ts │ │ ├── remoteParser.ts │ │ ├── shortlogParser.ts │ │ ├── statusParser.ts │ │ ├── treeParser.ts │ │ └── worktreeParser.ts │ ├── queryResults.ts │ ├── remotes │ │ ├── azure-devops.ts │ │ ├── bitbucket-server.ts │ │ ├── bitbucket.ts │ │ ├── custom.ts │ │ ├── gerrit.ts │ │ ├── gitea.ts │ │ ├── github.ts │ │ ├── gitlab.ts │ │ ├── google-source.ts │ │ ├── remoteProvider.ts │ │ └── remoteProviders.ts │ ├── search.ts │ ├── sub-providers │ │ └── remotes.ts │ └── utils │ │ ├── -webview │ │ ├── branch.issue.utils.ts │ │ ├── branch.utils.ts │ │ ├── commit.utils.ts │ │ ├── contributor.quickpick.ts │ │ ├── file.utils.ts │ │ ├── icons.ts │ │ ├── issue.utils.ts │ │ ├── log.utils.ts │ │ ├── pullRequest.utils.ts │ │ ├── reference.utils.ts │ │ ├── repository.utils.ts │ │ ├── sorting.ts │ │ ├── statusFile.utils.ts │ │ ├── worktree.quickpick.ts │ │ └── worktree.utils.ts │ │ ├── __tests__ │ │ └── pullRequest.utils.test.ts │ │ ├── branch.utils.ts │ │ ├── commit.utils.ts │ │ ├── contributor.utils.ts │ │ ├── fetch.utils.ts │ │ ├── file.utils.ts │ │ ├── fileStatus.utils.ts │ │ ├── issue.utils.ts │ │ ├── issueOrPullRequest.utils.ts │ │ ├── pausedOperationStatus.utils.ts │ │ ├── pullRequest.utils.ts │ │ ├── reference.utils.ts │ │ ├── remote.utils.ts │ │ ├── remoteResource.utils.ts │ │ ├── resourceDescriptor.utils.ts │ │ ├── revision.utils.ts │ │ ├── status.utils.ts │ │ ├── tag.utils.ts │ │ ├── user.utils.ts │ │ └── worktree.utils.ts ├── hovers │ ├── hovers.ts │ └── lineHoverController.ts ├── messages.ts ├── partners.ts ├── plus │ ├── LICENSE.plus │ ├── ai │ │ ├── aiProviderService.ts │ │ ├── anthropicProvider.ts │ │ ├── azureProvider.ts │ │ ├── deepSeekProvider.ts │ │ ├── geminiProvider.ts │ │ ├── githubModelsProvider.ts │ │ ├── gitkrakenProvider.ts │ │ ├── huggingFaceProvider.ts │ │ ├── mistralProvider.ts │ │ ├── models │ │ │ ├── model.ts │ │ │ ├── promptTemplates.ts │ │ │ └── provider.ts │ │ ├── ollamaProvider.ts │ │ ├── openAICompatibleProvider.ts │ │ ├── openAICompatibleProviderBase.ts │ │ ├── openRouterProvider.ts │ │ ├── openaiProvider.ts │ │ ├── prompts.ts │ │ ├── utils │ │ │ └── -webview │ │ │ │ ├── ai.utils.ts │ │ │ │ └── prompt.utils.ts │ │ ├── vscodeProvider.ts │ │ └── xaiProvider.ts │ ├── drafts │ │ ├── actions.ts │ │ ├── draftsService.ts │ │ ├── models │ │ │ └── drafts.ts │ │ └── utils │ │ │ └── -webview │ │ │ └── drafts.utils.ts │ ├── gk │ │ ├── __debug__accountDebug.ts │ │ ├── authenticationConnection.ts │ │ ├── authenticationProvider.ts │ │ ├── models │ │ │ ├── checkin.ts │ │ │ ├── organization.ts │ │ │ ├── promo.ts │ │ │ └── subscription.ts │ │ ├── organizationService.ts │ │ ├── productConfigProvider.ts │ │ ├── serverConnection.ts │ │ ├── subscriptionService.ts │ │ ├── urlsProvider.ts │ │ └── utils │ │ │ ├── -webview │ │ │ ├── acount.utils.ts │ │ │ ├── integrationAuthentication.utils.ts │ │ │ ├── plus.utils.ts │ │ │ └── subscription.utils.ts │ │ │ ├── checkin.utils.ts │ │ │ └── subscription.utils.ts │ ├── graph │ │ └── statusbar.ts │ ├── integrations │ │ ├── authentication │ │ │ ├── azureDevOps.ts │ │ │ ├── bitbucket.ts │ │ │ ├── cloudIntegrationService.ts │ │ │ ├── configuredIntegrationService.ts │ │ │ ├── github.ts │ │ │ ├── gitlab.ts │ │ │ ├── integrationAuthenticationProvider.ts │ │ │ ├── integrationAuthenticationService.ts │ │ │ ├── jira.ts │ │ │ └── models.ts │ │ ├── integrationService.ts │ │ ├── models │ │ │ ├── gitHostIntegration.ts │ │ │ ├── integration.ts │ │ │ └── issuesIntegration.ts │ │ ├── providers │ │ │ ├── azure │ │ │ │ ├── azure.ts │ │ │ │ └── models.ts │ │ │ ├── azureDevOps.ts │ │ │ ├── bitbucket-server.ts │ │ │ ├── bitbucket-server │ │ │ │ └── models.ts │ │ │ ├── bitbucket.ts │ │ │ ├── bitbucket │ │ │ │ ├── bitbucket.ts │ │ │ │ └── models.ts │ │ │ ├── github.ts │ │ │ ├── github │ │ │ │ ├── __tests__ │ │ │ │ │ └── github.utils.test.ts │ │ │ │ ├── github.ts │ │ │ │ ├── github.utils.ts │ │ │ │ ├── githubGitProvider.ts │ │ │ │ ├── models.ts │ │ │ │ ├── sub-providers │ │ │ │ │ ├── branches.ts │ │ │ │ │ ├── commits.ts │ │ │ │ │ ├── config.ts │ │ │ │ │ ├── contributors.ts │ │ │ │ │ ├── diff.ts │ │ │ │ │ ├── graph.ts │ │ │ │ │ ├── refs.ts │ │ │ │ │ ├── remotes.ts │ │ │ │ │ ├── revision.ts │ │ │ │ │ ├── status.ts │ │ │ │ │ └── tags.ts │ │ │ │ └── utils │ │ │ │ │ └── -webview │ │ │ │ │ └── search.utils.ts │ │ │ ├── gitlab.ts │ │ │ ├── gitlab │ │ │ │ ├── __tests__ │ │ │ │ │ └── gitlab.utils.test.ts │ │ │ │ ├── gitlab.ts │ │ │ │ ├── gitlab.utils.ts │ │ │ │ └── models.ts │ │ │ ├── jira.ts │ │ │ ├── models.ts │ │ │ ├── providersApi.ts │ │ │ └── utils.ts │ │ └── utils │ │ │ └── -webview │ │ │ └── integration.utils.ts │ ├── launchpad │ │ ├── enrichmentService.ts │ │ ├── launchpad.ts │ │ ├── launchpadIndicator.ts │ │ ├── launchpadProvider.ts │ │ ├── models │ │ │ ├── enrichedItem.ts │ │ │ └── launchpad.ts │ │ └── utils │ │ │ └── -webview │ │ │ └── launchpad.utils.ts │ ├── remotehub.ts │ ├── repos │ │ ├── repositoryIdentityService.ts │ │ └── sharedGkStorageLocationProvider.ts │ ├── startWork │ │ └── startWork.ts │ └── workspaces │ │ ├── models │ │ ├── cloudWorkspace.ts │ │ ├── localWorkspace.ts │ │ └── workspaces.ts │ │ ├── workspacesApi.ts │ │ ├── workspacesService.ts │ │ └── workspacesSharedStorageProvider.ts ├── quickpicks │ ├── aiModelPicker.ts │ ├── branchPicker.ts │ ├── commitPicker.ts │ ├── comparisonPicker.ts │ ├── contributorsPicker.ts │ ├── items │ │ ├── commits.ts │ │ ├── common.ts │ │ ├── directive.ts │ │ ├── flags.ts │ │ └── gitWizard.ts │ ├── modePicker.ts │ ├── organizationMembersPicker.ts │ ├── referencePicker.ts │ ├── remotePicker.ts │ ├── remoteProviderPicker.ts │ ├── repositoryPicker.ts │ ├── revisionFilesPicker.ts │ └── stashPicker.ts ├── repositories.ts ├── statusbar │ └── statusBarController.ts ├── system │ ├── -webview │ │ ├── __tests__ │ │ │ └── path.test.ts │ │ ├── asyncDebouncer.ts │ │ ├── cancellation.ts │ │ ├── command.ts │ │ ├── configuration.ts │ │ ├── context.ts │ │ ├── formatPath.ts │ │ ├── keyboard.ts │ │ ├── markdown.ts │ │ ├── path.ts │ │ ├── path.vsls.ts │ │ ├── scm.ts │ │ ├── storage.ts │ │ ├── timeline.ts │ │ ├── uriMap.ts │ │ ├── vscode.ts │ │ └── vscode │ │ │ ├── documents.ts │ │ │ ├── editors.ts │ │ │ ├── tabs.ts │ │ │ ├── uris.ts │ │ │ └── workspaces.ts │ ├── __tests__ │ │ ├── __mock__ │ │ │ └── paths.json │ │ ├── color.test.ts │ │ ├── iterable.test.ts │ │ ├── path.test.ts │ │ └── trie.test.ts │ ├── array.ts │ ├── brand.ts │ ├── color.ts │ ├── commands.ts │ ├── counter.ts │ ├── date.ts │ ├── decorators │ │ ├── -webview │ │ │ ├── gate.ts │ │ │ ├── memoize.ts │ │ │ └── resolver.ts │ │ ├── command.ts │ │ ├── debounce.ts │ │ ├── log.ts │ │ └── serialize.ts │ ├── encoding.ts │ ├── event.ts │ ├── function.ts │ ├── function │ │ ├── __tests__ │ │ │ └── debounce.test.ts │ │ └── debounce.ts │ ├── iterable.ts │ ├── lazy.ts │ ├── loggable.ts │ ├── logger.constants.ts │ ├── logger.scope.ts │ ├── logger.ts │ ├── markdown.ts │ ├── mru.ts │ ├── object.ts │ ├── paging.ts │ ├── path.ts │ ├── promise.ts │ ├── promiseCache.ts │ ├── searchTree.ts │ ├── serialize.ts │ ├── stopwatch.ts │ ├── string.ts │ ├── subscriptionManager.ts │ ├── trie.ts │ ├── unifiedDisposable.ts │ ├── uri.ts │ ├── validation.ts │ ├── version.ts │ └── webview.ts ├── telemetry │ ├── openTelemetryProvider.ts │ ├── telemetry.ts │ ├── usageTracker.ts │ └── walkthroughStateProvider.ts ├── terminal.ts ├── terminal │ └── linkProvider.ts ├── trackers │ ├── documentTracker.ts │ ├── lineTracker.ts │ └── trackedDocument.ts ├── uris │ ├── deepLinks │ │ ├── deepLink.ts │ │ └── deepLinkService.ts │ └── uriService.ts ├── views │ ├── branchesView.ts │ ├── commitsView.ts │ ├── contributorsView.ts │ ├── draftsView.ts │ ├── fileHistoryView.ts │ ├── launchpadView.ts │ ├── lineHistoryView.ts │ ├── nodes │ │ ├── UncommittedFileNode.ts │ │ ├── UncommittedFilesNode.ts │ │ ├── abstract │ │ │ ├── cacheableChildrenViewNode.ts │ │ │ ├── repositoriesSubscribeableNode.ts │ │ │ ├── repositoryFolderNode.ts │ │ │ ├── subscribeableViewNode.ts │ │ │ ├── viewFileNode.ts │ │ │ ├── viewNode.ts │ │ │ └── viewRefNode.ts │ │ ├── autolinkedItemNode.ts │ │ ├── autolinkedItemsNode.ts │ │ ├── branchNode.ts │ │ ├── branchOrTagFolderNode.ts │ │ ├── branchTrackingStatusFilesNode.ts │ │ ├── branchTrackingStatusNode.ts │ │ ├── branchesNode.ts │ │ ├── codeSuggestionsNode.ts │ │ ├── commitFileNode.ts │ │ ├── commitNode.ts │ │ ├── common.ts │ │ ├── compareBranchNode.ts │ │ ├── comparePickerNode.ts │ │ ├── compareResultsNode.ts │ │ ├── contributorNode.ts │ │ ├── contributorsNode.ts │ │ ├── draftNode.ts │ │ ├── fileHistoryNode.ts │ │ ├── fileHistoryTrackerNode.ts │ │ ├── fileRevisionAsCommitNode.ts │ │ ├── folderNode.ts │ │ ├── groupingNode.ts │ │ ├── launchpadViewGroupingNode.ts │ │ ├── lineHistoryNode.ts │ │ ├── lineHistoryTrackerNode.ts │ │ ├── mergeConflictCurrentChangesNode.ts │ │ ├── mergeConflictFileNode.ts │ │ ├── mergeConflictFilesNode.ts │ │ ├── mergeConflictIncomingChangesNode.ts │ │ ├── pausedOperationStatusNode.ts │ │ ├── pullRequestNode.ts │ │ ├── rebaseCommitNode.ts │ │ ├── reflogNode.ts │ │ ├── reflogRecordNode.ts │ │ ├── remoteNode.ts │ │ ├── remotesNode.ts │ │ ├── repositoriesNode.ts │ │ ├── repositoryNode.ts │ │ ├── resultsCommitsNode.ts │ │ ├── resultsFileNode.ts │ │ ├── resultsFilesNode.ts │ │ ├── searchResultsNode.ts │ │ ├── stashFileNode.ts │ │ ├── stashNode.ts │ │ ├── stashesNode.ts │ │ ├── statusFileNode.ts │ │ ├── statusFilesNode.ts │ │ ├── tagNode.ts │ │ ├── tagsNode.ts │ │ ├── utils │ │ │ └── -webview │ │ │ │ └── node.utils.ts │ │ ├── workspaceMissingRepositoryNode.ts │ │ ├── workspaceNode.ts │ │ ├── worktreeNode.ts │ │ └── worktreesNode.ts │ ├── pullRequestView.ts │ ├── remotesView.ts │ ├── repositoriesView.ts │ ├── scmGroupedView.ts │ ├── searchAndCompareView.ts │ ├── stashesView.ts │ ├── tagsView.ts │ ├── viewBase.ts │ ├── viewCommands.ts │ ├── viewDecorationProvider.ts │ ├── views.ts │ ├── workspacesView.ts │ └── worktreesView.ts ├── vsls │ ├── guest.ts │ ├── host.ts │ ├── protocol.ts │ └── vsls.ts └── webviews │ ├── apps │ ├── commitDetails │ │ ├── commitDetails.html │ │ ├── commitDetails.scss │ │ ├── commitDetails.ts │ │ └── components │ │ │ ├── button.css.ts │ │ │ ├── commit-action.css.ts │ │ │ ├── commit-details-app.ts │ │ │ ├── gl-commit-details.ts │ │ │ ├── gl-details-base.ts │ │ │ ├── gl-inspect-nav.ts │ │ │ ├── gl-inspect-patch.ts │ │ │ ├── gl-status-nav.ts │ │ │ └── gl-wip-details.ts │ ├── home │ │ ├── components │ │ │ ├── ama-banner.ts │ │ │ ├── feature-nav.ts │ │ │ ├── integration-banner.ts │ │ │ ├── onboarding.ts │ │ │ ├── preview-banner.ts │ │ │ ├── promo-banner.ts │ │ │ └── repo-alerts.ts │ │ ├── context.ts │ │ ├── home.css.ts │ │ ├── home.html │ │ ├── home.scss │ │ ├── home.ts │ │ └── stateProvider.ts │ ├── media │ │ ├── blame-avatars-compact.png │ │ ├── blame-avatars.png │ │ ├── blame-compact-highlight.png │ │ ├── blame-compact.png │ │ ├── blame-heatmap-left.png │ │ ├── blame-heatmap-right.png │ │ ├── blame-highlight-gutter.png │ │ ├── blame-highlight-scrollbar.png │ │ ├── blame-highlight.png │ │ ├── blame.png │ │ ├── branches-view-compare+pr.png │ │ ├── branches-view-compare.png │ │ ├── branches-view-pr.png │ │ ├── branches-view.png │ │ ├── changes-highlight-gutter.png │ │ ├── changes-highlight-scrollbar.png │ │ ├── changes.png │ │ ├── code-lens-blocks-authors.png │ │ ├── code-lens-blocks-recent+authors.png │ │ ├── code-lens-blocks-recent.png │ │ ├── code-lens-containers-authors.png │ │ ├── code-lens-containers-recent+authors.png │ │ ├── code-lens-containers-recent.png │ │ ├── code-lens-file-authors.png │ │ ├── code-lens-file-recent+authors.png │ │ ├── code-lens-file-recent.png │ │ ├── code-lens.png │ │ ├── commit-details.png │ │ ├── commits-view-auto-commit-pr.png │ │ ├── commits-view-auto-compare+commit-pr.png │ │ ├── commits-view-auto-compare+pr+commit-pr.png │ │ ├── commits-view-auto-compare+pr.png │ │ ├── commits-view-auto-compare.png │ │ ├── commits-view-auto-pr+commit-pr.png │ │ ├── commits-view-auto-pr.png │ │ ├── commits-view-auto.png │ │ ├── commits-view-tree-commit-pr.png │ │ ├── commits-view-tree-compare+commit-pr.png │ │ ├── commits-view-tree-compare+pr+commit-pr.png │ │ ├── commits-view-tree-compare+pr.png │ │ ├── commits-view-tree-compare.png │ │ ├── commits-view-tree-pr+commit-pr.png │ │ ├── commits-view-tree-pr.png │ │ ├── commits-view-tree.png │ │ ├── contributors-view.png │ │ ├── current-line-blame-on+pr.png │ │ ├── current-line-blame-on-scrollable.png │ │ ├── current-line-blame-on.png │ │ ├── current-line-blame.png │ │ ├── file-history-view-avatars.png │ │ ├── file-history-view.png │ │ ├── gitlens-logo.png │ │ ├── graph-commit-search.png │ │ ├── graph-minimap.png │ │ ├── heatmap-gutter.png │ │ ├── heatmap-scrollbar.png │ │ ├── heatmap.png │ │ ├── hovers-annotations-compact.png │ │ ├── hovers-annotations-currentLine-on.png │ │ ├── hovers-annotations.png │ │ ├── hovers-autolink.png │ │ ├── hovers-changes.png │ │ ├── hovers-currentLine-on+pr.png │ │ ├── hovers-currentLine-on.png │ │ ├── hovers-currentLine.png │ │ ├── hovers-details+changes.png │ │ ├── hovers-details+pr+changes.png │ │ ├── hovers-details+pr.png │ │ ├── hovers-details.png │ │ ├── line-history-view-avatars.png │ │ ├── line-history-view.png │ │ ├── modes-status-bar-left.png │ │ ├── modes-status-bar-right.png │ │ ├── plus-commit-graph-illustrated.png │ │ ├── rebase-editor.png │ │ ├── remotes-view-pr.png │ │ ├── remotes-view.png │ │ ├── repositories-view.png │ │ ├── search-and-compare-view.png │ │ ├── stashes-view-auto.png │ │ ├── stashes-view-tree.png │ │ ├── status-bar-left+pr.png │ │ ├── status-bar-left.png │ │ ├── status-bar-right+pr.png │ │ ├── status-bar-right.png │ │ ├── status-bar.png │ │ ├── tags-view-list.png │ │ ├── tags-view-tree.png │ │ ├── worktrees-view-compare+pr.png │ │ ├── worktrees-view-compare.png │ │ ├── worktrees-view-pr.png │ │ └── worktrees-view.png │ ├── play-button.svg │ ├── plus │ │ ├── LICENSE.plus │ │ ├── graph │ │ │ ├── actions │ │ │ │ └── gitActionsButtons.ts │ │ │ ├── context.ts │ │ │ ├── gate.ts │ │ │ ├── graph-app.ts │ │ │ ├── graph-header.ts │ │ │ ├── graph-wrapper │ │ │ │ ├── graph-wrapper-element.ts │ │ │ │ ├── graph-wrapper.react.tsx │ │ │ │ └── graph-wrapper.ts │ │ │ ├── graph.html │ │ │ ├── graph.scss │ │ │ ├── graph.ts │ │ │ ├── hover │ │ │ │ └── graphHover.ts │ │ │ ├── minimap │ │ │ │ ├── minimap-container.ts │ │ │ │ └── minimap.ts │ │ │ ├── sidebar │ │ │ │ └── sidebar.ts │ │ │ ├── stateProvider.ts │ │ │ └── styles │ │ │ │ ├── graph.css.ts │ │ │ │ └── header.css.ts │ │ ├── home │ │ │ └── components │ │ │ │ ├── active-work.ts │ │ │ │ ├── branch-card.ts │ │ │ │ ├── branch-section.ts │ │ │ │ ├── branch-threshold-filter.ts │ │ │ │ ├── launchpad.ts │ │ │ │ ├── merge-target-status.ts │ │ │ │ ├── overview.ts │ │ │ │ └── overviewState.ts │ │ ├── patchDetails │ │ │ ├── components │ │ │ │ ├── gl-draft-details.ts │ │ │ │ ├── gl-patch-create.ts │ │ │ │ ├── gl-tree-base.ts │ │ │ │ └── patch-details-app.ts │ │ │ ├── patchDetails.html │ │ │ ├── patchDetails.scss │ │ │ └── patchDetails.ts │ │ ├── shared │ │ │ └── components │ │ │ │ ├── account-chip.ts │ │ │ │ ├── chipStyles.ts │ │ │ │ ├── feature-gate-plus-state.ts │ │ │ │ ├── home-header.ts │ │ │ │ ├── integrations-chip.ts │ │ │ │ ├── merge-rebase-status.ts │ │ │ │ └── vscode.css.ts │ │ └── timeline │ │ │ ├── components │ │ │ ├── chart.css.ts │ │ │ ├── chart.ts │ │ │ ├── scroller.ts │ │ │ └── slider.ts │ │ │ ├── context.ts │ │ │ ├── stateProvider.ts │ │ │ ├── timeline.css.ts │ │ │ ├── timeline.html │ │ │ ├── timeline.scss │ │ │ └── timeline.ts │ ├── rebase │ │ ├── rebase.html │ │ ├── rebase.scss │ │ └── rebase.ts │ ├── settings │ │ ├── partials │ │ │ ├── autolinks.html │ │ │ ├── blame.html │ │ │ ├── changes.html │ │ │ ├── code-lens.html │ │ │ ├── commit-graph.html │ │ │ ├── current-line.html │ │ │ ├── dates.html │ │ │ ├── file-annotations.html │ │ │ ├── heatmap.html │ │ │ ├── hovers.html │ │ │ ├── menus.html │ │ │ ├── modes.html │ │ │ ├── rebase-editor.html │ │ │ ├── shortcuts.html │ │ │ ├── sorting.html │ │ │ ├── status-bar.html │ │ │ ├── terminal-links.html │ │ │ ├── views.branches.html │ │ │ ├── views.commitDetails.html │ │ │ ├── views.commits.html │ │ │ ├── views.contributors.html │ │ │ ├── views.file-history.html │ │ │ ├── views.line-history.html │ │ │ ├── views.remotes.html │ │ │ ├── views.repositories.html │ │ │ ├── views.searchAndCompare.html │ │ │ ├── views.stashes.html │ │ │ ├── views.tags.html │ │ │ └── views.worktrees.html │ │ ├── settings.html │ │ ├── settings.scss │ │ └── settings.ts │ ├── shared │ │ ├── appBase.ts │ │ ├── appHost.ts │ │ ├── base.scss │ │ ├── buttons.scss │ │ ├── codicons.scss │ │ ├── components │ │ │ ├── accordion │ │ │ │ └── accordion.ts │ │ │ ├── actions │ │ │ │ ├── action-item.ts │ │ │ │ └── action-nav.ts │ │ │ ├── avatar │ │ │ │ ├── avatar-list.ts │ │ │ │ └── avatar.ts │ │ │ ├── badges │ │ │ │ ├── badge.ts │ │ │ │ └── badges.css.ts │ │ │ ├── branch-icon.ts │ │ │ ├── branch-name.ts │ │ │ ├── breadcrumbs.ts │ │ │ ├── button-container.ts │ │ │ ├── button.ts │ │ │ ├── card │ │ │ │ ├── card.css.ts │ │ │ │ └── card.ts │ │ │ ├── checkbox │ │ │ │ └── checkbox.ts │ │ │ ├── chips │ │ │ │ ├── action-chip.ts │ │ │ │ └── autolink-chip.ts │ │ │ ├── code-icon.ts │ │ │ ├── commit-sha.ts │ │ │ ├── commit │ │ │ │ ├── commit-author.ts │ │ │ │ ├── commit-date.ts │ │ │ │ ├── commit-identity.ts │ │ │ │ └── commit-stats.ts │ │ │ ├── converters │ │ │ │ └── date-converter.ts │ │ │ ├── copy-container.ts │ │ │ ├── element.ts │ │ │ ├── feature-badge.ts │ │ │ ├── feature-gate.ts │ │ │ ├── formatted-date.ts │ │ │ ├── forms │ │ │ │ └── checkbox.css.ts │ │ │ ├── gitlens-logo.ts │ │ │ ├── helpers │ │ │ │ ├── react-wrapper.ts │ │ │ │ └── slots.ts │ │ │ ├── icons │ │ │ │ ├── codicons-map.ts │ │ │ │ └── glicons-map.ts │ │ │ ├── indicators │ │ │ │ ├── indicator.css.ts │ │ │ │ ├── indicator.ts │ │ │ │ ├── watermark-loader.css.ts │ │ │ │ └── watermark-loader.ts │ │ │ ├── integrations │ │ │ │ └── connect.ts │ │ │ ├── markdown │ │ │ │ ├── markdown.react.tsx │ │ │ │ └── markdown.ts │ │ │ ├── menu │ │ │ │ ├── menu-divider.ts │ │ │ │ ├── menu-item.ts │ │ │ │ ├── menu-label.ts │ │ │ │ └── menu-list.ts │ │ │ ├── overlays │ │ │ │ ├── overlays.utils.ts │ │ │ │ ├── popover.ts │ │ │ │ └── tooltip.ts │ │ │ ├── panes │ │ │ │ └── pane-group.ts │ │ │ ├── pills │ │ │ │ ├── pill.css.ts │ │ │ │ └── tracking.ts │ │ │ ├── progress.ts │ │ │ ├── promo.ts │ │ │ ├── radio │ │ │ │ ├── radio-group.ts │ │ │ │ ├── radio.css.ts │ │ │ │ └── radio.ts │ │ │ ├── ref-button.ts │ │ │ ├── ref-name.ts │ │ │ ├── ref.css.ts │ │ │ ├── repo-button-group.ts │ │ │ ├── rich │ │ │ │ ├── issue-icon.ts │ │ │ │ ├── issue-pull-request.ts │ │ │ │ ├── issue.css.ts │ │ │ │ ├── pr-icon.ts │ │ │ │ ├── pr.css.ts │ │ │ │ └── utils.ts │ │ │ ├── search │ │ │ │ ├── search-box.ts │ │ │ │ └── search-input.ts │ │ │ ├── signal-utils.ts │ │ │ ├── skeleton-loader.ts │ │ │ ├── snow.ts │ │ │ ├── status │ │ │ │ └── git-status.ts │ │ │ ├── styles │ │ │ │ └── lit │ │ │ │ │ ├── a11y.css.ts │ │ │ │ │ └── base.css.ts │ │ │ ├── tree │ │ │ │ ├── base.ts │ │ │ │ ├── tree-generator.ts │ │ │ │ ├── tree-item.ts │ │ │ │ ├── tree.css.ts │ │ │ │ └── tree.ts │ │ │ └── webview-pane.ts │ │ ├── contexts │ │ │ ├── ipc.ts │ │ │ ├── logger.ts │ │ │ ├── promos.ts │ │ │ └── telemetry.ts │ │ ├── date.ts │ │ ├── dom.ts │ │ ├── events.ts │ │ ├── git-utils.ts │ │ ├── glicons.scss │ │ ├── icons.scss │ │ ├── ipc.ts │ │ ├── popup.scss │ │ ├── styles │ │ │ ├── details-base.scss │ │ │ ├── icons │ │ │ │ ├── codicons-map.scss │ │ │ │ ├── glicons-map.scss │ │ │ │ └── utils.scss │ │ │ ├── normalize.scss │ │ │ ├── properties.scss │ │ │ ├── scrollbars.scss │ │ │ ├── shoelace │ │ │ │ └── vscode-theme.scss │ │ │ ├── theme.scss │ │ │ └── utils.scss │ │ ├── telemetry.ts │ │ ├── theme.ts │ │ └── utils.scss │ └── tsconfig.json │ ├── commitDetails │ ├── actions.ts │ ├── commitDetailsWebview.ts │ ├── protocol.ts │ └── registration.ts │ ├── home │ ├── homeWebview.ts │ ├── protocol.ts │ └── registration.ts │ ├── plus │ ├── graph │ │ ├── graphWebview.ts │ │ ├── graphWebview.utils.ts │ │ ├── protocol.ts │ │ └── registration.ts │ ├── patchDetails │ │ ├── patchDetailsWebview.ts │ │ ├── protocol.ts │ │ ├── registration.ts │ │ └── repositoryChangeset.ts │ └── timeline │ │ ├── protocol.ts │ │ ├── registration.ts │ │ ├── timelineWebview.ts │ │ └── utils │ │ └── -webview │ │ └── timeline.utils.ts │ ├── protocol.ts │ ├── rebase │ ├── protocol.ts │ └── rebaseEditor.ts │ ├── settings │ ├── protocol.ts │ ├── registration.ts │ └── settingsWebview.ts │ ├── webviewCommandRegistrar.ts │ ├── webviewController.ts │ ├── webviewProvider.ts │ └── webviewsController.ts ├── svgo.config.js ├── tests ├── docker │ ├── Dockerfile │ ├── run-e2e-test-local.sh │ ├── run-unit-tests.sh │ └── supervisor.conf └── e2e │ ├── playwright.config.ts │ ├── setup.ts │ ├── specs │ ├── baseTest.ts │ ├── command_palette.test.ts │ └── gitlens_install.test.ts │ └── tsconfig.json ├── tsconfig.base.json ├── tsconfig.browser.json ├── tsconfig.json ├── tsconfig.node.json ├── tsconfig.test.json ├── walkthroughs └── welcome │ ├── accelerate-pr-reviews.md │ ├── ai-features.md │ ├── get-started-community.md │ ├── home.md │ ├── improve-workflows-with-integrations.md │ ├── streamline-collaboration.md │ ├── thumbnails │ ├── ai-features.jpg │ ├── autolinks.jpg │ ├── cloud-patches.jpg │ ├── commit-graph.jpg │ ├── discover-pro.png │ ├── home-view.jpg │ ├── launchpad.jpg │ └── welcome.png │ ├── visualize-code-history.md │ ├── welcome-in-trial-expired-eligible.md │ ├── welcome-in-trial-expired.md │ ├── welcome-in-trial.md │ └── welcome-paid.md ├── webpack.config.images.mjs └── webpack.config.mjs /.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 Electron versions 2 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | 85769575493b939733a3dee5a590c2407923f31b 2 | 59d9071a9bb200c3ef95369a6335f8a0138f461a 3 | 9e17dbe2b7457af484c88cc15a45c42b84d2ba3b 4 | d790e9db047769de079f6838c3578f3a47bf5930 5 | 003da86002563f825b51ca95a28afc7ef85f91d8 6 | 175a81eabe741aedb30776f092a937bfee7044bc 7 | 60f8cb9fb8d1a56772d18a1a81cdd1748d589c2e 8 | 9c2df377d3e1842ed09eea5bb99be00edee9ca9c 9 | 444bf829156b3170c8b4b5156dcf10b06db83779 10 | 4dba4612670c0a942e3daa3e6a34a57aebe257ae 11 | fbccf2428fd671378202de43ff99deff66168a13 12 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | @eamodio -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Q & A 4 | url: https://github.com/gitkraken/vscode-gitlens/discussions?discussions_q=category%3AQ%26A 5 | about: Ask and answer questions about GitLens 6 | - name: Documentation 7 | url: https://help.gitkraken.com/gitlens 8 | about: Read the GitLens support documentation 9 | - name: GitKraken Support 10 | url: https://help.gitkraken.com/gitlens/gl-contact-support/?product_s_=GitLens 11 | about: Get email support for issues and questions on paid features or relating to your GitKraken account or plan 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Enhancement or feature request 2 | description: Suggest an enhancement, feature, or idea for GitLens 3 | type: 'Enhancement' 4 | labels: [triage] 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Description 9 | description: Please describe the enhancement or feature you'd like to see in GitLens. 10 | validations: 11 | required: false 12 | -------------------------------------------------------------------------------- /.github/workflows/issues-lock.yml: -------------------------------------------------------------------------------- 1 | name: 'Lock closed issues' 2 | 3 | on: 4 | schedule: 5 | - cron: '30 5 * * *' 6 | workflow_dispatch: 7 | 8 | jobs: 9 | stale: 10 | runs-on: ubuntu-latest 11 | permissions: 12 | issues: write 13 | steps: 14 | - uses: dessant/lock-threads@v5 15 | with: 16 | github-token: ${{ secrets.GITHUB_TOKEN }} 17 | issue-comment: 'This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.' 18 | issue-inactive-days: 30 19 | process-only: 'issues' 20 | -------------------------------------------------------------------------------- /.github/workflows/unit-tests.yml: -------------------------------------------------------------------------------- 1 | name: Unit tests 2 | 3 | on: 4 | pull_request: 5 | branches: ['*'] 6 | types: 7 | - opened 8 | - reopened 9 | - synchronize 10 | - ready_for_review 11 | 12 | jobs: 13 | test: 14 | name: Run unit tests 15 | runs-on: ubuntu-latest 16 | if: ${{ !github.event.pull_request.draft }} 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v3 20 | - run: cd tests/docker && ./run-e2e-test-local.sh 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .eslintcache* 3 | .vscode-clean/** 4 | .vscode-test/** 5 | .vscode-test-web/** 6 | dist 7 | out 8 | node_modules 9 | images/settings 10 | gitlens-*.vsix 11 | product.json 12 | tsconfig*.tsbuildinfo 13 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | docs/telemetry-events.md 3 | out 4 | node_modules 5 | git.d.ts 6 | glicons.scss 7 | images/icons/template/component-map.hbs 8 | images/icons/template/icons-contribution.hbs 9 | images/icons/template/mapping.json 10 | images/icons/template/sass-map.hbs 11 | images/icons/template/styles.hbs 12 | src/emojis.generated.ts 13 | src/webviews/apps/shared/components/icons/codicons-map.ts 14 | src/webviews/apps/shared/components/icons/glicons-map.ts 15 | src/webviews/apps/shared/styles/icons/codicons-map.scss 16 | src/webviews/apps/shared/styles/icons/glicons-map.scss 17 | pnpm-lock.yaml 18 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "endOfLine": "lf", 4 | "trailingComma": "all", 5 | "printWidth": 120, 6 | "singleQuote": true, 7 | "tabWidth": 4, 8 | "useTabs": true, 9 | "overrides": [ 10 | { 11 | "files": ".prettierrc", 12 | "options": { "parser": "json" } 13 | }, 14 | { 15 | "files": "*.md", 16 | "options": { "tabWidth": 2 } 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /.vscode-test.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from '@vscode/test-cli'; 2 | 3 | export default defineConfig([ 4 | { 5 | label: 'Unit Tests', 6 | files: 'out/tests/**/*.test.js', 7 | version: 'insiders', 8 | mocha: { 9 | ui: 'tdd', 10 | timeout: 20000, 11 | }, 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See http://go.microsoft.com/fwlink/?LinkId=827846 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint", 6 | "amodio.tsl-problem-matcher", 7 | "esbenp.prettier-vscode", 8 | "runem.lit-plugin", 9 | "ms-vscode.extension-test-runner", 10 | "ms-playwright.playwright" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /README.pre.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/README.pre.md -------------------------------------------------------------------------------- /images/dark/icon-azdo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-branch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-checkout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-commit-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-compare-ref-working.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-diff.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/dark/icon-gitlens-filled-orange.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-gitlens-filled-progress.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-match-regex-selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-match-regex.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-next-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-no-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-open-revision.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-prev-commit-menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /images/dark/icon-prev-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-push-force.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-ahead-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-ahead-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-ahead.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-behind-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-behind-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-behind.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-changes-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-changes-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-changes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-diverged-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-diverged-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-diverged.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-synced-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo-synced-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-repo-synced.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-repo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/dark/icon-stash-pop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-stash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-added.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-conflict.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-copied.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-deleted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-ignored.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-modified.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-renamed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-status-untracked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/dark/icon-tag-selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-unfold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/dark/icon-view-auto.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/docs/branches-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/branches-view.png -------------------------------------------------------------------------------- /images/docs/code-suggest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/code-suggest.png -------------------------------------------------------------------------------- /images/docs/commit-graph-illustrated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commit-graph-illustrated.png -------------------------------------------------------------------------------- /images/docs/commit-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commit-graph.png -------------------------------------------------------------------------------- /images/docs/commits-view-merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commits-view-merge.png -------------------------------------------------------------------------------- /images/docs/commits-view-rebase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commits-view-rebase.png -------------------------------------------------------------------------------- /images/docs/commits-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/commits-view.png -------------------------------------------------------------------------------- /images/docs/contributors-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/contributors-view.png -------------------------------------------------------------------------------- /images/docs/current-line-blame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/current-line-blame.png -------------------------------------------------------------------------------- /images/docs/file-history-view-merge-conflict.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/file-history-view-merge-conflict.png -------------------------------------------------------------------------------- /images/docs/file-history-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/file-history-view.png -------------------------------------------------------------------------------- /images/docs/get-started-video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/get-started-video.png -------------------------------------------------------------------------------- /images/docs/git-command-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/git-command-palette.png -------------------------------------------------------------------------------- /images/docs/gutter-blame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/gutter-blame.png -------------------------------------------------------------------------------- /images/docs/gutter-changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/gutter-changes.png -------------------------------------------------------------------------------- /images/docs/gutter-heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/gutter-heatmap.png -------------------------------------------------------------------------------- /images/docs/hovers-current-line-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/hovers-current-line-details.png -------------------------------------------------------------------------------- /images/docs/hovers-current-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/hovers-current-line.png -------------------------------------------------------------------------------- /images/docs/launchpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/launchpad.png -------------------------------------------------------------------------------- /images/docs/rebase.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/rebase.gif -------------------------------------------------------------------------------- /images/docs/remotes-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/remotes-view.png -------------------------------------------------------------------------------- /images/docs/revision-navigation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/revision-navigation.gif -------------------------------------------------------------------------------- /images/docs/search-and-compare-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/search-and-compare-view.png -------------------------------------------------------------------------------- /images/docs/side-bar-views.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/side-bar-views.png -------------------------------------------------------------------------------- /images/docs/sponsors/cresus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/cresus.png -------------------------------------------------------------------------------- /images/docs/sponsors/dendron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/dendron.png -------------------------------------------------------------------------------- /images/docs/sponsors/embark-studios_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/embark-studios_dark.png -------------------------------------------------------------------------------- /images/docs/sponsors/embark-studios_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/embark-studios_light.png -------------------------------------------------------------------------------- /images/docs/sponsors/localize_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/localize_dark.png -------------------------------------------------------------------------------- /images/docs/sponsors/localize_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/localize_light.png -------------------------------------------------------------------------------- /images/docs/sponsors/stepsize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/stepsize.png -------------------------------------------------------------------------------- /images/docs/sponsors/tabnine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/sponsors/tabnine.png -------------------------------------------------------------------------------- /images/docs/stashes-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/stashes-view.png -------------------------------------------------------------------------------- /images/docs/status-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/status-bar.png -------------------------------------------------------------------------------- /images/docs/tags-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/tags-view.png -------------------------------------------------------------------------------- /images/docs/terminal-links.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/terminal-links.gif -------------------------------------------------------------------------------- /images/docs/visual-file-history-illustrated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/visual-file-history-illustrated.png -------------------------------------------------------------------------------- /images/docs/worktrees-illustrated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/worktrees-illustrated.png -------------------------------------------------------------------------------- /images/docs/worktrees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/docs/worktrees.png -------------------------------------------------------------------------------- /images/gitlens-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/gitlens-icon.png -------------------------------------------------------------------------------- /images/icons/branches-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/code-suggestion.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/commit-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/commit-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/commits-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/commits-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/confirm-checked.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/confirm-unchecked.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/contributors-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/gitlens-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/gitlens.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/history-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/history-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/inspect.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/launchpad-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/launchpad-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/list-auto.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/next-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/open-revision.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/pinned-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/prev-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/provider-azdo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/provider-bitbucket.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/provider-gerrit.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/provider-github.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/provider-jira.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/remotes-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/remotes-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/repository-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/search-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/search-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/stash-pop.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/stash-save.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/stashes-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/stashes-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/switch.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/tags-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/tags-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/template/component-map.hbs: -------------------------------------------------------------------------------- 1 | // This file is generated by (vscode-gitlens)/scripts/export-codicons.js 2 | // Do not edit this file directly 3 | 4 | export const iconFontFamily = '{{ name }}'; 5 | 6 | export const iconMap = Object.freeze({ 7 | {{#each codepoints}} 8 | '{{ @key }}': '\\\{{ codepoint this }}', 9 | {{/each}} 10 | }); 11 | -------------------------------------------------------------------------------- /images/icons/template/icons-contribution.hbs: -------------------------------------------------------------------------------- 1 | { 2 | "icons": { 3 | {{#each codepoints}} 4 | "gitlens-{{@key}}": { 5 | "description": "{{@key}} icon", 6 | "default": { 7 | "fontPath": "dist/glicons.woff2", 8 | "fontCharacter": "\\\{{codepoint this}}" 9 | } 10 | {{#if @last}} 11 | } 12 | {{else}} 13 | }, 14 | {{/if}} 15 | {{/each}} 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /images/icons/template/sass-map.hbs: -------------------------------------------------------------------------------- 1 | // This file is generated by (vscode-gitlens)/scripts/export-codicons.js 2 | // Do not edit this file directly 3 | 4 | $icon-font-family: '{{ name }}'; 5 | 6 | $icon-map: ( 7 | {{#each codepoints}} 8 | '{{@key}}': '\\{{ codepoint this }}', 9 | {{/each}} 10 | ); 11 | -------------------------------------------------------------------------------- /images/icons/workspaces-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/worktrees-view-filled.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/icons/worktrees-view.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /images/light/icon-azdo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-branch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-checkout.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-commit-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-compare-ref-working.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-diff.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-gitlens-filled-orange.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-gitlens-filled-progress.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /images/light/icon-match-regex-selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-match-regex.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-next-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-no-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-open-revision.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-prev-commit-menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /images/light/icon-prev-commit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-push-force.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-ahead-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-ahead-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-ahead.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-behind-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-behind-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-behind.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-changes-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-changes-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-changes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-diverged-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-diverged-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-diverged.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-synced-cloud.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo-synced-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-repo-synced.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-repo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /images/light/icon-stash-pop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-stash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-added.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-conflict.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-copied.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-deleted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-ignored.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-modified.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-renamed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-status-untracked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /images/light/icon-tag-selected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-unfold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/light/icon-view-auto.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/originals/blame.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/blame.pdn -------------------------------------------------------------------------------- /images/originals/branches-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/branches-view.pdn -------------------------------------------------------------------------------- /images/originals/changes.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/changes.pdn -------------------------------------------------------------------------------- /images/originals/code-lens.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/code-lens.pdn -------------------------------------------------------------------------------- /images/originals/commits-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/commits-view.pdn -------------------------------------------------------------------------------- /images/originals/contributors-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/contributors-view.pdn -------------------------------------------------------------------------------- /images/originals/current-line-blame.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/current-line-blame.pdn -------------------------------------------------------------------------------- /images/originals/file-history-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/file-history-view.pdn -------------------------------------------------------------------------------- /images/originals/gitlens-logo-1000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-1000.png -------------------------------------------------------------------------------- /images/originals/gitlens-logo-2000.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-2000.png -------------------------------------------------------------------------------- /images/originals/gitlens-logo-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-256.png -------------------------------------------------------------------------------- /images/originals/gitlens-logo-500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo-500.png -------------------------------------------------------------------------------- /images/originals/gitlens-logo.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo.ai -------------------------------------------------------------------------------- /images/originals/gitlens-logo.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-logo.pdn -------------------------------------------------------------------------------- /images/originals/gitlens-mono-inverted.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-mono-inverted.pdn -------------------------------------------------------------------------------- /images/originals/gitlens-mono.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens-mono.pdn -------------------------------------------------------------------------------- /images/originals/gitlens.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/gitlens.pdn -------------------------------------------------------------------------------- /images/originals/heatmap.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/heatmap.pdn -------------------------------------------------------------------------------- /images/originals/line-history-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/line-history-view.pdn -------------------------------------------------------------------------------- /images/originals/remotes-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/remotes-view.pdn -------------------------------------------------------------------------------- /images/originals/repositories-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/repositories-view.pdn -------------------------------------------------------------------------------- /images/originals/search-and-compare-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/search-and-compare-view.pdn -------------------------------------------------------------------------------- /images/originals/stashes-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/stashes-view.pdn -------------------------------------------------------------------------------- /images/originals/status-bar.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/status-bar.pdn -------------------------------------------------------------------------------- /images/originals/tags-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/tags-view.pdn -------------------------------------------------------------------------------- /images/originals/worktrees-view.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/images/originals/worktrees-view.pdn -------------------------------------------------------------------------------- /patches/debug.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return function () {}; 3 | } 4 | -------------------------------------------------------------------------------- /patches/tr46.js: -------------------------------------------------------------------------------- 1 | function toASCII(d) { 2 | return d; 3 | } 4 | module.exports = { toASCII }; 5 | -------------------------------------------------------------------------------- /patches/whatwg-url.js: -------------------------------------------------------------------------------- 1 | exports.URL = require('url').URL; 2 | -------------------------------------------------------------------------------- /resources/icons.fig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/resources/icons.fig -------------------------------------------------------------------------------- /src/@types/bb.d.ts: -------------------------------------------------------------------------------- 1 | export interface ChartWithInternal { 2 | internal: ChartInternal; 3 | } 4 | 5 | export interface ChartInternal { 6 | showGridFocus(data?: DataItem[]): void; 7 | hideGridFocus(): void; 8 | 9 | setExpand?(i: number, id: string | null, reset: boolean): void; 10 | toggleShape?(that: object | null, d: DataItem, i: number): void; 11 | } 12 | -------------------------------------------------------------------------------- /src/@types/vscode.git.resources.d.ts: -------------------------------------------------------------------------------- 1 | import type { SourceControlResourceState } from 'vscode'; 2 | import type { Status as ScmStatus } from '../@types/vscode.git.enums.ts'; 3 | import type { ScmResourceGroupType } from '../@types/vscode.git.resources.enums'; 4 | 5 | export interface ScmResource extends SourceControlResourceState { 6 | readonly resourceGroupType?: ScmResourceGroupType; 7 | readonly type?: ScmStatus; 8 | } 9 | -------------------------------------------------------------------------------- /src/@types/vscode.git.resources.enums.ts: -------------------------------------------------------------------------------- 1 | export { Status as ScmStatus } from './vscode.git.enums'; 2 | 3 | export const enum ScmResourceGroupType { 4 | Merge, 5 | Index, 6 | WorkingTree, 7 | } 8 | -------------------------------------------------------------------------------- /src/@types/vscode.git.timeline.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'vscode' { 2 | export interface GitTimelineItem extends TimelineItem { 3 | readonly ref: string; 4 | readonly previousRef: string; 5 | readonly message: string; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/@types/vscode.git.uri.ts: -------------------------------------------------------------------------------- 1 | import { Uri } from 'vscode'; 2 | import { Schemes } from '../constants'; 3 | 4 | export interface GitUriQuery { 5 | path: string; 6 | ref: string; 7 | 8 | decoration?: string; 9 | } 10 | 11 | export function getQueryDataFromScmGitUri(uri: Uri): GitUriQuery | undefined { 12 | if (uri.scheme === Schemes.Git) { 13 | try { 14 | return JSON.parse(uri.query) as GitUriQuery; 15 | } catch {} 16 | } 17 | return undefined; 18 | } 19 | -------------------------------------------------------------------------------- /src/@types/vscode.iconpath.d.ts: -------------------------------------------------------------------------------- 1 | import type { ThemeIcon, Uri } from 'vscode'; 2 | 3 | export type IconPath = { light: Uri; dark: Uri } | ThemeIcon; 4 | -------------------------------------------------------------------------------- /src/commands/addAuthors.ts: -------------------------------------------------------------------------------- 1 | import type { SourceControl } from 'vscode'; 2 | import type { Container } from '../container'; 3 | import { executeGitCommand } from '../git/actions'; 4 | import { command } from '../system/-webview/command'; 5 | import { GlCommandBase } from './commandBase'; 6 | 7 | @command() 8 | export class AddAuthorsCommand extends GlCommandBase { 9 | constructor(private readonly container: Container) { 10 | super('gitlens.addAuthors'); 11 | } 12 | 13 | execute(sourceControl: SourceControl): Promise { 14 | let repo; 15 | if (sourceControl?.rootUri != null) { 16 | repo = this.container.git.getRepository(sourceControl.rootUri); 17 | } 18 | 19 | return executeGitCommand({ 20 | command: 'co-authors', 21 | state: { repo: repo, contributors: undefined }, 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/commands/commandBase.utils.ts: -------------------------------------------------------------------------------- 1 | import type { TextEditor, Uri } from 'vscode'; 2 | 3 | export function getCommandUri(uri?: Uri, editor?: TextEditor): Uri | undefined { 4 | // Always use the editor.uri (if we have one), so we are correct for a split diff 5 | return editor?.document?.uri ?? uri; 6 | } 7 | -------------------------------------------------------------------------------- /src/commands/rebaseEditor.ts: -------------------------------------------------------------------------------- 1 | import type { Container } from '../container'; 2 | import { command } from '../system/-webview/command'; 3 | import { GlCommandBase } from './commandBase'; 4 | 5 | @command() 6 | export class DisableRebaseEditorCommand extends GlCommandBase { 7 | constructor(private readonly container: Container) { 8 | super('gitlens.disableRebaseEditor'); 9 | } 10 | 11 | execute(): Promise { 12 | return this.container.rebaseEditor.setEnabled(false); 13 | } 14 | } 15 | 16 | @command() 17 | export class EnableRebaseEditorCommand extends GlCommandBase { 18 | constructor(private readonly container: Container) { 19 | super('gitlens.enableRebaseEditor'); 20 | } 21 | 22 | execute(): Promise { 23 | return this.container.rebaseEditor.setEnabled(true); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/commands/refreshHover.ts: -------------------------------------------------------------------------------- 1 | import type { Container } from '../container'; 2 | import { command, executeCoreCommand } from '../system/-webview/command'; 3 | import { GlCommandBase } from './commandBase'; 4 | 5 | @command() 6 | export class RefreshHoverCommand extends GlCommandBase { 7 | constructor(private readonly container: Container) { 8 | super('gitlens.refreshHover'); 9 | } 10 | 11 | async execute(): Promise { 12 | // TODO@eamodio figure out how to really refresh/update a hover 13 | await executeCoreCommand('editor.action.showHover'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/commands/showQuickRepoStatus.ts: -------------------------------------------------------------------------------- 1 | import type { Container } from '../container'; 2 | import { executeGitCommand } from '../git/actions'; 3 | import { command } from '../system/-webview/command'; 4 | import { GlCommandBase } from './commandBase'; 5 | 6 | export interface ShowQuickRepoStatusCommandArgs { 7 | repoPath?: string; 8 | } 9 | 10 | @command() 11 | export class ShowQuickRepoStatusCommand extends GlCommandBase { 12 | constructor(private readonly container: Container) { 13 | super('gitlens.showQuickRepoStatus'); 14 | } 15 | 16 | async execute(args?: ShowQuickRepoStatusCommandArgs): Promise { 17 | return executeGitCommand({ 18 | command: 'status', 19 | state: { 20 | repo: args?.repoPath, 21 | }, 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/commands/showQuickStashList.ts: -------------------------------------------------------------------------------- 1 | import type { Container } from '../container'; 2 | import { executeGitCommand } from '../git/actions'; 3 | import { command } from '../system/-webview/command'; 4 | import { GlCommandBase } from './commandBase'; 5 | 6 | export interface ShowQuickStashListCommandArgs { 7 | repoPath?: string; 8 | } 9 | 10 | @command() 11 | export class ShowQuickStashListCommand extends GlCommandBase { 12 | constructor(private readonly container: Container) { 13 | super('gitlens.showQuickStashList'); 14 | } 15 | 16 | execute(args?: ShowQuickStashListCommandArgs): Promise { 17 | return executeGitCommand({ 18 | command: 'stash', 19 | state: { 20 | subcommand: 'list', 21 | repo: args?.repoPath, 22 | }, 23 | }); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/commands/switchAIModel.ts: -------------------------------------------------------------------------------- 1 | import type { Source } from '../constants.telemetry'; 2 | import type { Container } from '../container'; 3 | import { command } from '../system/-webview/command'; 4 | import { GlCommandBase } from './commandBase'; 5 | 6 | @command() 7 | export class SwitchAIModelCommand extends GlCommandBase { 8 | constructor(private readonly container: Container) { 9 | super('gitlens.ai.switchProvider', ['gitlens.switchAIModel']); 10 | } 11 | 12 | async execute(source?: Source): Promise { 13 | await this.container.ai.switchModel(source); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/commands/toggleCodeLens.ts: -------------------------------------------------------------------------------- 1 | import type { Container } from '../container'; 2 | import { command } from '../system/-webview/command'; 3 | import { GlCommandBase } from './commandBase'; 4 | 5 | @command() 6 | export class ToggleCodeLensCommand extends GlCommandBase { 7 | constructor(private readonly container: Container) { 8 | super('gitlens.toggleCodeLens'); 9 | } 10 | 11 | execute(): void { 12 | this.container.codeLens.toggleCodeLens(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/emojis.ts: -------------------------------------------------------------------------------- 1 | import { emojis as compressed } from './emojis.generated'; 2 | import { decompressFromBase64LZString } from './system/string'; 3 | 4 | const emojiRegex = /(^|\s):([-+_a-z0-9]+):($|\s)/g; 5 | 6 | let emojis: Record | undefined = undefined; 7 | export function emojify(message: string): string { 8 | if (emojis == null) { 9 | emojis = JSON.parse(decompressFromBase64LZString(compressed)); 10 | } 11 | return message.replace(emojiRegex, (s, $1, code, $3) => (emojis![code] ? `${$1}${emojis![code]}${$3}` : s)); 12 | } 13 | -------------------------------------------------------------------------------- /src/env/browser/base64.ts: -------------------------------------------------------------------------------- 1 | const { fromCharCode } = String; 2 | const textEncoder = new TextEncoder(); 3 | 4 | export function base64(s: string): string; 5 | export function base64(bytes: Uint8Array): string; 6 | export function base64(data: string | Uint8Array): string { 7 | const bytes = typeof data === 'string' ? textEncoder.encode(data) : data; 8 | 9 | let output = ''; 10 | for (let i = 0, { length } = bytes; i < length; i++) { 11 | output += fromCharCode(bytes[i]); 12 | } 13 | return globalThis.btoa(output); 14 | } 15 | 16 | export function fromBase64(s: string): Uint8Array { 17 | const decoded = globalThis.atob(s); 18 | 19 | const len = decoded.length; 20 | const bytes = new Uint8Array(len); 21 | for (let i = 0; i < len; i++) { 22 | bytes[i] = decoded.charCodeAt(i); 23 | } 24 | return bytes; 25 | } 26 | -------------------------------------------------------------------------------- /src/env/browser/crypto.ts: -------------------------------------------------------------------------------- 1 | import { base64 } from './base64'; 2 | import { md5 as _md5 } from './md5'; 3 | 4 | export function getNonce(): string { 5 | return base64(globalThis.crypto.getRandomValues(new Uint8Array(16))); 6 | } 7 | 8 | export function md5(data: string, encoding: 'base64' | 'hex' = 'hex'): string { 9 | return _md5(data, encoding); 10 | } 11 | 12 | export function uuid(): string { 13 | return globalThis.crypto.randomUUID(); 14 | } 15 | -------------------------------------------------------------------------------- /src/env/browser/hrtime.ts: -------------------------------------------------------------------------------- 1 | export function hrtime(time?: [number, number]): [number, number] { 2 | const now = performance.now() * 1e-3; 3 | let seconds = Math.floor(now); 4 | let nanoseconds = Math.floor((now % 1) * 1e9); 5 | if (time !== undefined) { 6 | seconds = seconds - time[0]; 7 | nanoseconds = nanoseconds - time[1]; 8 | if (nanoseconds < 0) { 9 | seconds--; 10 | nanoseconds += 1e9; 11 | } 12 | } 13 | return [seconds, nanoseconds]; 14 | } 15 | -------------------------------------------------------------------------------- /src/env/browser/json.ts: -------------------------------------------------------------------------------- 1 | export function loggingJsonReplacer(key: string, value: unknown): unknown { 2 | if (key === '' || value == null || typeof value !== 'object') return value; 3 | 4 | if (value instanceof Error) return String(value); 5 | 6 | return value; 7 | } 8 | 9 | export function serializeJsonReplacer(this: any, key: string, value: unknown): unknown { 10 | if (value instanceof Date) return value.getTime(); 11 | if (value instanceof Map || value instanceof Set) return [...value.entries()]; 12 | if (value instanceof Function || value instanceof Error) return undefined; 13 | if (value instanceof RegExp) return value.toString(); 14 | 15 | const original = this[key]; 16 | return original instanceof Date ? original.getTime() : value; 17 | } 18 | -------------------------------------------------------------------------------- /src/env/node/base64.ts: -------------------------------------------------------------------------------- 1 | export function base64(s: string): string; 2 | export function base64(bytes: Uint8Array): string; 3 | export function base64(data: string | Uint8Array): string { 4 | return Buffer.from(data).toString('base64'); 5 | } 6 | 7 | export function fromBase64(s: string): Uint8Array { 8 | return Buffer.from(s, 'base64') as unknown as Uint8Array; 9 | } 10 | -------------------------------------------------------------------------------- /src/env/node/crypto.ts: -------------------------------------------------------------------------------- 1 | import { createHash, randomBytes, randomUUID } from 'crypto'; 2 | 3 | export function getNonce(): string { 4 | return randomBytes(16).toString('base64'); 5 | } 6 | 7 | export function md5(data: string, encoding: 'base64' | 'hex' = 'hex'): string { 8 | return createHash('md5').update(data).digest(encoding); 9 | } 10 | 11 | export function uuid(): string { 12 | return randomUUID(); 13 | } 14 | -------------------------------------------------------------------------------- /src/env/node/hex.ts: -------------------------------------------------------------------------------- 1 | export function encodeUtf8Hex(s: string): string { 2 | return Buffer.from(s, 'utf8').toString('hex'); 3 | } 4 | 5 | export function decodeUtf8Hex(hex: string): string { 6 | return Buffer.from(hex, 'hex').toString('utf8'); 7 | } 8 | -------------------------------------------------------------------------------- /src/env/node/hrtime.ts: -------------------------------------------------------------------------------- 1 | export { hrtime } from 'process'; 2 | -------------------------------------------------------------------------------- /src/git/gitUri.authority.ts: -------------------------------------------------------------------------------- 1 | import { decodeUtf8Hex, encodeUtf8Hex } from '@env/hex'; 2 | 3 | export function decodeGitLensRevisionUriAuthority(authority: string): T { 4 | return JSON.parse(decodeUtf8Hex(authority)) as T; 5 | } 6 | 7 | export function encodeGitLensRevisionUriAuthority(metadata: T): string { 8 | return encodeUtf8Hex(JSON.stringify(metadata)); 9 | } 10 | 11 | export function decodeRemoteHubAuthority(authority: string): { scheme: string; metadata: T | undefined } { 12 | const [scheme, encoded] = authority.split('+'); 13 | 14 | let metadata: T | undefined; 15 | if (encoded) { 16 | try { 17 | const data = JSON.parse(decodeUtf8Hex(encoded)); 18 | metadata = data as T; 19 | } catch {} 20 | } 21 | 22 | return { scheme: scheme, metadata: metadata }; 23 | } 24 | -------------------------------------------------------------------------------- /src/git/location/repositorylocationProvider.ts: -------------------------------------------------------------------------------- 1 | import type { Disposable } from 'vscode'; 2 | 3 | export interface RepositoryLocationProvider extends Disposable { 4 | getLocation( 5 | remoteUrl: string | undefined, 6 | repoInfo?: { provider?: string; owner?: string; repoName?: string }, 7 | ): Promise; 8 | 9 | storeLocation( 10 | path: string, 11 | remoteUrl: string | undefined, 12 | repoInfo?: { provider?: string; owner?: string; repoName?: string }, 13 | ): Promise; 14 | } 15 | -------------------------------------------------------------------------------- /src/git/models/author.ts: -------------------------------------------------------------------------------- 1 | import type { ProviderReference } from './remoteProvider'; 2 | 3 | export interface CommitAuthor { 4 | provider: ProviderReference; 5 | readonly id: string | undefined; 6 | readonly username: string | undefined; 7 | name: string | undefined; 8 | email: string | undefined; 9 | avatarUrl: string | undefined; 10 | } 11 | 12 | export interface UnidentifiedAuthor extends CommitAuthor { 13 | readonly id: undefined; 14 | readonly username: undefined; 15 | } 16 | 17 | export interface Account extends CommitAuthor { 18 | readonly id: string; 19 | } 20 | -------------------------------------------------------------------------------- /src/git/models/blame.ts: -------------------------------------------------------------------------------- 1 | import type { GitCommit, GitCommitLine } from './commit'; 2 | 3 | export interface GitBlame { 4 | readonly repoPath: string; 5 | readonly authors: Map; 6 | readonly commits: Map; 7 | readonly lines: GitCommitLine[]; 8 | } 9 | 10 | export interface GitBlameAuthor { 11 | name: string; 12 | lineCount: number; 13 | } 14 | 15 | export interface GitBlameLine { 16 | readonly author?: GitBlameAuthor; 17 | readonly commit: GitCommit; 18 | readonly line: GitCommitLine; 19 | } 20 | -------------------------------------------------------------------------------- /src/git/models/defaultBranch.ts: -------------------------------------------------------------------------------- 1 | import type { ProviderReference } from './remoteProvider'; 2 | 3 | export interface DefaultBranch { 4 | provider: ProviderReference; 5 | name: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/git/models/file.ts: -------------------------------------------------------------------------------- 1 | import type { GitCommit } from './commit'; 2 | import type { GitFileConflictStatus, GitFileIndexStatus, GitFileStatus, GitFileWorkingTreeStatus } from './fileStatus'; 3 | 4 | export interface GitFile { 5 | readonly path: string; 6 | readonly originalPath?: string; 7 | status: GitFileStatus; 8 | readonly repoPath?: string; 9 | 10 | readonly conflictStatus?: GitFileConflictStatus; 11 | readonly indexStatus?: GitFileIndexStatus; 12 | readonly workingTreeStatus?: GitFileWorkingTreeStatus; 13 | } 14 | 15 | export interface GitFileWithCommit extends GitFile { 16 | readonly commit: GitCommit; 17 | } 18 | -------------------------------------------------------------------------------- /src/git/models/fileStatus.ts: -------------------------------------------------------------------------------- 1 | export declare type GitFileStatus = GitFileConflictStatus | GitFileIndexStatus | GitFileWorkingTreeStatus; 2 | 3 | export const enum GitFileConflictStatus { 4 | AddedByBoth = 'AA', 5 | AddedByUs = 'AU', 6 | AddedByThem = 'UA', 7 | DeletedByBoth = 'DD', 8 | DeletedByUs = 'DU', 9 | DeletedByThem = 'UD', 10 | ModifiedByBoth = 'UU', 11 | } 12 | 13 | export const enum GitFileIndexStatus { 14 | Modified = 'M', 15 | Added = 'A', 16 | Deleted = 'D', 17 | Renamed = 'R', 18 | Copied = 'C', 19 | Unchanged = '.', 20 | Untracked = '?', 21 | Ignored = '!', 22 | UpdatedButUnmerged = 'U', 23 | } 24 | 25 | export const enum GitFileWorkingTreeStatus { 26 | Modified = 'M', 27 | Added = 'A', 28 | Deleted = 'D', 29 | Untracked = '?', 30 | Ignored = '!', 31 | } 32 | -------------------------------------------------------------------------------- /src/git/models/issueOrPullRequest.ts: -------------------------------------------------------------------------------- 1 | import type { ProviderReference } from './remoteProvider'; 2 | 3 | export interface IssueOrPullRequest { 4 | readonly type: IssueOrPullRequestType; 5 | readonly provider: ProviderReference; 6 | readonly id: string; 7 | readonly nodeId: string | undefined; 8 | readonly title: string; 9 | readonly url: string; 10 | readonly createdDate: Date; 11 | readonly updatedDate: Date; 12 | readonly closedDate?: Date; 13 | readonly closed: boolean; 14 | readonly state: IssueOrPullRequestState; 15 | readonly commentsCount?: number; 16 | readonly thumbsUpCount?: number; 17 | } 18 | 19 | export type IssueOrPullRequestType = 'issue' | 'pullrequest'; 20 | export type IssueOrPullRequestState = 'opened' | 'closed' | 'merged'; 21 | -------------------------------------------------------------------------------- /src/git/models/log.ts: -------------------------------------------------------------------------------- 1 | import type { SearchQueryFilters } from '../search'; 2 | import type { GitCommit } from './commit'; 3 | 4 | export interface GitLog { 5 | readonly repoPath: string; 6 | readonly commits: Map; 7 | readonly count: number; 8 | 9 | readonly sha: string | undefined; 10 | readonly searchFilters?: SearchQueryFilters; 11 | 12 | readonly limit: number | undefined; 13 | readonly startingCursor?: string; 14 | readonly endingCursor?: string; 15 | readonly hasMore: boolean; 16 | 17 | readonly pagedCommits?: () => Map; 18 | 19 | query?(limit: number | undefined): Promise; 20 | more?(limit: number | { until?: string } | undefined): Promise; 21 | } 22 | -------------------------------------------------------------------------------- /src/git/models/mergeConflict.ts: -------------------------------------------------------------------------------- 1 | export interface MergeConflict { 2 | repoPath: string; 3 | branch: string; 4 | target: string; 5 | files: MergeConflictFile[]; 6 | } 7 | 8 | export interface MergeConflictFile { 9 | path: string; 10 | } 11 | -------------------------------------------------------------------------------- /src/git/models/patch.ts: -------------------------------------------------------------------------------- 1 | import type { Uri } from 'vscode'; 2 | import type { GitCommit } from './commit'; 3 | import type { GitDiffFiles } from './diff'; 4 | import type { Repository } from './repository'; 5 | 6 | /** 7 | * For a single commit `to` is the commit SHA and `from` is its parent `^` 8 | * For a commit range `to` is the tip SHA and `from` is the base SHA 9 | * For a WIP `to` is the "uncommitted" SHA and `from` is the current HEAD SHA 10 | */ 11 | export interface PatchRevisionRange { 12 | from: string; 13 | to: string; 14 | } 15 | 16 | export interface GitPatch { 17 | readonly type: 'local'; 18 | readonly contents: string; 19 | 20 | readonly id?: undefined; 21 | readonly uri?: Uri; 22 | 23 | baseRef?: string; 24 | commit?: GitCommit; 25 | files?: GitDiffFiles['files']; 26 | repository?: Repository; 27 | } 28 | -------------------------------------------------------------------------------- /src/git/models/pathMapping.ts: -------------------------------------------------------------------------------- 1 | export type LocalRepoDataMap = Record< 2 | string /* key can be remote url, provider/owner/name, or first commit SHA*/, 3 | RepoLocalData 4 | >; 5 | 6 | export interface RepoLocalData { 7 | paths: string[]; 8 | name?: string; 9 | hostName?: string; 10 | owner?: string; 11 | hostingServiceType?: string; 12 | } 13 | -------------------------------------------------------------------------------- /src/git/models/remoteProvider.ts: -------------------------------------------------------------------------------- 1 | export interface ProviderReference { 2 | readonly id: string; 3 | readonly name: string; 4 | readonly domain: string; 5 | readonly icon: string; 6 | } 7 | 8 | export interface Provider extends ProviderReference { 9 | getIgnoreSSLErrors(): boolean | 'force'; 10 | reauthenticate(): Promise; 11 | trackRequestException(): void; 12 | } 13 | -------------------------------------------------------------------------------- /src/git/models/repositoryMetadata.ts: -------------------------------------------------------------------------------- 1 | import type { ProviderReference } from './remoteProvider'; 2 | 3 | export interface RepositoryMetadata { 4 | provider: ProviderReference; 5 | owner: string; 6 | name: string; 7 | isFork: boolean; 8 | parent?: { 9 | owner: string; 10 | name: string; 11 | }; 12 | } 13 | -------------------------------------------------------------------------------- /src/git/models/repositoryShape.ts: -------------------------------------------------------------------------------- 1 | import type { SupportedCloudIntegrationIds } from '../../constants.integrations'; 2 | import type { RemoteProviderSupportedFeatures } from '../remotes/remoteProvider'; 3 | 4 | export interface RepositoryShape { 5 | id: string; 6 | name: string; 7 | path: string; 8 | uri: string; 9 | virtual: boolean; 10 | 11 | provider?: { 12 | name: string; 13 | icon?: string; 14 | integration?: { id: SupportedCloudIntegrationIds; connected: boolean }; 15 | supportedFeatures: RemoteProviderSupportedFeatures; 16 | url?: string; 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /src/git/models/resourceDescriptor.ts: -------------------------------------------------------------------------------- 1 | export type ResourceDescriptor = { key: string } & Record; 2 | 3 | export type IssueResourceDescriptor = ResourceDescriptor & { 4 | id: string; 5 | name: string; 6 | }; 7 | 8 | export type RepositoryDescriptor = ResourceDescriptor & { 9 | owner: string; 10 | name: string; 11 | }; 12 | -------------------------------------------------------------------------------- /src/git/models/revision.ts: -------------------------------------------------------------------------------- 1 | export const deletedOrMissing = '0000000000000000000000000000000000000000-'; 2 | export const uncommitted = '0000000000000000000000000000000000000000'; 3 | export const uncommittedStaged = '0000000000000000000000000000000000000000:'; 4 | 5 | export type GitRevisionRange = 6 | | `${GitRevisionRangeNotation}${string}` 7 | | `${string}${GitRevisionRangeNotation}` 8 | | `${string}${GitRevisionRangeNotation}${string}`; 9 | 10 | export type GitRevisionRangeNotation = '..' | '...'; 11 | -------------------------------------------------------------------------------- /src/git/models/shortlog.ts: -------------------------------------------------------------------------------- 1 | import type { GitContributor } from './contributor'; 2 | 3 | export interface GitShortLog { 4 | readonly repoPath: string; 5 | readonly contributors: GitContributor[]; 6 | } 7 | -------------------------------------------------------------------------------- /src/git/models/stash.ts: -------------------------------------------------------------------------------- 1 | import type { GitStashCommit } from './commit'; 2 | 3 | export interface GitStash { 4 | readonly repoPath: string; 5 | readonly stashes: Map; 6 | } 7 | -------------------------------------------------------------------------------- /src/git/models/tree.ts: -------------------------------------------------------------------------------- 1 | export interface GitTreeEntry { 2 | ref: string; 3 | oid: string; 4 | path: string; 5 | size: number; 6 | type: 'blob' | 'tree'; 7 | } 8 | 9 | export interface GitLsFilesEntry { 10 | mode: string; 11 | oid: string; 12 | path: string; 13 | stage: number; 14 | } 15 | -------------------------------------------------------------------------------- /src/git/models/user.ts: -------------------------------------------------------------------------------- 1 | export interface GitUser { 2 | name: string | undefined; 3 | email: string | undefined; 4 | 5 | id?: string | undefined; 6 | username?: string | undefined; 7 | } 8 | -------------------------------------------------------------------------------- /src/git/utils/fetch.utils.ts: -------------------------------------------------------------------------------- 1 | const millisecondsPerMinute = 60 * 1000; 2 | const millisecondsPerHour = 60 * 60 * 1000; 3 | export const millisecondsPerDay = 24 * 60 * 60 * 1000; 4 | 5 | export function getLastFetchedUpdateInterval(lastFetched: number): number { 6 | const timeDiff = Date.now() - lastFetched; 7 | return timeDiff < millisecondsPerDay 8 | ? (timeDiff < millisecondsPerHour ? millisecondsPerMinute : millisecondsPerHour) / 2 9 | : 0; 10 | } 11 | -------------------------------------------------------------------------------- /src/git/utils/file.utils.ts: -------------------------------------------------------------------------------- 1 | import type { GitFile } from '../models/file'; 2 | 3 | export function isGitFile(file: any | undefined): file is GitFile { 4 | return ( 5 | file != null && 6 | 'fileName' in file && 7 | typeof file.fileName === 'string' && 8 | 'status' in file && 9 | typeof file.status === 'string' && 10 | file.status.length === 1 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /src/git/utils/issueOrPullRequest.utils.ts: -------------------------------------------------------------------------------- 1 | import type { IssueOrPullRequest } from '../models/issueOrPullRequest'; 2 | 3 | export function serializeIssueOrPullRequest(value: IssueOrPullRequest): IssueOrPullRequest { 4 | const serialized: IssueOrPullRequest = { 5 | type: value.type, 6 | provider: { 7 | id: value.provider.id, 8 | name: value.provider.name, 9 | domain: value.provider.domain, 10 | icon: value.provider.icon, 11 | }, 12 | id: value.id, 13 | nodeId: value.nodeId, 14 | title: value.title, 15 | url: value.url, 16 | createdDate: value.createdDate, 17 | updatedDate: value.updatedDate, 18 | closedDate: value.closedDate, 19 | closed: value.closed, 20 | state: value.state, 21 | }; 22 | return serialized; 23 | } 24 | -------------------------------------------------------------------------------- /src/git/utils/pausedOperationStatus.utils.ts: -------------------------------------------------------------------------------- 1 | export const pausedOperationStatusStringsByType = { 2 | 'cherry-pick': { 3 | label: 'Cherry picking', 4 | conflicts: 'Resolve conflicts to continue cherry picking', 5 | directionality: 'into', 6 | }, 7 | merge: { 8 | label: 'Merging', 9 | conflicts: 'Resolve conflicts to continue merging', 10 | directionality: 'into', 11 | }, 12 | rebase: { 13 | label: 'Rebasing', 14 | conflicts: 'Resolve conflicts to continue rebasing', 15 | directionality: 'onto', 16 | pending: 'Pending rebase of', 17 | }, 18 | revert: { 19 | label: 'Reverting', 20 | conflicts: 'Resolve conflicts to continue reverting', 21 | directionality: 'in', 22 | }, 23 | } as const; 24 | -------------------------------------------------------------------------------- /src/git/utils/resourceDescriptor.utils.ts: -------------------------------------------------------------------------------- 1 | import type { IssueResourceDescriptor, RepositoryDescriptor, ResourceDescriptor } from '../models/resourceDescriptor'; 2 | 3 | export function isRepositoryDescriptor(resource: ResourceDescriptor): resource is RepositoryDescriptor { 4 | return ( 5 | 'key' in resource && 6 | resource.key != null && 7 | 'owner' in resource && 8 | resource.owner != null && 9 | 'name' in resource && 10 | resource.name != null 11 | ); 12 | } 13 | export function isIssueResourceDescriptor(resource: ResourceDescriptor): resource is IssueResourceDescriptor { 14 | return ( 15 | 'key' in resource && 16 | resource.key != null && 17 | 'id' in resource && 18 | resource.id != null && 19 | 'name' in resource && 20 | resource.name != null 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/git/utils/tag.utils.ts: -------------------------------------------------------------------------------- 1 | import type { GitReference, GitTagReference } from '../models/reference'; 2 | 3 | export function getTagId(repoPath: string, name: string): string { 4 | return `${repoPath}|tags/${name}`; 5 | } 6 | 7 | export function isOfTagRefType(tag: GitReference | undefined): tag is GitTagReference { 8 | return tag?.refType === 'tag'; 9 | } 10 | 11 | const tagsPrefixRegex = /^(refs\/)?tags\//i; 12 | 13 | export function parseRefName(refName: string): { name: string } { 14 | // Strip off refs/tags/ 15 | const name = refName.replace(tagsPrefixRegex, ''); 16 | return { name: name }; 17 | } 18 | -------------------------------------------------------------------------------- /src/git/utils/user.utils.ts: -------------------------------------------------------------------------------- 1 | import type { GitUser } from '../models/user'; 2 | 3 | export function isUserMatch( 4 | user: GitUser | undefined, 5 | name: string | undefined, 6 | email: string | undefined, 7 | username?: string | undefined, 8 | ): boolean { 9 | return ( 10 | user != null && 11 | // Name or e-mail is provided 12 | (user.name != null || user.email != null || user.username != null) && 13 | // Match on name if provided 14 | (user.name == null || user.name === name) && 15 | // Match on email if provided 16 | (user.email == null || user.email === email) && 17 | // Match on username if provided 18 | (user.username == null || user.username === username) 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /src/git/utils/worktree.utils.ts: -------------------------------------------------------------------------------- 1 | export function getWorktreeId(repoPath: string, name: string): string { 2 | return `${repoPath}|worktrees/${name}`; 3 | } 4 | -------------------------------------------------------------------------------- /src/plus/gk/utils/-webview/subscription.utils.ts: -------------------------------------------------------------------------------- 1 | import { configuration } from '../../../../system/-webview/configuration'; 2 | 3 | export function getConfiguredActiveOrganizationId(): string | undefined { 4 | return ( 5 | configuration.get('gitkraken.activeOrganizationId') ?? 6 | // Deprecated: Use `gitlens.gitkraken.activeOrganizationId` instead 7 | configuration.getAny('gitlens.gitKraken.activeOrganizationId') ?? 8 | undefined 9 | ); 10 | } 11 | 12 | export async function updateActiveOrganizationId(orgId: string | undefined): Promise { 13 | await configuration.updateEffective('gitkraken.activeOrganizationId', orgId); 14 | } 15 | -------------------------------------------------------------------------------- /src/plus/integrations/authentication/azureDevOps.ts: -------------------------------------------------------------------------------- 1 | import { GitCloudHostIntegrationId } from '../../../constants.integrations'; 2 | import { CloudIntegrationAuthenticationProvider } from './integrationAuthenticationProvider'; 3 | 4 | export class AzureDevOpsAuthenticationProvider extends CloudIntegrationAuthenticationProvider { 5 | protected override get authProviderId(): GitCloudHostIntegrationId.AzureDevOps { 6 | return GitCloudHostIntegrationId.AzureDevOps; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/plus/integrations/authentication/jira.ts: -------------------------------------------------------------------------------- 1 | import { IssuesCloudHostIntegrationId } from '../../../constants.integrations'; 2 | import { CloudIntegrationAuthenticationProvider } from './integrationAuthenticationProvider'; 3 | 4 | export class JiraAuthenticationProvider extends CloudIntegrationAuthenticationProvider { 5 | protected override get authProviderId(): IssuesCloudHostIntegrationId.Jira { 6 | return IssuesCloudHostIntegrationId.Jira; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/plus/launchpad/utils/-webview/launchpad.utils.ts: -------------------------------------------------------------------------------- 1 | import type { Container } from '../../../../container'; 2 | import { configuration } from '../../../../system/-webview/configuration'; 3 | import type { LaunchpadSummaryResult } from '../../launchpadIndicator'; 4 | import { generateLaunchpadSummary } from '../../launchpadIndicator'; 5 | import type { LaunchpadGroup } from '../../models/launchpad'; 6 | 7 | export async function getLaunchpadSummary(container: Container): Promise { 8 | const result = await container.launchpad.getCategorizedItems(); 9 | 10 | if (result.error != null) { 11 | return { 12 | error: result.error, 13 | }; 14 | } 15 | 16 | const groups: LaunchpadGroup[] = configuration.get('launchpad.indicator.groups') ?? []; 17 | return generateLaunchpadSummary(result.items, groups); 18 | } 19 | -------------------------------------------------------------------------------- /src/plus/repos/sharedGkStorageLocationProvider.ts: -------------------------------------------------------------------------------- 1 | import type { Uri } from 'vscode'; 2 | import type { UnifiedAsyncDisposable } from '../../system/unifiedDisposable'; 3 | 4 | export interface SharedGkStorageLocationProvider { 5 | getSharedRepositoryLocationFileUri(): Promise; 6 | getSharedCloudWorkspaceMappingFileUri(): Promise; 7 | getSharedLocalWorkspaceMappingFileUri(): Promise; 8 | 9 | acquireSharedStorageWriteLock(): Promise; 10 | releaseSharedStorageWriteLock(): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /src/system/-webview/timeline.ts: -------------------------------------------------------------------------------- 1 | import type { GitTimelineItem, TimelineItem } from 'vscode'; 2 | 3 | function isTimelineItem(item: any): item is TimelineItem { 4 | if (item == null) return false; 5 | 6 | return (item as TimelineItem).timestamp != null && (item as TimelineItem).label != null; 7 | } 8 | 9 | export function isGitTimelineItem(item: any): item is GitTimelineItem { 10 | if (item == null) return false; 11 | 12 | return ( 13 | isTimelineItem(item) && 14 | (item as GitTimelineItem).ref != null && 15 | (item as GitTimelineItem).previousRef != null && 16 | (item as GitTimelineItem).message != null 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /src/system/__tests__/iterable.test.ts: -------------------------------------------------------------------------------- 1 | import * as assert from 'assert'; 2 | import { join } from '../iterable'; 3 | 4 | suite('Iterable Test Suite', () => { 5 | test('join', () => { 6 | assert.strictEqual(join([1, 2, 3], ','), '1,2,3'); 7 | assert.strictEqual(join([1, 2, 3], ''), '123'); 8 | assert.strictEqual(join([], ''), ''); 9 | assert.strictEqual(join([1], ''), '1'); 10 | assert.strictEqual(join([1], ','), '1'); 11 | assert.strictEqual(join([], ','), ''); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /src/system/brand.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/naming-convention 2 | declare const __brand: unique symbol; 3 | // eslint-disable-next-line @typescript-eslint/naming-convention 4 | declare const __base: unique symbol; 5 | 6 | type _Brand = { [__brand]: B; [__base]: Base }; 7 | export type Branded = Base & _Brand; 8 | export type Brand> = B extends Branded ? B : never; 9 | export type Unbrand = T extends _Brand ? Base : never; 10 | -------------------------------------------------------------------------------- /src/system/commands.ts: -------------------------------------------------------------------------------- 1 | import type { GlCommands } from '../constants.commands'; 2 | 3 | export function createCommandLink(command: GlCommands, args?: T): string { 4 | if (args == null) return `command:${command}`; 5 | 6 | return `command:${command}?${encodeURIComponent(typeof args === 'string' ? args : JSON.stringify(args))}`; 7 | } 8 | 9 | export function createMarkdownCommandLink(command: GlCommands, args: T): string { 10 | if (args == null) return `command:${command}`; 11 | 12 | // Since we are using the command in a markdown link, we need to escape ()'s so they don't get interpreted as markdown 13 | return `command:${command}?${encodeURIComponent(typeof args === 'string' ? args : JSON.stringify(args)).replace( 14 | /([()])/g, 15 | '\\$1', 16 | )}`; 17 | } 18 | -------------------------------------------------------------------------------- /src/system/counter.ts: -------------------------------------------------------------------------------- 1 | const maxSmallIntegerV8 = 2 ** 30 - 1; // Max number that can be stored in V8's smis (small integers) 2 | 3 | export type Counter = { readonly current: number; next(): number; reset(): void }; 4 | 5 | export function getScopedCounter(): Counter { 6 | let counter = 0; 7 | return { 8 | get current() { 9 | return counter; 10 | }, 11 | next: function () { 12 | if (counter === maxSmallIntegerV8) { 13 | counter = 0; 14 | } 15 | return ++counter; 16 | }, 17 | reset: function () { 18 | counter = 0; 19 | }, 20 | }; 21 | } 22 | -------------------------------------------------------------------------------- /src/system/encoding.ts: -------------------------------------------------------------------------------- 1 | export function encodeUrl(url: string): string; 2 | export function encodeUrl(url: string | undefined): string | undefined; 3 | export function encodeUrl(url: string | undefined): string | undefined { 4 | if (url == null) return undefined; 5 | 6 | // Not a fan of this, but it's hard to gauge previous encoding and this is the most common case 7 | return encodeURI(url.replace(/%20/g, ' ')); 8 | } 9 | -------------------------------------------------------------------------------- /src/system/logger.constants.ts: -------------------------------------------------------------------------------- 1 | export const slowCallWarningThreshold = 500; 2 | 3 | export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug'; 4 | -------------------------------------------------------------------------------- /src/system/uri.ts: -------------------------------------------------------------------------------- 1 | import type { Uri } from 'vscode'; 2 | 3 | export function areUrisEqual(a: Uri | undefined, b: Uri | undefined): boolean { 4 | if (a === b) return true; 5 | if (a == null || b == null) return false; 6 | 7 | return a.toString() === b.toString(); 8 | } 9 | -------------------------------------------------------------------------------- /src/terminal.ts: -------------------------------------------------------------------------------- 1 | import type { Disposable, Terminal } from 'vscode'; 2 | import { window } from 'vscode'; 3 | import { Container } from './container'; 4 | 5 | let _terminal: Terminal | undefined; 6 | let _disposable: Disposable | undefined; 7 | 8 | const extensionTerminalName = 'GitLens'; 9 | 10 | export function ensureGitTerminal(): Terminal { 11 | if (_terminal == null) { 12 | _terminal = window.createTerminal(extensionTerminalName); 13 | _disposable = window.onDidCloseTerminal((e: Terminal) => { 14 | if (e === _terminal) { 15 | _terminal = undefined; 16 | _disposable?.dispose(); 17 | _disposable = undefined; 18 | } 19 | }); 20 | 21 | Container.instance.context.subscriptions.push(_disposable); 22 | } 23 | 24 | return _terminal; 25 | } 26 | -------------------------------------------------------------------------------- /src/views/nodes/stashFileNode.ts: -------------------------------------------------------------------------------- 1 | import type { GitStashCommit } from '../../git/models/commit'; 2 | import type { GitFile } from '../../git/models/file'; 3 | import type { ViewsWithStashes } from '../viewBase'; 4 | import type { ViewNode } from './abstract/viewNode'; 5 | import { ContextValues } from './abstract/viewNode'; 6 | import { CommitFileNodeBase } from './commitFileNode'; 7 | 8 | export class StashFileNode extends CommitFileNodeBase<'stash-file', ViewsWithStashes> { 9 | constructor(view: ViewsWithStashes, parent: ViewNode, file: GitFile, commit: GitStashCommit) { 10 | super('stash-file', view, parent, file, commit); 11 | } 12 | 13 | protected override get contextValue(): string { 14 | return `${ContextValues.File}+stashed`; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/webviews/apps/home/context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from '@lit/context'; 2 | import type { State } from '../../home/protocol'; 3 | 4 | export const stateContext = createContext('state'); 5 | -------------------------------------------------------------------------------- /src/webviews/apps/home/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 17 | 18 | 19 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-avatars-compact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-avatars-compact.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-avatars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-avatars.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-compact-highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-compact-highlight.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-compact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-compact.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-heatmap-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-heatmap-left.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-heatmap-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-heatmap-right.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-highlight-gutter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-highlight-gutter.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-highlight-scrollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-highlight-scrollbar.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame-highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame-highlight.png -------------------------------------------------------------------------------- /src/webviews/apps/media/blame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/blame.png -------------------------------------------------------------------------------- /src/webviews/apps/media/branches-view-compare+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view-compare+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/branches-view-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view-compare.png -------------------------------------------------------------------------------- /src/webviews/apps/media/branches-view-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/branches-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/branches-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/changes-highlight-gutter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/changes-highlight-gutter.png -------------------------------------------------------------------------------- /src/webviews/apps/media/changes-highlight-scrollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/changes-highlight-scrollbar.png -------------------------------------------------------------------------------- /src/webviews/apps/media/changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/changes.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-blocks-authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-blocks-authors.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-blocks-recent+authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-blocks-recent+authors.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-blocks-recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-blocks-recent.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-containers-authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-containers-authors.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-containers-recent+authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-containers-recent+authors.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-containers-recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-containers-recent.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-file-authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-file-authors.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-file-recent+authors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-file-recent+authors.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens-file-recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens-file-recent.png -------------------------------------------------------------------------------- /src/webviews/apps/media/code-lens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/code-lens.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commit-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commit-details.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-compare+commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare+commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-compare+pr+commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare+pr+commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-compare+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-compare.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-pr+commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-pr+commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-auto.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-compare+commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare+commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-compare+pr+commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare+pr+commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-compare+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-compare.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-pr+commit-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-pr+commit-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/commits-view-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/commits-view-tree.png -------------------------------------------------------------------------------- /src/webviews/apps/media/contributors-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/contributors-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/current-line-blame-on+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame-on+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/current-line-blame-on-scrollable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame-on-scrollable.png -------------------------------------------------------------------------------- /src/webviews/apps/media/current-line-blame-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame-on.png -------------------------------------------------------------------------------- /src/webviews/apps/media/current-line-blame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/current-line-blame.png -------------------------------------------------------------------------------- /src/webviews/apps/media/file-history-view-avatars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/file-history-view-avatars.png -------------------------------------------------------------------------------- /src/webviews/apps/media/file-history-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/file-history-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/gitlens-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/gitlens-logo.png -------------------------------------------------------------------------------- /src/webviews/apps/media/graph-commit-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/graph-commit-search.png -------------------------------------------------------------------------------- /src/webviews/apps/media/graph-minimap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/graph-minimap.png -------------------------------------------------------------------------------- /src/webviews/apps/media/heatmap-gutter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/heatmap-gutter.png -------------------------------------------------------------------------------- /src/webviews/apps/media/heatmap-scrollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/heatmap-scrollbar.png -------------------------------------------------------------------------------- /src/webviews/apps/media/heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/heatmap.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-annotations-compact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-annotations-compact.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-annotations-currentLine-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-annotations-currentLine-on.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-annotations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-annotations.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-autolink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-autolink.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-changes.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-currentLine-on+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-currentLine-on+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-currentLine-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-currentLine-on.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-currentLine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-currentLine.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-details+changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details+changes.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-details+pr+changes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details+pr+changes.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-details+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/hovers-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/hovers-details.png -------------------------------------------------------------------------------- /src/webviews/apps/media/line-history-view-avatars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/line-history-view-avatars.png -------------------------------------------------------------------------------- /src/webviews/apps/media/line-history-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/line-history-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/modes-status-bar-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/modes-status-bar-left.png -------------------------------------------------------------------------------- /src/webviews/apps/media/modes-status-bar-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/modes-status-bar-right.png -------------------------------------------------------------------------------- /src/webviews/apps/media/plus-commit-graph-illustrated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/plus-commit-graph-illustrated.png -------------------------------------------------------------------------------- /src/webviews/apps/media/rebase-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/rebase-editor.png -------------------------------------------------------------------------------- /src/webviews/apps/media/remotes-view-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/remotes-view-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/remotes-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/remotes-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/repositories-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/repositories-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/search-and-compare-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/search-and-compare-view.png -------------------------------------------------------------------------------- /src/webviews/apps/media/stashes-view-auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/stashes-view-auto.png -------------------------------------------------------------------------------- /src/webviews/apps/media/stashes-view-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/stashes-view-tree.png -------------------------------------------------------------------------------- /src/webviews/apps/media/status-bar-left+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-left+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/status-bar-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-left.png -------------------------------------------------------------------------------- /src/webviews/apps/media/status-bar-right+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-right+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/status-bar-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar-right.png -------------------------------------------------------------------------------- /src/webviews/apps/media/status-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/status-bar.png -------------------------------------------------------------------------------- /src/webviews/apps/media/tags-view-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/tags-view-list.png -------------------------------------------------------------------------------- /src/webviews/apps/media/tags-view-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/tags-view-tree.png -------------------------------------------------------------------------------- /src/webviews/apps/media/worktrees-view-compare+pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view-compare+pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/worktrees-view-compare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view-compare.png -------------------------------------------------------------------------------- /src/webviews/apps/media/worktrees-view-pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view-pr.png -------------------------------------------------------------------------------- /src/webviews/apps/media/worktrees-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/src/webviews/apps/media/worktrees-view.png -------------------------------------------------------------------------------- /src/webviews/apps/plus/graph/context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from '@lit/context'; 2 | import type { State } from '../../../plus/graph/protocol'; 3 | 4 | export const stateContext = createContext('state'); 5 | -------------------------------------------------------------------------------- /src/webviews/apps/plus/shared/components/vscode.css.ts: -------------------------------------------------------------------------------- 1 | import { css } from 'lit'; 2 | 3 | export const linkStyles = css` 4 | a { 5 | border: 0; 6 | color: var(--link-foreground); 7 | font-weight: 400; 8 | outline: none; 9 | text-decoration: var(--link-decoration-default, none); 10 | } 11 | 12 | a:focus-visible { 13 | outline: 1px solid var(--color-focus-border); 14 | border-radius: 0.2rem; 15 | } 16 | 17 | a:hover { 18 | color: var(--link-foreground-active); 19 | text-decoration: underline; 20 | } 21 | `; 22 | 23 | export const ruleStyles = css` 24 | hr { 25 | border: none; 26 | border-top: 1px solid var(--color-foreground--25); 27 | } 28 | `; 29 | -------------------------------------------------------------------------------- /src/webviews/apps/plus/timeline/context.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from '@lit/context'; 2 | import type { State } from '../../../plus/timeline/protocol'; 3 | 4 | export const stateContext = createContext('state'); 5 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/badges/badge.ts: -------------------------------------------------------------------------------- 1 | import { html, LitElement } from 'lit'; 2 | import { customElement } from 'lit/decorators.js'; 3 | import { badgeBase } from './badges.css'; 4 | 5 | @customElement('gl-badge') 6 | export class Badge extends LitElement { 7 | static override styles = [badgeBase]; 8 | 9 | override render(): unknown { 10 | return html``; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/badges/badges.css.ts: -------------------------------------------------------------------------------- 1 | import { css } from 'lit'; 2 | 3 | export const badgeBase = css` 4 | .badge { 5 | display: inline-flex; 6 | font-size: var(--gl-badge-font-size, x-small); 7 | font-variant: all-small-caps; 8 | font-weight: 600; 9 | color: var(--gl-badge-color, var(--color-foreground--50)); 10 | border: currentColor 1px solid; 11 | border-radius: 1rem; 12 | padding: 0 0.8rem 0.1rem; 13 | white-space: nowrap; 14 | } 15 | `; 16 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/converters/date-converter.ts: -------------------------------------------------------------------------------- 1 | import type { ComplexAttributeConverter } from 'lit'; 2 | 3 | export const dateConverter = (): ComplexAttributeConverter => { 4 | return { 5 | toAttribute: (date: Date) => { 6 | return date.getTime(); 7 | }, 8 | fromAttribute: (value: string, _type?: number) => { 9 | return new Date(parseInt(value, 10)); 10 | }, 11 | }; 12 | }; 13 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/helpers/slots.ts: -------------------------------------------------------------------------------- 1 | export function hasNodes(...nodes: (Node[] | undefined)[]): boolean { 2 | return nodes.some(nodes => (nodes?.length ?? 0) > 0); 3 | } 4 | 5 | export function nodeTypeFilter(nodeType: Node['nodeType']): (node: Node) => boolean { 6 | return (node: Node) => node.nodeType === nodeType; 7 | } 8 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/indicators/indicator.ts: -------------------------------------------------------------------------------- 1 | import { html, LitElement } from 'lit'; 2 | import { customElement, property } from 'lit/decorators.js'; 3 | import { baseStyles, pulseStyles } from './indicator.css'; 4 | 5 | export const tagName = 'gl-indicator'; 6 | 7 | @customElement(tagName) 8 | export class GlIndicator extends LitElement { 9 | static override styles = [baseStyles, pulseStyles]; 10 | 11 | @property({ type: Boolean }) 12 | pulse = false; 13 | 14 | override render(): unknown { 15 | return html``; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/markdown/markdown.react.tsx: -------------------------------------------------------------------------------- 1 | import { reactWrapper } from '../helpers/react-wrapper'; 2 | import { GlMarkdown as GlMarkdownWC } from './markdown'; 3 | 4 | export interface GlMarkdown extends GlMarkdownWC {} 5 | export const GlMarkdown = reactWrapper(GlMarkdownWC, { tagName: 'gl-markdown' }); 6 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/menu/menu-divider.ts: -------------------------------------------------------------------------------- 1 | import { css, LitElement } from 'lit'; 2 | import { customElement } from 'lit/decorators.js'; 3 | import { elementBase } from '../styles/lit/base.css'; 4 | 5 | @customElement('menu-divider') 6 | export class MenuDivider extends LitElement { 7 | static override styles = [ 8 | elementBase, 9 | css` 10 | :host { 11 | display: block; 12 | height: 0; 13 | margin: 0.6rem; 14 | border-top: 0.1rem solid var(--vscode-menu-separatorBackground); 15 | } 16 | `, 17 | ]; 18 | } 19 | 20 | declare global { 21 | interface HTMLElementTagNameMap { 22 | 'menu-divider': MenuDivider; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/overlays/overlays.utils.ts: -------------------------------------------------------------------------------- 1 | import { unsafeHTML } from 'lit/directives/unsafe-html.js'; 2 | 3 | export function handleUnsafeOverlayContent(content?: string) { 4 | if (content?.includes('\n')) { 5 | return unsafeHTML(content.replace(/\n\n/g, '
').replace(/\n/g, '
')); 6 | } 7 | 8 | return content; 9 | } 10 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/panes/pane-group.ts: -------------------------------------------------------------------------------- 1 | import { css, html, LitElement } from 'lit'; 2 | import { customElement } from 'lit/decorators.js'; 3 | 4 | @customElement('webview-pane-group') 5 | export class WebviewPaneGroup extends LitElement { 6 | static override styles = css` 7 | :host { 8 | display: flex; 9 | box-sizing: border-box; 10 | flex-direction: column; 11 | } 12 | 13 | ::slotted(webview-pane) { 14 | flex: none; 15 | } 16 | 17 | :host([flexible]) ::slotted(webview-pane[flexible][expanded]) { 18 | flex: 1; 19 | } 20 | `; 21 | 22 | override render(): unknown { 23 | return html``; 24 | } 25 | } 26 | 27 | declare global { 28 | interface HTMLElementTagNameMap { 29 | 'webview-pane-group': WebviewPaneGroup; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/radio/radio.css.ts: -------------------------------------------------------------------------------- 1 | import { css } from 'lit'; 2 | 3 | export const radioStyles = css` 4 | :host { 5 | --checkbox-radius: 50%; 6 | --checkbox-foreground: var(--vscode-radio-inactiveForeground); 7 | --checkbox-background: var(--vscode-radio-inactiveBackground); 8 | --checkbox-border: var(--vscode-radio-inactiveBorder); 9 | --checkbox-checked-foreground: var(--vscode-radio-activeForeground); 10 | --checkbox-checked-background: var(--vscode-radio-activeBackground); 11 | --checkbox-checked-border: var(--vscode-radio-activeBorder); 12 | --checkbox-hover-background: var(--vscode-radio-inactiveHoverBackground); 13 | } 14 | `; 15 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/rich/issue.css.ts: -------------------------------------------------------------------------------- 1 | import { css } from 'lit'; 2 | 3 | export const issueIconStyles = css` 4 | .issue-icon--opened { 5 | color: var(--vscode-gitlens-openAutolinkedIssueIconColor); 6 | } 7 | .issue-icon--closed { 8 | color: var(--vscode-gitlens-closedAutolinkedIssueIconColor); 9 | } 10 | `; 11 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/rich/pr.css.ts: -------------------------------------------------------------------------------- 1 | import { css } from 'lit'; 2 | 3 | export const prIconStyles = css` 4 | .pr-icon--opened { 5 | color: var(--vscode-gitlens-openPullRequestIconColor); 6 | } 7 | .pr-icon--closed { 8 | color: var(--vscode-gitlens-closedPullRequestIconColor); 9 | } 10 | .pr-icon--merged { 11 | color: var(--vscode-gitlens-mergedPullRequestIconColor); 12 | } 13 | `; 14 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/components/styles/lit/a11y.css.ts: -------------------------------------------------------------------------------- 1 | import { css } from 'lit'; 2 | 3 | export const srOnlyStyles = css` 4 | clip: rect(0 0 0 0); 5 | clip-path: inset(50%); 6 | width: 1px; 7 | height: 1px; 8 | overflow: hidden; 9 | position: absolute; 10 | white-space: nowrap; 11 | `; 12 | 13 | export const srOnly = css` 14 | .sr-only, 15 | .sr-only-focusable:not(:active):not(:focus-visible):not(:focus-within) { 16 | ${srOnlyStyles} 17 | } 18 | `; 19 | 20 | export const focusOutline = css` 21 | outline: 1px solid var(--color-focus-border); 22 | outline-offset: -1px; 23 | `; 24 | 25 | export const focusOutlineButton = css` 26 | outline: 1px solid var(--color-focus-border); 27 | outline-offset: 2px; 28 | `; 29 | 30 | export const focusableBaseStyles = css` 31 | :focus-visible { 32 | ${focusOutline} 33 | } 34 | `; 35 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/contexts/ipc.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from '@lit/context'; 2 | import type { HostIpc } from '../ipc'; 3 | 4 | export const ipcContext = createContext('ipc'); 5 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/contexts/telemetry.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from '@lit/context'; 2 | import type { TelemetrySendEventParams } from '../../../protocol'; 3 | import { TelemetrySendEventCommand } from '../../../protocol'; 4 | import type { Disposable } from '../events'; 5 | import type { HostIpc } from '../ipc'; 6 | 7 | export class TelemetryContext implements Disposable { 8 | private readonly ipc: HostIpc; 9 | private readonly disposables: Disposable[] = []; 10 | 11 | constructor(ipc: HostIpc) { 12 | this.ipc = ipc; 13 | } 14 | 15 | sendEvent(detail: TelemetrySendEventParams): void { 16 | this.ipc.sendCommand(TelemetrySendEventCommand, detail); 17 | } 18 | 19 | dispose(): void { 20 | this.disposables.forEach(d => d.dispose()); 21 | } 22 | } 23 | 24 | export const telemetryContext = createContext('telemetry'); 25 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/date.ts: -------------------------------------------------------------------------------- 1 | export * from '../../../system/date'; 2 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/styles/normalize.scss: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | *, 5 | *::before, 6 | *::after { 7 | box-sizing: inherit; 8 | } 9 | 10 | // avoids FOUC for elements not yet called with `define()` 11 | :not(:defined) { 12 | visibility: hidden; 13 | } 14 | 15 | [hidden] { 16 | display: none !important; 17 | } 18 | 19 | html { 20 | font-size: 62.5%; 21 | text-size-adjust: 100%; 22 | // -webkit-font-smoothing: antialiased; 23 | // -moz-osx-font-smoothing: grayscale; 24 | } 25 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/styles/properties.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | --gitlens-gutter-width: 20px; 3 | --gk-action-radius: 0.3rem; 4 | } 5 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/styles/utils.scss: -------------------------------------------------------------------------------- 1 | @mixin focus() { 2 | outline: 1px solid var(--vscode-focusBorder); 3 | outline-offset: -1px; 4 | } 5 | 6 | @mixin dark-theme($selectorPrefix: '', $selectorPostfix: '') { 7 | #{$selectorPrefix}.vscode-dark#{$selectorPostfix}, 8 | #{$selectorPrefix}.vscode-high-contrast:not(.vscode-high-contrast-light)#{$selectorPostfix} { 9 | @content; 10 | } 11 | } 12 | 13 | @mixin light-theme($selectorPrefix: '', $selectorPostfix: '') { 14 | #{$selectorPrefix}.vscode-light#{$selectorPostfix}, 15 | #{$selectorPrefix}.vscode-high-contrast-light#{$selectorPostfix} { 16 | @content; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/webviews/apps/shared/telemetry.ts: -------------------------------------------------------------------------------- 1 | import type { TelemetryEvents } from '../../../constants.telemetry'; 2 | import type { TelemetrySendEventParams } from '../../protocol'; 3 | 4 | export const telemetryEventName = 'gl-telemetry-fired'; 5 | 6 | export function emitTelemetrySentEvent( 7 | el: EventTarget, 8 | params: TelemetrySendEventParams, 9 | ): void { 10 | el.dispatchEvent( 11 | new CustomEvent>(telemetryEventName, { 12 | bubbles: true, 13 | detail: params, 14 | }), 15 | ); 16 | } 17 | 18 | declare global { 19 | interface WindowEventMap { 20 | [telemetryEventName]: CustomEvent; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /svgo.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | js2svg: { 3 | eol: 'lf', 4 | finalNewline: true, 5 | }, 6 | plugins: [ 7 | { 8 | name: 'removeAttrs', 9 | params: { 10 | attrs: 'fill', 11 | }, 12 | }, 13 | { 14 | name: 'addAttributesToSVGElement', 15 | params: { 16 | attributes: [ 17 | { 18 | fill: 'currentColor', 19 | }, 20 | ], 21 | }, 22 | }, 23 | ], 24 | }; 25 | -------------------------------------------------------------------------------- /tests/docker/run-unit-tests.sh: -------------------------------------------------------------------------------- 1 | pnpm run test; 2 | EXIT_CODE=$?; 3 | if [[ "$EXIT_CODE" == "0" ]]; then 4 | kill -s SIGINT `cat /var/run/supervisor/supervisord.pid`; 5 | else 6 | kill -s SIGKILL `cat /var/run/supervisor/supervisord.pid`; 7 | fi 8 | -------------------------------------------------------------------------------- /tests/e2e/playwright.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from '@playwright/test'; 2 | 3 | // eslint-disable-next-line import-x/no-default-export 4 | export default defineConfig({ 5 | use: { 6 | headless: true, // Ensure headless mode is enabled 7 | viewport: { width: 1920, height: 1080 }, 8 | }, 9 | reporter: 'list', // process.env.CI ? 'html' : 'list', 10 | timeout: 60000, // 1 minute 11 | workers: 1, 12 | expect: { 13 | timeout: 60000, // 1 minute 14 | }, 15 | globalSetup: './setup', 16 | outputDir: '../../out/test-results', 17 | projects: [ 18 | { 19 | name: 'VSCode stable', 20 | use: { 21 | vscodeVersion: 'stable', 22 | }, 23 | }, 24 | ], 25 | testMatch: 'specs/*.test.ts', 26 | }); 27 | -------------------------------------------------------------------------------- /tests/e2e/setup.ts: -------------------------------------------------------------------------------- 1 | import { downloadAndUnzipVSCode } from '@vscode/test-electron'; 2 | 3 | // eslint-disable-next-line import-x/no-default-export 4 | export default async (): Promise => { 5 | await downloadAndUnzipVSCode('insiders'); 6 | await downloadAndUnzipVSCode('stable'); 7 | }; 8 | -------------------------------------------------------------------------------- /tests/e2e/specs/gitlens_install.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from './baseTest'; 2 | 3 | test.describe('Test GitLens installation', () => { 4 | test('should contain GitLens & GitLens Inspect icons in activity bar', async ({ page }) => { 5 | await page.getByRole('tab', { name: 'GitLens Inspect' }).waitFor(); 6 | const gitlensIcons = page.getByRole('tab', { name: 'GitLens' }); 7 | void expect(gitlensIcons).toHaveCount(2); 8 | 9 | expect(await page.title()).toContain('[Extension Development Host]'); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /tests/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "compilerOptions": { 4 | "target": "es2023", 5 | "module": "node16", 6 | "moduleResolution": "node16", 7 | "strict": true, 8 | "esModuleInterop": true, 9 | "skipLibCheck": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "outDir": "./out", 12 | "rootDir": ".", 13 | "sourceMap": true 14 | }, 15 | "include": ["**/*.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "esModuleInterop": true, 5 | "experimentalDecorators": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "incremental": true, 8 | "isolatedModules": true, 9 | "lib": ["es2023"], 10 | "libReplacement": false, 11 | "module": "esnext", 12 | "moduleResolution": "bundler", 13 | "noFallthroughCasesInSwitch": true, 14 | "noImplicitOverride": true, 15 | "noImplicitReturns": true, 16 | "noUnusedLocals": false, 17 | "outDir": "dist", 18 | "resolveJsonModule": true, 19 | "rootDir": "src", 20 | "skipLibCheck": true, 21 | "sourceMap": true, 22 | "strict": true, 23 | "target": "es2023", 24 | "useDefineForClassFields": true, 25 | "useUnknownInCatchVariables": false 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /tsconfig.browser.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "lib": ["dom", "dom.iterable", "es2023"], 5 | "paths": { 6 | "@env/*": ["src/env/browser/*"], 7 | "path": ["node_modules/path-browserify"] 8 | }, 9 | "tsBuildInfoFile": "tsconfig.browser.tsbuildinfo" 10 | }, 11 | "include": ["src/**/*"], 12 | "exclude": ["src/**/__tests__/**/*", "src/**/webview/**/*", "src/webviews/apps/**/*", "src/env/node/**/*"] 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true 4 | }, 5 | "files": [], 6 | "references": [ 7 | { "path": "./tsconfig.node.json" }, 8 | { "path": "./tsconfig.browser.json" }, 9 | { "path": "./src/webviews/apps/tsconfig.json" }, 10 | { "path": "./tests/e2e/tsconfig.json" }, 11 | { "path": "./tsconfig.test.json" } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "paths": { 5 | "@env/*": ["src/env/node/*"] 6 | }, 7 | "tsBuildInfoFile": "tsconfig.node.tsbuildinfo" 8 | }, 9 | "include": ["src/**/*"], 10 | "exclude": ["src/**/__tests__/**/*", "src/**/webview/**/*", "src/webviews/apps/**/*", "src/env/browser/**/*"] 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.base.json", 3 | "compilerOptions": { 4 | "incremental": false, 5 | "outDir": "out/tests", 6 | "paths": { 7 | "@env/*": ["src/env/node/*"] 8 | } 9 | }, 10 | "include": ["src/**/*"], 11 | "exclude": ["src/**/webview/**/*", "src/webviews/apps/**/*", "src/env/browser/**/*"] 12 | } 13 | -------------------------------------------------------------------------------- /walkthroughs/welcome/accelerate-pr-reviews.md: -------------------------------------------------------------------------------- 1 | ### Launchpad & Worktrees | PR Hub that accelerates PR Reviews 2 | 3 | 4 | Watch the Accelerate PR reviews tutorial video 5 | 6 | 7 | Streamline your workflow with Launchpad by managing pull requests directly in VS Code, keeping your tasks organized and your focus uninterrupted. 8 | 9 | Work smarter with Worktrees and switch between branches seamlessly to work on multiple projects in parallel, all without disrupting your main workspace. 10 | 11 | Watch a [video](command:gitlens.walkthrough.openAcceleratePrReviews) about how to accelerate code review in GitLens. 12 | -------------------------------------------------------------------------------- /walkthroughs/welcome/get-started-community.md: -------------------------------------------------------------------------------- 1 | 2 | Learn about GitLens Community vs Pro 3 | 4 | 5 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team. 6 | 7 | [Get started with GitLens Pro](command:gitlens.walkthrough.plus.signUp) free for 14 days — no credit card required. 8 | -------------------------------------------------------------------------------- /walkthroughs/welcome/home.md: -------------------------------------------------------------------------------- 1 | ### Start and manage your work in the Home View 2 | 3 | 4 | Home View 5 | 6 | 7 | Located in the VS Code sidebar, the GitLens Home View highlights your current work with clear, actionable insights, guides you to Start Work on your next important tasks, and tracks recently modified branches for easy task-switching. 8 | 9 | [Connect Integrations](command:gitlens.walkthrough.connectIntegrations) with hosting and issue services like GitHub, GitLab, Azure DevOps, Jira, Bitbucket, and more to help you monitor and take action on branches, issues, and pull requests. 10 | 11 | Learn more on our detailed [Home View Help Center Page](command:gitlens.walkthrough.openHomeViewVideo). 12 | -------------------------------------------------------------------------------- /walkthroughs/welcome/improve-workflows-with-integrations.md: -------------------------------------------------------------------------------- 1 | ### Integrate with Git Hosting & Issue Services 2 | 3 | 4 | Autolinks 5 | 6 | 7 | Connect GitLens to GitHub, GitLab, and Jira to link PRs and issues to branches and commits, track and manage PRs in Launchpad, and start work on issues seamlessly. 8 | 9 | With Autolinks, GitLens surfaces links to issues and PRs related to your commits automatically, from a variety of services and custom servers. 10 | 11 | Watch a [video](command:gitlens.walkthrough.openStartIntegrations) about improving GitLens with integrations. 12 | -------------------------------------------------------------------------------- /walkthroughs/welcome/streamline-collaboration.md: -------------------------------------------------------------------------------- 1 | ### Streamline Collaboration | Access Work Anywhere & Suggest Changes 2 | 3 | 4 | Watch the Streamline collaboration tutorial video 5 | 6 | 7 | With Cloud Patches, privately and securely share code with specific teammates and other developers, accessible from anywhere. Enhance collaboration without adding noise to your repositories. 8 | 9 | With Code Suggest, review pull requests and send suggested changes to teammates in any part of your project, not just the lines of code changed in the PR. 10 | 11 | Watch a [video](command:gitlens.walkthrough.openStreamlineCollaboration) about enhancing collaboration with GitLens. 12 | -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/ai-features.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/ai-features.jpg -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/autolinks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/autolinks.jpg -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/cloud-patches.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/cloud-patches.jpg -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/commit-graph.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/commit-graph.jpg -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/discover-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/discover-pro.png -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/home-view.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/home-view.jpg -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/launchpad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/launchpad.jpg -------------------------------------------------------------------------------- /walkthroughs/welcome/thumbnails/welcome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitkraken/vscode-gitlens/683d247e705827e21415909786a65a93b2814fe7/walkthroughs/welcome/thumbnails/welcome.png -------------------------------------------------------------------------------- /walkthroughs/welcome/visualize-code-history.md: -------------------------------------------------------------------------------- 1 | ### Blame, Hovers, and Commit Graph 2 | 3 | 4 | Watch the Visual Code History video 5 | 6 | 7 | Go beyond visualization with the GitLens Commit Graph and take action to create branches, rebase, revert, and more. With rich search and filtering capabilities, easily find what you need by commit message, author, changed files, or even specific code changes. 8 | 9 | Watch a [video](command:gitlens.walkthrough.openInteractiveCodeHistory) about Interactive Code History in GitLens. 10 | -------------------------------------------------------------------------------- /walkthroughs/welcome/welcome-in-trial-expired-eligible.md: -------------------------------------------------------------------------------- 1 | ### GitLens: Explore Your Options 2 | 3 | 4 | Learn about GitLens Community vs Pro 5 | 6 | 7 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team. 8 | 9 | [Reactivate your GitLens Pro trial](command:gitlens.walkthrough.plus.reactivate) and experience all the new Pro features — free for another 14 days. 10 | -------------------------------------------------------------------------------- /walkthroughs/welcome/welcome-in-trial-expired.md: -------------------------------------------------------------------------------- 1 | ### GitLens: Explore Your Options 2 | 3 | 4 | Learn about GitLens Community vs Pro 5 | 6 | 7 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team. 8 | 9 | [Upgrade to GitLens Pro](command:gitlens.walkthrough.plus.upgrade) today. Includes access to the [GitKraken DevEx platform](command:gitlens.walkthrough.openDevExPlatform), unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal. 10 | -------------------------------------------------------------------------------- /walkthroughs/welcome/welcome-in-trial.md: -------------------------------------------------------------------------------- 1 | ### Discover the Benefits of GitLens Pro 2 | 3 | 4 | Learn about GitLens Community vs Pro 5 | 6 | 7 | Accelerate PR reviews, gain actionable code insights with visualizations, and streamline collaboration to supercharge your Git and VS Code experience. Leverage powerful workflows with GitLens Pro that will increase productivity for you and your team. 8 | -------------------------------------------------------------------------------- /walkthroughs/welcome/welcome-paid.md: -------------------------------------------------------------------------------- 1 | ### Discover the Benefits of GitLens Pro 2 | 3 | GitLens Pro - lists GitLens Pro features 4 | 5 | You also have access to the [GitKraken DevEx platform](command:gitlens.walkthrough.openDevExPlatform), unleashing powerful Git visualization & productivity capabilities everywhere you work: IDE, desktop, browser, and terminal. 6 | --------------------------------------------------------------------------------