Compare commits

...

No commits in common. 'master' and 'main' have entirely different histories.
master ... main

1073 changed files with 362803 additions and 142 deletions
Split View
  1. +1
    -0
      .browserslistrc
  2. +22
    -0
      .devcontainer/devcontainer.json
  3. +341
    -0
      .eslintrc.base.json
  4. +10
    -0
      .eslintrc.browser.json
  5. +10
    -0
      .eslintrc.json
  6. +33
    -0
      .fantasticonrc.js
  7. +11
    -0
      .git-blame-ignore-revs
  8. +1
    -0
      .gitattributes
  9. +1
    -0
      .github/CODEOWNERS
  10. +59
    -0
      .github/ISSUE_TEMPLATE/bug_report.yml
  11. +11
    -0
      .github/ISSUE_TEMPLATE/config.yml
  12. +9
    -0
      .github/ISSUE_TEMPLATE/feature_request.md
  13. +32
    -0
      .github/PULL_REQUEST_TEMPLATE.md
  14. +75
    -0
      .github/workflows/cd-pre.yml
  15. +48
    -0
      .github/workflows/cd-stable.yml
  16. +70
    -0
      .github/workflows/codeql.yml
  17. +19
    -0
      .github/workflows/issues-lock.yml
  18. +25
    -0
      .github/workflows/issues-stale.yml
  19. +11
    -0
      .gitignore
  20. +7
    -0
      .mailmap
  21. +9
    -0
      .prettierignore
  22. +19
    -0
      .prettierrc
  23. +5
    -0
      .vscode/extensions.json
  24. +102
    -0
      .vscode/issues.github-issues
  25. +182
    -0
      .vscode/launch.json
  26. +1
    -0
      .vscode/queries.github-graphql-nb
  27. +53
    -0
      .vscode/settings.json
  28. +79
    -0
      .vscode/tasks.json
  29. +45
    -0
      .vscodeignore
  30. +2
    -0
      .yarnrc
  31. +63
    -0
      BACKERS.md
  32. +5220
    -0
      CHANGELOG.md
  33. +46
    -0
      CODE_OF_CONDUCT.md
  34. +229
    -0
      CONTRIBUTING.md
  35. +30
    -0
      LICENSE
  36. +40
    -0
      LICENSE.plus
  37. +442
    -2
      README.md
  38. +0
    -0
      README.pre.md
  39. +1693
    -0
      ThirdPartyNotices.txt
  40. +208
    -0
      esbuild.mjs
  41. BIN
      icons.fig
  42. +4
    -0
      images/dark/icon-activity.svg
  43. +4
    -0
      images/dark/icon-azdo.svg
  44. +11
    -0
      images/dark/icon-bitbucket.svg
  45. +4
    -0
      images/dark/icon-branch-green.svg
  46. +4
    -0
      images/dark/icon-branch-red.svg
  47. +4
    -0
      images/dark/icon-branch-yellow.svg
  48. +3
    -0
      images/dark/icon-branch.svg
  49. +3
    -0
      images/dark/icon-check.svg
  50. +4
    -0
      images/dark/icon-checkout.svg
  51. +4
    -0
      images/dark/icon-commit-horizontal.svg
  52. +3
    -0
      images/dark/icon-compare-ref-working.svg
  53. +3
    -0
      images/dark/icon-diff.svg
  54. +9
    -0
      images/dark/icon-gerrit.svg
  55. +3
    -0
      images/dark/icon-git-orange.svg
  56. +5
    -0
      images/dark/icon-git-progress.svg
  57. +8
    -0
      images/dark/icon-git.svg
  58. +4
    -0
      images/dark/icon-gitea.svg
  59. +1
    -0
      images/dark/icon-github.svg
  60. +5
    -0
      images/dark/icon-gitlab.svg
  61. +4
    -0
      images/dark/icon-match-all-selected.svg
  62. +3
    -0
      images/dark/icon-match-all.svg
  63. +4
    -0
      images/dark/icon-match-case-selected.svg
  64. +3
    -0
      images/dark/icon-match-case.svg
  65. +4
    -0
      images/dark/icon-match-regex-selected.svg
  66. +3
    -0
      images/dark/icon-match-regex.svg
  67. +5
    -0
      images/dark/icon-next-commit.svg
  68. +3
    -0
      images/dark/icon-no-check.svg
  69. +4
    -0
      images/dark/icon-open-revision.svg
  70. +6
    -0
      images/dark/icon-prev-commit-menu.svg
  71. +5
    -0
      images/dark/icon-prev-commit.svg
  72. +4
    -0
      images/dark/icon-push-force.svg
  73. +5
    -0
      images/dark/icon-repo-blue.svg
  74. +5
    -0
      images/dark/icon-repo-cloud-blue.svg
  75. +5
    -0
      images/dark/icon-repo-cloud-green.svg
  76. +5
    -0
      images/dark/icon-repo-cloud-red.svg
  77. +5
    -0
      images/dark/icon-repo-cloud-yellow.svg
  78. +5
    -0
      images/dark/icon-repo-cloud.svg
  79. +5
    -0
      images/dark/icon-repo-green.svg
  80. +5
    -0
      images/dark/icon-repo-red.svg
  81. +4
    -0
      images/dark/icon-repo-solid-blue.svg
  82. +4
    -0
      images/dark/icon-repo-solid-green.svg
  83. +4
    -0
      images/dark/icon-repo-solid-red.svg
  84. +4
    -0
      images/dark/icon-repo-solid-yellow.svg
  85. +4
    -0
      images/dark/icon-repo-solid.svg
  86. +5
    -0
      images/dark/icon-repo-yellow.svg
  87. +5
    -0
      images/dark/icon-repo.svg
  88. +4
    -0
      images/dark/icon-stash-pop.svg
  89. +4
    -0
      images/dark/icon-stash-save.svg
  90. +3
    -0
      images/dark/icon-stash.svg
  91. +3
    -0
      images/dark/icon-status-added.svg
  92. +3
    -0
      images/dark/icon-status-conflict.svg
  93. +3
    -0
      images/dark/icon-status-copied.svg
  94. +3
    -0
      images/dark/icon-status-deleted.svg
  95. +3
    -0
      images/dark/icon-status-ignored.svg
  96. +3
    -0
      images/dark/icon-status-modified.svg
  97. +3
    -0
      images/dark/icon-status-renamed.svg
  98. +3
    -0
      images/dark/icon-status-unknown.svg
  99. +3
    -0
      images/dark/icon-status-untracked.svg
  100. +5
    -0
      images/dark/icon-tag-selected.svg

+ 1
- 0
.browserslistrc View File

@ -0,0 +1 @@
last 2 Electron versions

+ 22
- 0
.devcontainer/devcontainer.json View File

@ -0,0 +1,22 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
{
"name": "Node.js & TypeScript",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye"
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "yarn install",
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

+ 341
- 0
.eslintrc.base.json View File

@ -0,0 +1,341 @@
{
"env": {
"es6": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/strict-type-checked",
"plugin:import/recommended",
"plugin:import/typescript",
"prettier"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2022,
"sourceType": "module",
"ecmaFeatures": {
"impliedStrict": true
},
"project": true
},
"plugins": ["anti-trojan-source", "import", "@typescript-eslint"],
"reportUnusedDisableDirectives": true,
"root": true,
"rules": {
"anti-trojan-source/no-bidi": "error",
"no-constant-condition": ["warn", { "checkLoops": false }],
"no-constant-binary-expression": "error",
"no-caller": "error",
"no-debugger": "off",
"no-else-return": "warn",
"no-empty": ["warn", { "allowEmptyCatch": true }],
"no-eval": "error",
"no-ex-assign": "warn",
"no-extend-native": "error",
"no-extra-bind": "error",
"no-extra-semi": "off",
"no-floating-decimal": "error",
"no-implicit-coercion": "error",
"no-implied-eval": "error",
"no-inner-declarations": "off",
"no-lone-blocks": "error",
"no-lonely-if": "error",
"no-loop-func": "error",
"no-mixed-spaces-and-tabs": "off",
"no-restricted-globals": ["error", "process"],
"no-restricted-imports": [
"error",
{
"paths": [
// Disallow node imports below
"assert",
"buffer",
"child_process",
"cluster",
"crypto",
"dgram",
"dns",
"domain",
"events",
"freelist",
"fs",
"http",
"https",
"module",
"net",
"os",
"path",
"process",
"punycode",
"querystring",
"readline",
"repl",
"smalloc",
"stream",
"string_decoder",
"sys",
"timers",
"tls",
"tracing",
"tty",
"url",
"util",
"vm",
"zlib"
],
"patterns": [
{
"group": ["**/env/**/*"],
"message": "Use @env/ instead"
},
{
"group": ["src/*"],
"message": "Use relative paths instead"
},
{
"group": ["react-dom"],
"importNames": ["Container"],
"message": "Use our Container instead"
},
{
"group": ["vscode"],
"importNames": ["CancellationError"],
"message": "Use our CancellationError instead"
}
]
}
],
"no-return-assign": "error",
"no-return-await": "warn",
"no-self-compare": "error",
"no-sequences": "error",
"no-template-curly-in-string": "warn",
"no-throw-literal": "error",
"no-unmodified-loop-condition": "warn",
"no-unneeded-ternary": "error",
"no-unused-expressions": "error",
"no-use-before-define": "off",
"no-useless-call": "error",
"no-useless-catch": "error",
"no-useless-computed-key": "error",
"no-useless-concat": "error",
"no-useless-rename": "error",
"no-useless-return": "error",
"no-var": "error",
"no-with": "error",
"object-shorthand": ["error", "never"],
"one-var": ["error", "never"],
"prefer-arrow-callback": "error",
"prefer-const": [
"error",
{
"destructuring": "all",
"ignoreReadBeforeAssign": true
}
],
"prefer-numeric-literals": "error",
"prefer-object-spread": "error",
"prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }],
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
"require-atomic-updates": "off",
"sort-imports": [
"error",
{
"ignoreCase": true,
"ignoreDeclarationSort": true,
"ignoreMemberSort": false,
"memberSyntaxSortOrder": ["none", "all", "multiple", "single"]
}
],
"yoda": "error",
"import/consistent-type-specifier-style": ["error", "prefer-top-level"],
"import/extensions": "off",
"import/newline-after-import": "warn",
"import/no-absolute-path": "error",
"import/no-cycle": "off",
"import/no-default-export": "error",
"import/no-duplicates": ["error", { "prefer-inline": false }],
"import/no-dynamic-require": "error",
"import/no-self-import": "error",
"import/no-unresolved": ["warn", { "ignore": ["vscode", "@env"] }],
"import/no-useless-path-segments": "error",
"import/order": [
"warn",
{
"alphabetize": {
"order": "asc",
"orderImportKind": "asc",
"caseInsensitive": true
},
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
"newlines-between": "never"
}
],
"@typescript-eslint/ban-types": [
"error",
{
"extendDefaults": false,
"types": {
"String": {
"message": "Use string instead",
"fixWith": "string"
},
"Boolean": {
"message": "Use boolean instead",
"fixWith": "boolean"
},
"Number": {
"message": "Use number instead",
"fixWith": "number"
},
"Symbol": {
"message": "Use symbol instead",
"fixWith": "symbol"
},
// "Function": {
// "message": "The `Function` type accepts any function-like value.\nIt provides no type safety when calling the function, which can be a common source of bugs.\nIt also accepts things like class declarations, which will throw at runtime as they will not be called with `new`.\nIf you are expecting the function to accept certain arguments, you should explicitly define the function shape."
// },
"Object": {
"message": "The `Object` type actually means \"any non-nullish value\", so it is marginally better than `unknown`.\n- If you want a type meaning \"any object\", you probably want `Record<string, unknown>` instead.\n- If you want a type meaning \"any value\", you probably want `unknown` instead."
},
"{}": {
"message": "`{}` actually means \"any non-nullish value\".\n- If you want a type meaning \"any object\", you probably want `object` or `Record<string, unknown>` instead.\n- If you want a type meaning \"any value\", you probably want `unknown` instead.",
"fixWith": "object"
}
// "object": {
// "message": "The `object` type is currently hard to use ([see this issue](https://github.com/microsoft/TypeScript/issues/21732)).\nConsider using `Record<string, unknown>` instead, as it allows you to more easily inspect and use the keys."
// }
}
}
],
"@typescript-eslint/consistent-type-assertions": [
"error",
{
"assertionStyle": "as",
"objectLiteralTypeAssertions": "allow-as-parameter"
}
],
"@typescript-eslint/consistent-type-imports": ["error", { "disallowTypeAnnotations": false }],
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "variable",
"format": ["camelCase", "PascalCase"],
"leadingUnderscore": "allow",
"filter": {
"regex": "^_$",
"match": false
}
},
{
"selector": "variableLike",
"format": ["camelCase"],
"leadingUnderscore": "allow",
"filter": {
"regex": "^_$",
"match": false
}
},
{
"selector": "memberLike",
"modifiers": ["private"],
"format": ["camelCase"],
"leadingUnderscore": "allow"
},
{
"selector": "memberLike",
"modifiers": ["private", "readonly"],
"format": ["camelCase", "PascalCase"],
"leadingUnderscore": "allow"
},
{
"selector": "memberLike",
"modifiers": ["static", "readonly"],
"format": ["camelCase", "PascalCase"]
},
{
"selector": "interface",
"format": ["PascalCase"],
"custom": {
"regex": "^I[A-Z]",
"match": false
}
}
],
"@typescript-eslint/no-confusing-void-expression": [
"error",
{ "ignoreArrowShorthand": true, "ignoreVoidOperator": true }
],
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-inferrable-types": ["warn", { "ignoreParameters": true, "ignoreProperties": true }],
"@typescript-eslint/no-invalid-void-type": "off", // Seems to error on `void` return types
"@typescript-eslint/no-misused-promises": ["error", { "checksVoidReturn": false }],
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-redundant-type-constituents": "off",
"@typescript-eslint/no-unnecessary-condition": "off",
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "off",
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-unsafe-enum-comparison": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/no-unused-expressions": ["warn", { "allowShortCircuit": true }],
"@typescript-eslint/no-unused-vars": [
"warn",
{
"args": "after-used",
"argsIgnorePattern": "^_",
"ignoreRestSiblings": true,
"varsIgnorePattern": "^_$"
}
],
"@typescript-eslint/no-use-before-define": ["error", { "functions": false, "classes": false }],
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-includes": "warn",
"@typescript-eslint/prefer-literal-enum-member": ["warn", { "allowBitwiseExpressions": true }],
"@typescript-eslint/prefer-optional-chain": "warn",
"@typescript-eslint/prefer-reduce-type-parameter": "warn",
"@typescript-eslint/restrict-template-expressions": [
"error",
{ "allowAny": true, "allowBoolean": true, "allowNumber": true, "allowNullish": true }
],
"@typescript-eslint/unbound-method": "off", // Too many bugs right now: https://github.com/typescript-eslint/typescript-eslint/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+unbound-method
"@typescript-eslint/unified-signatures": ["error", { "ignoreDifferentlyNamedParameters": true }]
},
"settings": {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"typescript": {
"alwaysTryTypes": true // always try to resolve types under `<root>@types` directory even it doesn't contain any source code, like `@types/unist`
}
}
},
"ignorePatterns": ["dist/*", "out/*", "**/@types/*", "emojis.json", "tsconfig*.tsbuildinfo", "webpack.config*.js"],
"overrides": [
{
"files": ["src/env/node/**/*"],
"rules": {
"no-restricted-imports": [
"error",
{
"patterns": [
{
"group": ["src/*"],
"message": "Use relative paths instead"
},
{
"group": ["react-dom"],
"importNames": ["Container"],
"message": "Use our Container instead"
}
]
}
]
}
}
]
}

+ 10
- 0
.eslintrc.browser.json View File

@ -0,0 +1,10 @@
{
"extends": [".eslintrc.base.json"],
"env": {
"worker": true
},
"ignorePatterns": ["src/test/**/*", "src/webviews/apps/**/*", "src/env/node/**/*"],
"parserOptions": {
"project": "tsconfig.browser.json"
}
}

+ 10
- 0
.eslintrc.json View File

@ -0,0 +1,10 @@
{
"extends": [".eslintrc.base.json"],
"env": {
"node": true
},
"ignorePatterns": ["src/test/**/*", "src/webviews/apps/**/*", "src/env/browser/*"],
"parserOptions": {
"project": "tsconfig.json"
}
}

+ 33
- 0
.fantasticonrc.js View File

@ -0,0 +1,33 @@
//@ts-check
/** @type {import('@twbs/fantasticon').RunnerOptions} */
const config = {
name: 'glicons',
prefix: 'glicon',
codepoints: require('./images/icons/template/mapping.json'),
inputDir: './images/icons',
outputDir: './dist',
fontsUrl: '#{root}/dist',
// @ts-ignore
fontTypes: ['woff2'],
normalize: true,
// @ts-ignore
assetTypes: ['html', 'scss', 'json'],
templates: {
html: './images/icons/template/icons-contribution.hbs',
scss: './images/icons/template/styles.hbs',
},
formatOptions: {
json: {
indent: 2,
},
},
pathOptions: {
woff2: './dist/glicons.woff2',
scss: './dist/glicons.scss',
html: './dist/icons-contribution.json',
json: './images/icons/template/mapping.json',
},
};
module.exports = config;

+ 11
- 0
.git-blame-ignore-revs View File

@ -0,0 +1,11 @@
85769575493b939733a3dee5a590c2407923f31b
59d9071a9bb200c3ef95369a6335f8a0138f461a
9e17dbe2b7457af484c88cc15a45c42b84d2ba3b
d790e9db047769de079f6838c3578f3a47bf5930
003da86002563f825b51ca95a28afc7ef85f91d8
175a81eabe741aedb30776f092a937bfee7044bc
60f8cb9fb8d1a56772d18a1a81cdd1748d589c2e
9c2df377d3e1842ed09eea5bb99be00edee9ca9c
444bf829156b3170c8b4b5156dcf10b06db83779
4dba4612670c0a942e3daa3e6a34a57aebe257ae
fbccf2428fd671378202de43ff99deff66168a13

+ 1
- 0
.gitattributes View File

@ -0,0 +1 @@
* text=auto eol=lf

+ 1
- 0
.github/CODEOWNERS View File

@ -0,0 +1 @@
@eamodio

+ 59
- 0
.github/ISSUE_TEMPLATE/bug_report.yml View File

@ -0,0 +1,59 @@
name: Bug report
description: Create a report to help GitLens improve
labels: ['bug', 'triage']
body:
- type: textarea
attributes:
label: Description
description: Please provide a concise description of what you're experiencing, what you expected to happen, and any steps to reproduce the behavior.
placeholder: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: true
- type: input
id: gitlens
attributes:
label: GitLens Version
description: What version of GitLens are you using?
placeholder: 12.0.0
validations:
required: true
- type: textarea
id: vscode
attributes:
label: VS Code Version
description: What version of VS Code are you using? Copy from Help -> About
placeholder: |
Version: 1.70.0-insider (user setup)
Commit: 1cd90cceddf3c413673963ab6f154d2ff294b17c
Date: 2022-07-15T05:16:39.110Z
Electron: 18.3.5
Chromium: 100.0.4896.160
Node.js: 16.13.2
V8: 10.0.139.17-electron.0
OS: Windows_NT x64 10.0.22622
validations:
required: false
- type: input
id: git
attributes:
label: Git Version
description: 'What version of Git are you using? Use `git --version`'
placeholder: 'git version 2.37.0.windows.1'
validations:
required: false
- type: textarea
attributes:
label: Logs, Screenshots, Screen Captures, etc
description: |
Logs? Links? References? Anything that will give us more context about the issue you are encountering!
placeholder: |
For intermittent issues, please enable debug logging by running the _GitLens: Enable Debug Logging_ command from the Command Palette (<kbd>F1</kbd> or <kbd>ctrl/cmd</kbd>+<kbd>shift</kbd>+<kbd>p</kbd>).
This will enable logging to the _GitLens_ & _GitLens (Git)_ channels in the _Output_ pane.
Once enabled, please reproduce the issue, and attach the logs from the _GitLens_ channel, and if its Git related please also attach the logs from the _GitLens (Git)_ channel.
validations:
required: false

+ 11
- 0
.github/ISSUE_TEMPLATE/config.yml View File

@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Q & A
url: https://github.com/gitkraken/vscode-gitlens/discussions?discussions_q=category%3AQ%26A
about: Ask and answer questions about GitLens
- name: Documentation
url: https://help.gitkraken.com/gitlens
about: Read the GitLens support documentation
- name: GitKraken Support
url: https://gitkraken.com/gitlens-support
about: Get email support for issues and questions on paid features or relating to your GitKraken account or plan

+ 9
- 0
.github/ISSUE_TEMPLATE/feature_request.md View File

@ -0,0 +1,9 @@
---
name: Feature request
about: Suggest an idea for GitLens
title: ''
labels: feature, triage
assignees: ''
---
<!-- Describe the feature you'd like. -->

+ 32
- 0
.github/PULL_REQUEST_TEMPLATE.md View File

@ -0,0 +1,32 @@
## ❤ Thank you for contributing to GitLens! ❤
### 🚨 IMPORTANT 🚨
- Please create an issue _before_ creating a Pull Request
- Please use the following Git commit message style
- Use future tense ("Adds feature" not "Added feature")
- Use a "Fixes #xxx -" or "Closes #xxx -" prefix to auto-close the issue that your PR addresses
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
## ↑👆 DELETE above _before_ submitting 👆↑
---
# Description
<!--
Please include a summary of the changes and which issue will be addressed. Please also include relevant motivation and context.
-->
# Checklist
<!-- Please check off the following -->
- [ ] I have followed the guidelines in the Contributing document
- [ ] My changes follow the coding style of this project
- [ ] My changes build without any errors or warnings
- [ ] My changes have been formatted and linted
- [ ] My changes include any required corresponding changes to the documentation (including CHANGELOG.md and README.md)
- [ ] My changes have been rebased and squashed to the minimal number (typically 1) of relevant commits
- [ ] My changes have a descriptive commit message with a short title, including a `Fixes $XXX -` or `Closes #XXX -` prefix to auto-close the issue that your PR addresses

+ 75
- 0
.github/workflows/cd-pre.yml View File

@ -0,0 +1,75 @@
name: Publish pre-release
on:
schedule:
- cron: '0 9 * * *' # every day at 4am EST
workflow_dispatch:
jobs:
check:
name: Check for updates
runs-on: ubuntu-latest
permissions:
contents: write
outputs:
status: ${{ steps.earlyexit.outputs.status }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- id: earlyexit
run: |
git config user.name github-actions
git config user.email github-actions@github.com
if git rev-parse origin/pre >/dev/null 2>&1; then
preRef=$(git show-ref -s origin/pre)
headRef=$(git show-ref --head -s head)
echo "origin/pre"
echo $preRef
echo "HEAD"
echo $headRef
if [ "$preRef" = "$headRef" ]; then
echo "No changes since last pre-release build. Exiting."
echo "status=unchanged" >> $GITHUB_OUTPUT
exit 0
else
echo "Updating pre"
git push origin --delete pre
git checkout -b pre
git push origin pre
fi
else
echo "No pre branch. Creating."
git checkout -b pre
git push origin pre
fi
echo "status=changed" >> $GITHUB_OUTPUT
publish:
name: Publish pre-release
needs: check
runs-on: ubuntu-latest
if: needs.check.outputs.status == 'changed'
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install
run: yarn
- name: Apply pre-release patch
run: yarn run patch-pre
- name: Setup Environment
run: node -e "console.log('PACKAGE_VERSION=' + require('./package.json').version + '\nPACKAGE_NAME=' + require('./package.json').name + '-' + require('./package.json').version)" >> $GITHUB_ENV
- name: Package extension
run: yarn run package --pre-release
- name: Publish extension
run: yarn vsce publish --yarn --pre-release --packagePath ./${{ env.PACKAGE_NAME }}.vsix -p ${{ secrets.GITLENS_VSCODE_MARKETPLACE_PAT }}
- name: Publish artifact
uses: actions/upload-artifact@v3
with:
name: ${{ env.PACKAGE_NAME }}.vsix
path: ./${{ env.PACKAGE_NAME }}.vsix

+ 48
- 0
.github/workflows/cd-stable.yml View File

@ -0,0 +1,48 @@
name: Publish Stable
on:
push:
tags:
- 'v*.*.*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
build:
name: Publish Stable
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Setup Environment
run: node -e "console.log('PACKAGE_VERSION=' + require('./package.json').version + '\nPACKAGE_NAME=' + require('./package.json').name + '-' + require('./package.json').version)" >> $GITHUB_ENV
- name: Verify versions
run: node -e "if ('refs/tags/v' + '${{ env.PACKAGE_VERSION }}' !== '${{ github.ref }}') { console.log('::error' + 'Version Mismatch. refs/tags/v' + '${{ env.PACKAGE_VERSION }}', '${{ github.ref }}'); throw Error('Version Mismatch')} "
- name: Install
run: yarn
- name: Package extension
run: yarn run package
- name: Publish Extension
run: yarn vsce publish --yarn --packagePath ./${{ env.PACKAGE_NAME }}.vsix -p ${{ secrets.GITLENS_VSCODE_MARKETPLACE_PAT }}
- name: Generate Changelog
id: changelog
uses: mindsers/changelog-reader-action@v2
with:
version: ${{ env.PACKAGE_VERSION }}
path: ./CHANGELOG.md
- name: Create GitHub release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
name: v${{ env.PACKAGE_VERSION }}
body: ${{ steps.changelog.outputs.changes }}
draft: false
prerelease: false
files: ./${{ env.PACKAGE_NAME }}.vsix

+ 70
- 0
.github/workflows/codeql.yml View File

@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: 'CodeQL'
on:
push:
branches: [main]
pull_request:
# The branches below must be a subset of the branches above
# branches: [ main ]
schedule:
- cron: '43 22 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ['javascript']
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
# - name: Autobuild
# uses: github/codeql-action/autobuild@v2
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

+ 19
- 0
.github/workflows/issues-lock.yml View File

@ -0,0 +1,19 @@
name: 'Lock closed issues'
on:
schedule:
- cron: '30 5 * * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: dessant/lock-threads@v3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
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.'
issue-inactive-days: 30
process-only: 'issues'

+ 25
- 0
.github/workflows/issues-stale.yml View File

@ -0,0 +1,25 @@
name: 'Close stale issues'
on:
schedule:
- cron: '00 5 * * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v5
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-close: 7
days-before-stale: 7
only-labels: 'needs-more-info'
exempt-issue-labels: 'triage'
close-issue-message: 'Closing this issue because it needs more information and has not had recent activity. Please re-open this issue if more details can be provided. Thanks!'
stale-issue-label: 'inactive'
stale-issue-message: 'This issue needs more information and has not had recent activity. Please provide the missing information or it will be closed in 7 days. Thanks!'
labels-to-add-when-unstale: 'triage'

+ 11
- 0
.gitignore View File

@ -0,0 +1,11 @@
.eslintcache*
.vscode-clean/**
.vscode-test/**
.vscode-test-web/**
dist
out
node_modules
images/settings
gitlens-*.vsix
tsconfig*.tsbuildinfo
.DS_Store

+ 7
- 0
.mailmap View File

@ -0,0 +1,7 @@
Eric Amodio <eamodio@gmail.com> Eric Amodio <eamodio@ioninteractive.com>
Eric Amodio <eamodio@gmail.com> Eric Amodio <eric@amod.io>
Eric Follana <eric.follana@gitkraken.com> Eric <eric.follana@gitkraken.com>
Eric Follana <eric.follana@gitkraken.com> ericf-axosoft <90025366+ericf-axosoft@users.noreply.github.com>
Ramin Tadayon <ramin.tadayon@gitkraken.com> Ramin Tadayon <67011668+axosoft-ramint@users.noreply.github.com>
Ramin Tadayon <ramin.tadayon@gitkraken.com> Ramin Test <ramin.tadayon@gitkraken.com>
Keith Daulton <keith.daulton@gitkraken.com> Keith Daulton <kdaulton@d13design.com>

+ 9
- 0
.prettierignore View File

@ -0,0 +1,9 @@
dist
out
node_modules
git.d.ts
glicons.scss
images/icons/template/icons-contribution.hbs
images/icons/template/mapping.json
images/icons/template/styles.hbs
src/emojis.generated.ts

+ 19
- 0
.prettierrc View File

@ -0,0 +1,19 @@
{
"arrowParens": "avoid",
"endOfLine": "lf",
"trailingComma": "all",
"printWidth": 120,
"singleQuote": true,
"tabWidth": 4,
"useTabs": true,
"overrides": [
{
"files": ".prettierrc",
"options": { "parser": "json" }
},
{
"files": "*.md",
"options": { "tabWidth": 2 }
}
]
}

+ 5
- 0
.vscode/extensions.json View File

@ -0,0 +1,5 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": ["dbaeumer.vscode-eslint", "amodio.tsl-problem-matcher", "esbenp.prettier-vscode"]
}

+ 102
- 0
.vscode/issues.github-issues View File

@ -0,0 +1,102 @@
[
{
"kind": 2,
"language": "github-issues",
"value": "$current=milestone:\"13.1\"\n$patch=milestone:\"13.0-patch\"\n$issues=repo:gitkraken/vscode-gitlens is:issue\n$prs=repo:gitkraken/vscode-gitlens is:pr"
},
{
"kind": 1,
"language": "markdown",
"value": "## Triage"
},
{
"kind": 1,
"language": "markdown",
"value": "### Inbox"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues is:open label:\"triage\" sort:updated-desc"
},
{
"kind": 1,
"language": "markdown",
"value": "### Needs More Information"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues label:\"needs-more-info\" sort:updated-desc"
},
{
"kind": 1,
"language": "markdown",
"value": "## Patch"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues $patch"
},
{
"kind": 1,
"language": "markdown",
"value": "## Current Iteration"
},
{
"kind": 1,
"language": "markdown",
"value": "### TODO"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues $current is:open"
},
{
"kind": 1,
"language": "markdown",
"value": "### Verification Needed"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues $current is:closed label:\"needs-verification\" -label:\"verified ✔\""
},
{
"kind": 1,
"language": "markdown",
"value": "### Done"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues $current is:closed -label:\"pending-release\""
},
{
"kind": 1,
"language": "markdown",
"value": "## Milestones"
},
{
"kind": 1,
"language": "markdown",
"value": "### Soon™"
},
{
"kind": 2,
"language": "github-issues",
"value": "$issues milestone:Soon™"
},
{
"kind": 1,
"language": "markdown",
"value": "## Pull Requests"
},
{
"kind": 2,
"language": "github-issues",
"value": "$prs"
}
]

+ 182
- 0
.vscode/launch.json View File

@ -0,0 +1,182 @@
// A launch configuration that compiles the extension and then opens it inside a new window
{
"version": "0.2.0",
"configurations": [
{
"name": "Run",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--profile=Debugging (GitLens)", "--extensionDevelopmentPath=${workspaceFolder}"],
"debugWebviews": true,
"rendererDebugOptions": {
"pauseForSourceMap": true,
"sourceMapRenames": true,
"sourceMaps": true,
// "urlFilter": "*eamodio.gitlens*",
"webRoot": "${workspaceFolder}/src/webviews/apps"
},
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"presentation": {
"group": "2_run",
"order": 1
},
"pauseForSourceMap": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true,
"trace": true
},
{
"name": "Run (sandboxed)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--profile-temp", "--extensionDevelopmentPath=${workspaceFolder}"],
"debugWebviews": true,
"rendererDebugOptions": {
"pauseForSourceMap": true,
"sourceMapRenames": true,
"sourceMaps": true,
// "urlFilter": "*eamodio.gitlens*",
"webRoot": "${workspaceFolder}/src/webviews/apps"
},
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"pauseForSourceMap": true,
"presentation": {
"group": "2_run",
"order": 2
},
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true,
"trace": true
},
{
"name": "Run Tests",
"type": "extensionHost",
"request": "launch",
"args": [
"--profile-temp",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
],
"outFiles": ["${workspaceFolder}/out/test/**/*.js", "${workspaceFolder}/dist/**/*.js"],
"presentation": {
"group": "2_run_tests",
"order": 2
},
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true
},
{
"name": "Watch & Run",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--profile=Debugging (GitLens)", "--extensionDevelopmentPath=${workspaceFolder}"],
"debugWebviews": true,
"rendererDebugOptions": {
"pauseForSourceMap": true,
"sourceMapRenames": true,
"sourceMaps": true,
// "urlFilter": "*eamodio.gitlens*",
"webRoot": "${workspaceFolder}/src/webviews/apps"
},
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"pauseForSourceMap": true,
"preLaunchTask": "${defaultBuildTask}",
"presentation": {
"group": "1_watch",
"order": 1
},
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true,
"trace": true
},
{
"name": "Watch & Run (web)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
// "--folder-uri=vscode-vfs://github/gitkraken/vscode-gitlens",
"--profile=Debugging (GitLens)",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionDevelopmentKind=web"
],
"debugWebWorkerHost": true,
"rendererDebugOptions": {
"pauseForSourceMap": true,
"sourceMapRenames": true,
"sourceMaps": true,
"webRoot": "${workspaceFolder}/src/webviews/apps"
},
"outFiles": ["${workspaceFolder}/dist/browser/**/*.js"],
"pauseForSourceMap": true,
"preLaunchTask": "${defaultBuildTask}",
"presentation": {
"group": "1_watch",
"order": 1
},
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true,
"trace": true
},
{
"name": "Watch & Run (sandboxed)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--profile-temp", "--extensionDevelopmentPath=${workspaceFolder}"],
"debugWebviews": true,
"rendererDebugOptions": {
"pauseForSourceMap": true,
"sourceMapRenames": true,
"sourceMaps": true,
// "urlFilter": "*eamodio.gitlens*",
"webRoot": "${workspaceFolder}/src/webviews/apps"
},
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"pauseForSourceMap": true,
"preLaunchTask": "${defaultBuildTask}",
"presentation": {
"group": "1_watch",
"order": 2
},
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true,
"trace": true
},
{
"name": "Watch & Run Tests",
"type": "extensionHost",
"request": "launch",
"args": [
"--profile-temp",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
],
"outFiles": ["${workspaceFolder}/out/test/**/*.js", "${workspaceFolder}/dist/**/*.js"],
"preLaunchTask": "npm: watch:tests",
"presentation": {
"group": "1_watch_tests",
"order": 2
},
"skipFiles": ["<node_internals>/**", "**/node_modules/**", "**/resources/app/out/vs/**"],
"smartStep": true,
"sourceMapRenames": true,
"sourceMaps": true
}
]
}

+ 1
- 0
.vscode/queries.github-graphql-nb
File diff suppressed because it is too large
View File


+ 53
- 0
.vscode/settings.json View File

@ -0,0 +1,53 @@
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"files.associations": {
".eslintrc*.json": "jsonc"
},
"files.exclude": {
"**/.vscode-test": true,
"**/.vscode-test-web": true
},
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
"githubIssues.queries": [
{
"label": "Triage",
"query": "state:open repo:${owner}/${repository} label:triage sort:updated-desc"
},
{
"label": "Current",
"query": "state:open repo:${owner}/${repository} milestone:\"13.5\" sort:updated-desc"
},
{
"label": "Soon™",
"query": "state:open repo:${owner}/${repository} milestone:Soon™ sort:updated-desc"
},
{
"label": "Verify",
"query": "state:closed repo:${owner}/${repository} -milestone:Shipped label:pending-release label:needs-verification sort:updated-desc"
},
{
"label": "Pending Release",
"query": "state:closed repo:${owner}/${repository} label:pending-release sort:updated-desc"
},
{
"label": "Debt",
"query": "state:open repo:${owner}/${repository} label:debt sort:updated-desc"
},
{
"label": "All",
"query": "state:open repo:${owner}/${repository} sort:updated-desc"
}
],
"[html][javascript][json][jsonc][markdown][scss][svg][typescript][typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"npm.packageManager": "yarn",
"search.exclude": {
"**/dist": true
},
"typescript.preferences.importModuleSpecifier": "project-relative",
"typescript.tsdk": "node_modules\\typescript\\lib"
}

+ 79
- 0
.vscode/tasks.json View File

@ -0,0 +1,79 @@
// Available variables which can be used inside of strings.
// ${workspaceRoot}: the root folder of the team
// ${file}: the current opened file
// ${fileBasename}: the current opened file's basename
// ${fileDirname}: the current opened file's dirname
// ${fileExtname}: the current opened file's extension
// ${cwd}: the current working directory of the spawned process
// A task runner that calls a custom npm script that compiles the extension.
{
"version": "2.0.0",
"presentation": {
"echo": false,
"reveal": "always",
"focus": false,
"panel": "dedicated",
"showReuseMessage": false
},
"tasks": [
{
"type": "npm",
"script": "build",
"group": "build",
"problemMatcher": ["$ts-checker-webpack", "$ts-checker-eslint-webpack"]
},
{
"type": "npm",
"script": "lint",
"group": "build",
"problemMatcher": ["$eslint-stylish"]
},
{
"type": "npm",
"script": "watch",
"group": {
"kind": "build",
"isDefault": true
},
"isBackground": true,
"presentation": {
"group": "watchers"
},
"problemMatcher": ["$ts-checker-webpack-watch", "$ts-checker-eslint-webpack-watch"]
},
{
"label": "Run (local web)",
"type": "npm",
"script": "web",
"group": "test",
"isBackground": true,
"presentation": {
"group": "web",
"reveal": "never"
},
"problemMatcher": []
},
{
"label": "Run (vscode.dev)",
"type": "npm",
"script": "web:serve",
"group": "test",
"isBackground": true,
"presentation": {
"group": "web",
"reveal": "never"
},
"problemMatcher": []
},
{
"type": "npm",
"script": "watch:tests",
"group": "build",
"isBackground": true,
"presentation": {
"group": "watchers"
},
"problemMatcher": "$tsc-watch" //["$ts-checker-webpack-watch", "$ts-checker-eslint-webpack-watch"]
}
]
}

+ 45
- 0
.vscodeignore View File

@ -0,0 +1,45 @@
.github/**
.vscode/**
.vscode-clean/**
.vscode-test/**
.vscode-test-web/**
.yarn/**
dist/webviews/*.css
emoji/**
images/docs/sponsors/**
images/docs/gitlens-preview.gif
images/icons/**
images/originals/**
node_modules/**
out/**
patches/**
scripts/**
src/**
test/**
**/*.fig
**/*.map
**/*.pdn
**/*.js.LICENSE.txt
.browserslistrc
.eslintcache
.eslintignore
.eslintrc*.json
.fantasticonrc.js
.git-blame-ignore-revs
.gitattributes
.gitignore
.mailmap
.prettierignore
.prettierrc
.yarnrc
BACKERS.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
esbuild.mjs
README.pre.md
svgo.config.js
tsconfig*.json
tsconfig*.tsbuildinfo
webpack.config*.js
yarn.lock
.DS_Store

+ 2
- 0
.yarnrc View File

@ -0,0 +1,2 @@
ignore-engines true
version-git-message "Bumps to v%s"

+ 63
- 0
BACKERS.md View File

@ -0,0 +1,63 @@
# Previous Sponsors
While GitLens is no longer accepting sponsorships, I've had some incredible sponsors over the years &mdash; thank you so much for your contributions. I am truly humbled by your generosity and support. &#x1f496;
## Corporate Sponsors
<p align="center">
<a title="Try CodeStream &mdash; Pull Requests and Code Reviews in your IDE" href="https://sponsorlink.codestream.com/?utm_source=vscmarket&utm_medium=banner&utm_campaign=gitlens"><img src="https://alt-images.codestream.com/codestream_logo_gitlens_vscmarket.png" alt="CodeStream Logo &mdash; Pull Requests and Code Reviews in your IDE"/></a>
<a title="Visit Embark Studios" href="https://embark-studios.com"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/sponsors/embark-studios_dark.png" alt="Embark Studios Logo"/></a>
<a title="Visit Localize" href="https://localizejs.com"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/sponsors/localize_dark.png" alt="Localize Logo"/></a>
<a title="Try Tabnine Autocomplete" href="http://wd5a.2.vu/GitLens"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/sponsors/tabnine.png" alt="Tabnine Logo"/></a>
<a title="Try Dendron — the IDE for General Knowledge" href="https://www.dendron.so"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/sponsors/dendron.png" alt="Dendron Logo"/></a>
<a title="Try Stepsize" href="https://bit.ly/3A5zaNg"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/sponsors/stepsize.png" alt="Stepsize Logo"/></a>
<a title="Visit Crésus" href="https://cresus.ch"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/sponsors/cresus.png" alt="Crésus Logo"/></a>
</p>
## User Sponsors
- Borek Bernard
- Jack
- Ken Howard
- Michael Duffy
- Michael Scott-Nelson
- MrG0lden
- Sergey Cheperis
- Xananax
- Andreas Fertsch-Röver
- Bill
- Brandon Burroughs
- Brent Schmidt
- Diego La Manno
- Eugen Grue
- Georg Hartmann
- Guido Kessels
- J Burnett
- JehongAhn
- Jon G
- Jordan Oroshiba
- Karl
- Michael Melanson
- Niklas Lochschmidt
- Pavel Khlopin
- Pelle Wessman
- Raphael Schweikert
- sombriks
- Stephen Kelley
- Steven Hepting
- Sunny Gupta
- Vance Dubberly
- Øyvind de Freitas Sørensen
- Kori Roys
- Michael Lang
- Ian Maclean
- Sergey Cheperis
- Asem Hasna
- gb
- John Sweeney
- ember arlynx
- Bharat Arimilli
- Darrin Massena
- M365Bass
- Sandeep kumar
- Lawrence H. Leach

+ 5220
- 0
CHANGELOG.md
File diff suppressed because it is too large
View File


+ 46
- 0
CODE_OF_CONDUCT.md View File

@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at eamodio@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

+ 229
- 0
CONTRIBUTING.md View File

@ -0,0 +1,229 @@
# Contributing
👍🎉 First off, thanks for taking the time to contribute! 🎉👍
When contributing to this project, please first discuss the changes you wish to make via an issue before making changes.
Please note the [Code of Conduct](CODE_OF_CONDUCT.md) document, please follow it in all your interactions with this project.
## Your First Code Contribution
Unsure where to begin contributing? You can start by looking through the [`help-wanted`](https://github.com/gitkraken/vscode-gitlens/labels/help-wanted) issues.
### Getting the code
```
git clone https://github.com/gitkraken/vscode-gitlens.git
```
Prerequisites
- [Git](https://git-scm.com/), `>= 2.7.2`
- [NodeJS](https://nodejs.org/), `>= 16.14.2`
- [yarn](https://yarnpkg.com/), `>= 1.22.19`
### Dependencies
From a terminal, where you have cloned the repository, execute the following command to install the required dependencies:
```
yarn
```
### Build
From a terminal, where you have cloned the repository, execute the following command to re-build the project from scratch:
```
yarn run rebuild
```
👉 **NOTE!** This will run a complete rebuild of the project.
Or to just run a quick build, use:
```
yarn run build
```
### Watch
During development you can use a watcher to make builds on changes quick and easy. From a terminal, where you have cloned the repository, execute the following command:
```
yarn run watch
```
Or use the provided `watch` task in VS Code, execute the following from the command palette (be sure there is no `>` at the start):
```
task watch
```
This will first do an initial full build and then watch for file changes, compiling those changes incrementally, enabling a fast, iterative coding experience.
👉 **Tip!** You can press <kbd>CMD+SHIFT+B</kbd> (<kbd>CTRL+SHIFT+B</kbd> on Windows, Linux) to start the watch task.
👉 **Tip!** You don't need to stop and restart the development version of Code after each change. You can just execute `Reload Window` from the command palette.
### Formatting
This project uses [prettier](https://prettier.io/) for code formatting. You can run prettier across the code by calling `yarn run pretty` from a terminal.
To format the code as you make changes you can install the [Prettier - Code formatter](https://marketplace.visualstudio.com/items/esbenp.prettier-vscode) extension.
Add the following to your User Settings to run prettier:
```
"editor.formatOnSave": true,
```
### Linting
This project uses [ESLint](https://eslint.org/) for code linting. You can run ESLint across the code by calling `yarn run lint` from a terminal. Warnings from ESLint show up in the `Errors and Warnings` quick box and you can navigate to them from inside VS Code.
To lint the code as you make changes you can install the [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) extension.
### Bundling
To generate a production bundle (without packaging) run the following from a terminal:
```
yarn run bundle
```
To generate a VSIX (installation package) run the following from a terminal:
```
yarn run package
```
### Debugging
#### Using VS Code (desktop)
1. Open the `vscode-gitlens` folder
2. Ensure the required [dependencies](#dependencies) are installed
3. Choose the `Watch & Run` launch configuration from the launch dropdown in the Run and Debug viewlet and press `F5`.
_Note: If you see a pop-up with a message similar to "The task cannot be tracked. Make sure to have a problem matcher defined.", you will need to install the [TypeScript + Webpack Problem Matchers](https://marketplace.visualstudio.com/items?itemName=amodio.tsl-problem-matcher) extension._
#### Using VS Code (desktop webworker)
1. Open the `vscode-gitlens` folder
2. Ensure the required [dependencies](#dependencies) are installed
3. Choose the `Watch & Run (web)` launch configuration from the launch dropdown in the Run and Debug viewlet and press `F5`.
#### Using VS Code for the Web (locally)
See https://code.visualstudio.com/api/extension-guides/web-extensions#test-your-web-extension-in-a-browser-using-vscodetestweb
1. Open the `vscode-gitlens` folder
2. Ensure the required [dependencies](#dependencies) are installed
3. Run the `build` or `watch` task from the command palette
4. Run the `Run (local web)` task from the command palette
#### Using VS Code for the Web (vscode.dev)
See https://code.visualstudio.com/api/extension-guides/web-extensions#test-your-web-extension-in-vscode.dev
1. Open the `vscode-gitlens` folder
2. Ensure the required [dependencies](#dependencies) are installed
3. Run the `build` or `watch` task from the command palette
4. Run the `Run (vscode.dev)` task from the command palette
## Submitting a Pull Request
Please follow all the instructions in the [PR template](.github/PULL_REQUEST_TEMPLATE.md).
### Contributions to GitLens+ Licensed Files
This repository contains both OSS-licensed and non-OSS-licensed files. All files in or under any directory named "plus" fall under LICENSE.plus. The remaining files fall under LICENSE, the MIT license.
If a pull request is submitted which contains changes to files in or under any directory named "plus", then you agree that GitKraken and/or its licensors (as applicable) retain all right, title and interest in and to all such modifications and/or patches.
### Update the CHANGELOG
The [Change Log](CHANGELOG.md) is updated manually and an entry should be added for each change. Changes are grouped in lists by `added`, `changed`, `removed`, or `fixed`.
Entries should be written in future tense:
- Be sure to give yourself much deserved credit by adding your name and user in the entry
> Added
>
> - Adds awesome feature &mdash; closes [#\<issue\>](https://github.com/gitkraken/vscode-gitlens/issues/<issue>) thanks to [PR #\<pr\>](https://github.com/gitkraken/vscode-gitlens/issues/<pr>) by Your Name ([@\<your-github-username\>](https://github.com/<your-github-username>))
>
> Changed
>
> - Changes or improves an existing feature &mdash; closes [#\<issue\>](https://github.com/gitkraken/vscode-gitlens/issues/<issue>) thanks to [PR #\<pr\>](https://github.com/gitkraken/vscode-gitlens/issues/<pr>) by Your Name ([@\<your-github-username\>](https://github.com/<your-github-username>))
>
> Fixed
>
> - Fixes [#\<issue\>](https://github.com/gitkraken/vscode-gitlens/issues/<issue>) a bug or regression &mdash; thanks to [PR #\<pr\>](https://github.com/gitkraken/vscode-gitlens/issues/<pr>) by Your Name ([@\<your-github-username\>](https://github.com/<your-github-username>))
### Update the README
If this is your first contribution to GitLens, please give yourself credit by adding yourself to the `Contributors` section of the [README](README.md#contributors-) in the following format:
> - `Your Name ([@<your-github-username>](https://github.com/<your-github-username>)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=<your-github-username>)`
## Publishing
### Stable Releases
#### Versioning
GitLens version changes are bucketed into two types:
- `minor`: normal release (new features, enhancements and fixes)
- `patch`: hotfix release (just fixes)
<small>Note: `major` version bumps are only considered for more special circumstances.</small>
#### Preparing a Normal Release
Use the [prep-release](scripts/prep-release.js) script to prepare a new release. The script updates the [package.json](package.json) and [CHANGELOG.md](CHANGELOG.md) appropriately, commits the changes as `Bumps to v{major}.{minor}.{patch}`, and creates a `v{major}.{minor}.{patch}` tag which when pushed will trigger the CI to publish a release.
1. Ensure you are on the `main` branch and have a clean working tree
2. Ensure the [CHANGELOG.md](CHANGELOG.md) has been updated with the release notes
3. Run `yarn run prep-release` and enter the desired `{major}.{minor}.{patch}` version when prompted
4. Review the `Bumps to v{major}.{minor}.{patch}` commit
5. Run `git push --follow-tags` to push the commit and tag
Pushing the `v{major}.{minor}.{patch}` tag will trigger the [Publish Stable workflow](.github/workflows/cd-stable.yml) to automatically package the extension, create a [GitHub release](https://github.com/gitkraken/vscode-gitlens/releases/latest), and deploy it to the [VS Marketplace](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens).
If the action fails and retries are unsuccessful, the VSIX can be built locally with `yarn package` and uploaded manually to the marketplace. A GitHub release can also be [created manually](https://github.com/gitkraken/vscode-gitlens/releases/new) using `v{major}.{minor}.{patch}` as the title and the notes from the [CHANGELOG.md](CHANGELOG.md) with the VSIX attached.
#### Preparing a Patch Release
1. Create, if needed, a `release/{major}.{minor}` branch from the latest `v{major}.{minor}.{patch}` tag
2. Cherry-pick the desired commits from `main` into the `release/{major}.{minor}` branch
3. Follow steps 2-5 in [Preparing a Normal Release](#preparing-a-normal-release) above
4. Manually update the [CHANGELOG.md](CHANGELOG.md) on `main` with the patch release notes
Note: All patch releases for the same `{major}.{minor}` version use the same `release/{major}.{minor}` branch
### Pre-releases
The [Publish Pre-release workflow](.github/workflows/cd-pre.yml) is automatically run every AM unless no new changes have been committed to `main`.
### Insiders (deprecated use pre-release instead)
The Publish Insiders workflow is no longer available and was replaced with the pre-release edition.
## Updating GL Icons
To add new icons to the GL Icons font follow the steps below:
- Add new SVG icons to the `images/icons` folder
- Update the `images/icons/template/mapping.json` file with entries for the new icons (append to the end of the file)
- Optimize and build the icons by running the following from a terminal:
```
yarn run icons:svgo
yarn run build:icons
```
Once you've finshed copy the new `glicons.woff2?<uuid>` URL from `src/webviews/apps/shared/glicons.scss` and search and replace the old references with the new one.

+ 30
- 0
LICENSE View File

@ -0,0 +1,30 @@
===============================================================================
The following license applies to all files in this repository,
except for those in or under any directory named "plus",
which are covered by LICENSE.plus.
===============================================================================
The MIT License (MIT)
Copyright (c) 2021-2023 Axosoft, LLC dba GitKraken ("GitKraken")
Copyright (c) 2016-2021 Eric Amodio
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

+ 40
- 0
LICENSE.plus View File

@ -0,0 +1,40 @@
GitLens+ License
Copyright (c) 2021-2023 Axosoft, LLC dba GitKraken ("GitKraken")
With regard to the software set forth in or under any directory named "plus".
This software and associated documentation files (the "Software") may be
compiled as part of the gitkraken/vscode-gitlens open source project (the
"GitLens") to the extent the Software is a required component of the GitLens;
provided, however, that the Software and its functionality may only be used if
you (and any entity that you represent) have agreed to, and are in compliance
with, the GitKraken End User License Agreement, available at
https://gitkraken.com/eula (the "EULA"), or other agreement governing the
use of the Software, as agreed by you and GitKraken, and otherwise have a valid
subscription for the correct number of user seats for the applicable version of
the Software (e.g., GitLens+, GitLens+ Pro, GitLens+ Teams, and GitLens+
Enterprise). Subject to the foregoing sentence, you are free to modify this
Software and publish patches to the Software. You agree that GitKraken and/or
its licensors (as applicable) retain all right, title and interest in and to all
such modifications and/or patches, and all such modifications and/or patches may
only be used, copied, modified, displayed, distributed, or otherwise exploited
with a valid subscription for the correct number of user seats for the Software.
In furtherance of the foregoing, you hereby assign to GitKraken all such
modifications and/or patches. You are not granted any other rights beyond what
is expressly stated herein. Except as set forth above, it is forbidden to copy,
merge, publish, distribute, sublicense, and/or sell the Software.
The full text of this GitLens+ License shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For all third party components incorporated into the Software, those components
are licensed under the original license provided by the owner of the applicable
component.

+ 442
- 2
README.md View File

@ -1,3 +1,443 @@
# test1
# GitLens &mdash; Supercharge Git in VS Code
#### 测试修改
> Supercharge Git and unlock **untapped knowledge** within your repository to better **understand**, **write**, and **review** code. Focus, collaborate, accelerate.
[GitLens](https://gitkraken.com/gitlens?utm_source=gitlens-extension&utm_medium=in-app-links&utm_campaign=gitlens-logo-links 'Learn more about GitLens') is a powerful [open-source](https://github.com/gitkraken/vscode-gitlens 'Open GitLens on GitHub') extension for [Visual Studio Code](https://code.visualstudio.com).
GitLens supercharges your Git experience in VS Code. Maintaining focus is critical, extra time spent context switching or missing context disrupts your flow. GitLens is the ultimate tool for making Git work for you, designed to improve focus, productivity, and collaboration with a powerful set of tools to help you and your team better understand, write, and review code.
GitLens sets itself apart from other Git tools through its deep level of integration, versatility, and ease of use. GitLens sits directly within your editor, reducing context switching and promoting a more efficient workflow. We know Git is hard and strive to make it as easy as possible while also going beyond the basics with rich visualizations and step-by-step guidance and safety, just to name a few.
## Getting Started
<p>
<a title="Watch the GitLens Getting Started video" href="https://www.youtube.com/watch?v=UQPb73Zz9qk"><img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/get-started-video.png" alt="Watch the GitLens Getting Started video" /></a>
</p>
Install GitLens by clicking `Install` on the banner above, or from the Extensions side bar in VS Code, by searching for GitLens.
Use `Switch to Pre-Release Version` on the extension banner to live on the edge and be the first to experience new features.
## Is GitLens Free?
All features are free to use on all repos, **except** for features,
- marked with a ✨ require a [trial or paid plan](https://www.gitkraken.com/gitlens/pricing) for use on privately hosted repos
- marked with a ☁️ require a GitKraken account, with access level based on your [plan](https://www.gitkraken.com/gitlens/pricing), e.g. Free, Pro, etc
See the [FAQ](#is-gitlens-free-to-use 'Jump to FAQ') for more details.
[Features](#discover-powerful-features 'Jump to Discover Powerful Features')
| [Labs](#gitkraken-labs 'Jump to GitKraken Labs')
| [Pro](#ready-for-gitlens-pro 'Jump to Ready for GitKraken Pro?')
| [FAQ](#faq 'Jump to FAQ')
| [Support and Community](#support-and-community 'Jump to Support and Community')
| [Contributing](#contributing 'Jump to Contributing')
| [Contributors](#contributors- 'Jump to Contributors')
| [License](#license 'Jump to License')
# Discover Powerful Features
Quickly glimpse into when, why, and by whom a line or code block was changed. Zero-in on the most important changes and effortlessly navigate through history to gain further insights as to how a file or individual line's code evolved. Visualize code authorship at a glance via Git blame annotations and Git CodeLens. Seamlessly explore Git repositories with the visually-rich Commit Graph. Gain valuable insights via GitLens Inspect, and much more.
- [**Blame, CodeLens, and Hovers**](#blame-codelens-and-hovers) &mdash; Gain a deeper understanding of how code changed and by whom through in-editor code annotations and rich hovers.
- [**File Annotations**](#file-annotations) &mdash; Toggle on-demand whole file annotations to see authorship, recent changes, and a heatmap.
- [**Revision Navigation**](#revision-navigation) &mdash; Explore the history of a file to see how the code evolved over time.
- [**Side Bar Views**](#side-bar-views) &mdash; Powerful views into Git that don't come in the box.
- [**Commit Graph ✨**](#commit-graph-✨) &mdash; Visualize your repository and keep track of all work in progress.
- [**GitKraken Workspaces ☁️ and Focus ✨**](#gitkraken-workspaces-☁️-and-focus-✨) &mdash; Easily group and manage multiple repositories and bring pull requests and issues into a unified view.
- [**Visual File History ✨**](#visual-file-history-✨) &mdash; Identify the most impactful changes to a file and by whom.
- [**Worktrees ✨**](#worktrees-✨) &mdash; Simultaneously work on different branches of a repository.
- [**Interactive Rebase Editor**](#interactive-rebase-editor) &mdash; Visualize and configure interactive rebase operations with a user-friendly editor.
- [**Comprehensive Commands**](#comprehensive-commands) &mdash; A rich set of commands to help you do everything you need.
- [**Integrations**](#integrations) &mdash; Simplify your workflow and quickly gain insights via integration with your Git hosting services.
## Blame, CodeLens, and Hovers
Gain a deeper understanding of how code changed and by whom through in-editor code annotations and rich hovers.
### Inline and Status Bar Blame
Provides historical context about line changes through unobtrusive **blame annotation** at the end of the current line and on the status bar.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/current-line-blame.png" alt="Inline Line Blame" />
<figcaption>Inline blame annotations</figcaption>
</figure>
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/status-bar.png" alt="Status Bar Blame" />
<figcaption>Status bar blame annotations</figcaption>
</figure>
💡 Use the `Toggle Line Blame` and `Toggle Git CodeLens` commands from the Command Palette to turn the annotations on and off.
### Git CodeLens
Adds contextual and actionable authorship information at the top of each file and at the beginning of each block of code.
- **Recent Change** &mdash; author and date of the most recent commit for the file or code block
- **Authors** &mdash; number of authors of the file or code block and the most prominent author (if there is more than one)
### Rich Hovers
Hover over blame annotations to reveal rich details and actions.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/hovers-current-line.png" alt="Current Line Hovers" />
</figure>
## File Annotations
Use on-demand whole file annotations to see authorship, recent changes, and a heatmap. Annotations are rendered as visual indicators directly in the editor.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/gutter-blame.png" alt="File Blame">
<figcaption>File Blame annotations</figcaption>
</figure>
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/gutter-changes.png" alt="File Changes" />
<figcaption>File Changes annotations</figcaption>
</figure>
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/gutter-heatmap.png" alt="File Heatmap" />
<figcaption>File Heatmap annotations</figcaption>
</figure>
💡 On an active file, use the `Toggle File Blame`, `Toggle File Changes`, and `Toggle File Heatmap` commands from the Command Palette to turn the annotations on and off.
## Revision Navigation
With just a click of a button, you can navigate backwards and forwards through the history of any file. Compare changes over time and see the revision history of the whole file or an individual line.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/revision-navigation.gif" alt="Revision Navigation" />
</figure>
## Side Bar Views
Our views are arranged for focus and productivity, although you can easily drag them around to suit your needs.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/side-bar-views.png" alt="Side Bar views" />
<figcaption>GitLens Inspect as shown above has been manually moved into the Secondary Side Bar</figcaption>
</figure>
💡 Use the `Reset Views Layout` command to quickly get back to the default layout.
### GitLens Inspect
An x-ray or developer tools inspector into your code, focused on providing contextual information and insights to what you're actively working on.
- **Commit Details** &mdash; See rich details of a commit or stash.
- **Line History** &mdash; Jump through the revision history of the selected line(s).
- **File History** &mdash; Explore the revision history of a file, folder, or selected lines.
- [**Visual File History ✨**](#visual-file-history-✨) &mdash; Quickly see the evolution of a file, including when changes were made, how large they were, and who made them.
- **Search & Compare** &mdash; Search and explore for a specific commit, message, author, changed file or files, or even a specific code change, or visualize comparisons between branches, tags, commits, and more.
### GitLens
Quick access to many GitLens features. Also the home of GitKraken teams and collaboration services (e.g. GitKraken Workspaces), help, and support.
- **Home** &mdash; Quick access to many features.
- [**GitKraken Workspaces ☁️**](#gitkraken-workspaces-☁️-and-focus-✨) &mdash; Easily group and manage multiple repositories together, accessible from anywhere, streamlining your workflow.
- **GitKraken Account** &mdash; Power-up with GitKraken Cloud Services.
### Source Control
Shows additional views that are focused on exploring and managing your repositories.
- **Commits** &mdash; Comprehensive view of the current branch commit history, including unpushed changes, upstream status, quick comparisons, and more.
- **Branches** &mdash; Manage and navigate branches.
- **Remotes** &mdash; Manage and navigate remotes and remote branches.
- **Stashes** &mdash; Save and restore changes you are not yet ready to commit.
- **Tags** &mdash; Manage and navigate tags.
- [**Worktrees ✨**](#worktrees-✨) &mdash; Simultaneously work on different branches of a repository.
- **Contributors** &mdash; Ordered list of contributors, providing insights into individual contributions and involvement.
- **Repositories** &mdash; Unifies the above views for more efficient management of multiple repositories.
### (Bottom) Panel
Convenient and easy access to the Commit Graph with a dedicated details view.
- [**Commit Graph ✨**](#commit-graph-✨) &mdash; Visualize your repository and keep track of all work in progress.
## Commit Graph ✨
Easily visualize your repository and keep track of all work in progress.
Use the rich commit search to find exactly what you're looking for. Its powerful filters allow you to search by a specific commit, message, author, a changed file or files, or even a specific code change.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/commit-graph-illustrated.png" alt="Commit Graph" />
</figure>
💡Quickly toggle the Graph via the `Toggle Commit Graph` command.
💡Maximize the Graph via the `Toggle Maximized Commit Graph` command.
## GitKraken Workspaces ☁️ and Focus ✨
GitKraken Workspaces allow you to easily group and manage multiple repositories together, accessible from anywhere, streamlining your workflow. Create workspaces just for yourself or share (coming soon in GitLens) them with your team for faster onboarding and better collaboration.
Focus brings all of your GitHub pull requests and issues into a unified actionable view to help to you more easily juggle work in progress, pending work, reviews, and more. Quickly see if anything requires your attention while keeping you focused.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/focus-view.png" alt="Focus view" />
</figure>
## Visual File History ✨
Quickly see the evolution of a file, including when changes were made, how large they were, and who made them. Use it to quickly find when the most impactful changes were made to a file or who best to talk to about file changes and more.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/visual-file-history-illustrated.png" alt="Visual File History view" />
</figure>
## Worktrees ✨
Efficiently multitask by minimizing the context switching between branches, allowing you to easily work on different branches of a repository simultaneously.
Avoid interrupting your work in progress when needing to review a pull request. Simply create a new worktree and open it in a new VS Code window, all without impacting your other work.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/worktrees-illustrated.png" alt="Worktrees view" />
</figure>
## Interactive Rebase Editor
Easily visualize and configure interactive rebase operations with the intuitive and user-friendly Interactive Rebase Editor. Simply drag & drop to reorder commits and select which ones you want to edit, squash, or drop.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/rebase.gif" alt="Interactive Rebase Editor" />
</figure>
## Comprehensive Commands
Stop worrying about memorizing Git commands; GitLens provides a rich set of commands to help you do everything you need.
### Git Command Palette
A guided, step-by-step experience for quickly and safely executing Git commands.
<figure align="center">
<img src="https://raw.githubusercontent.com/gitkraken/vscode-gitlens/main/images/docs/git-command-palette.png" alt="Git Command Palette" />
</figure>
### Quick Access Commands
Use a series of new commands to:
- Explore the commit history of branches and files
- Quickly search for and navigate to (and action upon) commits
- Explore a file of a commit
- View and explore your stashes
- Visualize the current repository status
# Integrations
Context switching kills productivity. GitLens not only reveals buried knowledge within your repository, it also brings additional context from issues and pull requests providing you with a wealth of information and insights at your fingertips.
Simplify your workflow and quickly gain insights with automatic linking of issues and pull requests across multiple Git hosting services including GitHub, GitHub Enterprise ✨, GitLab, GitLab self-managed ✨, Gitea, Gerrit, Google Source, Bitbucket, Bitbucket Server, Azure DevOps, and custom servers.
All integration provide automatic linking, while rich integrations with GitHub & GitLab offer detailed hover information for autolinks, and correlations between pull requests, branches, and commits, as well as user avatars for added context.
## Define your own autolinks
Use autolinks to linkify external references, like Jira issues or Zendesk tickets, in commit messages.
# GitKraken Labs
Our incubator for experimentation and exploration with the community to gather early reactions and feedback. Below are some of our current experiments.
## 🧪AI Explain Commit
Use the Explain panel on the **Commit Details** view to leverage AI to help you understand the changes introduced by a commit.
## 🧪Automatically Generate Commit Message
Use the `Generate Commit Message` command from the Source Control view's context menu to automatically generate a commit message for your staged changes by leveraging AI.
# Ready for GitKraken Pro?
When you're ready to unlock the full potential of GitLens and enjoy all the benefits on your privately hosted repos, consider upgrading to GitKraken Pro. With GitKraken Pro, you'll gain access to ✨ features on privately hosted repos and ☁️ features based on the Pro plan.
To learn more about the pricing and the additional ✨ and ☁️ features offered with GitKraken Pro, visit the [GitLens Pricing page](https://www.gitkraken.com/gitlens/pricing). Upgrade to GitKraken Pro today and take your Git workflow to the next level!
# FAQ
## Is GitLens free to use?
Yes. All features are free to use on all repos, **except** for features,
- marked with a ✨ require a [trial or paid plan](https://www.gitkraken.com/gitlens/pricing) for use on privately hosted repos
- marked with a ☁️ require a GitKraken Account, with access level based on your [plan](https://www.gitkraken.com/gitlens/pricing), e.g. Free, Pro, etc
While GitLens offers a remarkable set of free features, a subset of features tailored for professional developers and teams, marked with a ✨, require a trial or paid plan for use on privately hosted repos &mdash; use on local or publicly hosted repos is free for everyone. Additionally some features marked with a ☁️, rely on GitKraken Dev Services which requires a GitKraken account and access is based on your plan, e.g. Free, Pro, etc.
Preview ✨ features instantly for free for 3 days without an account, or start a free GitKraken trial to get an additional 7 days and gain access to ☁️ features to experience the full power of GitLens.
## Are ✨ and ☁️ features free to use?
✨ features are free for use on local and publicly hosted repos, while a paid plan is required for use on privately hosted repos. ☁️ feature access is based on your plan including a Free plan.
## Where can I find pricing?
Visit the [GitLens Pricing page](https://www.gitkraken.com/gitlens/pricing) for detailed pricing information and feature matrix for plans.
# Support and Community
Support documentation can be found on the [GitLens Help Center](https://help.gitkraken.com/gitlens/gitlens-home/). If you need further assistance or have any questions, there are various support channels and community forums available for GitLens:
## Issue Reporting and Feature Requests
Found a bug? Have a feature request? Reach out on our [GitHub Issues page](https://github.com/gitkraken/vscode-gitlens/issues).
## Discussions
Join the GitLens community on [GitHub Discussions](https://github.com/gitkraken/vscode-gitlens/discussions) to connect with other users, share your experiences, and discuss topics related to GitLens.
## GitKraken Support
For any issues or inquiries related to GitLens, you can reach out to the GitKraken support team via the [official support page](https://support.gitkraken.com/). They will be happy to assist you with any problems you may encounter.
With GitKraken Pro, you gain access to priority email support from our customer success team, ensuring higher priority and faster response times. Custom onboarding and training are also available to help you and your team quickly get up and running with a GitKraken Pro plan.
# Contributing
GitLens is an open-source project that greatly benefits from the contributions and feedback from its community.
Your contributions, feedback, and engagement in the GitLens community are invaluable, and play a significant role in shaping the future of GitLens. Thank you for your support!
## Code Contributions
Want to contribute to GitLens? Follow the [CONTRIBUTING](https://github.com/gitkraken/vscode-gitlens/blob/main/CONTRIBUTING.md) docs to get started.
## Documentation Contributions
Contributions to the documentation are greatly appreciated. If you find any areas that can be improved or have suggestions for new documentation, you can submit them as pull requests to the [GitLens Docs](https://github.com/gitkraken/gitlens-docs) repository.
# Contributors
A big thanks to the people that have contributed to this project 🙏❤️:
- Zeeshan Adnan ([@zeeshanadnan](https://github.com/zeeshanadnan)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=zeeshanadnan)
- Alex ([@deadmeu](https://github.com/deadmeu)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=deadmeu)
- Abdulrahman (Abdu) Assabri ([@abdusabri](https://github.com/abdusabri)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=abdusabri)
- Grey Baker ([@greysteil](https://github.com/greysteil)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=greysteil)
- Loris Bettazza ([@Pustur](https://github.com/Pustur)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Pustur)
- Brian Bolte ([@bolte-17](https://github.com/bolte-17)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=bolte-17)
- Zach Boyle ([@zaboyle](https://github.com/zaboyle)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=zaboyle)
- Tony Brix ([@UziTech](https://github.com/UziTech)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=UziTech)
- Matt Buckley ([@Mattadore](https://github.com/Mattadore)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Mattadore)
- Lee Chang ([@MeltingMosaic](https://github.com/MeltingMosaic)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=MeltingMosaic)
- Amanda Cameron ([@AmandaCameron](https://github.com/AmandaCameron)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=AmandaCameron)
- Martin Campbell ([@martin-css](https://github.com/martin-css)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=martin-css)
- Brett Cannon ([@brettcannon](https://github.com/brettcannon)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=brettcannon)
- Barney Carroll ([@barneycarroll](https://github.com/barneycarroll)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=barneycarroll)
- Andrea Cigana ([@ciganandrea](https://github.com/ciganandrea)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ciganandrea)
- Ash Clarke ([@ashclarke](https://github.com/ashclarke)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ashclarke)
- Travis Collins ([@TravisTX](https://github.com/TravisTX)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=TravisTX)
- Matt Cooper ([@vtbassmatt](https://github.com/vtbassmatt)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=vtbassmatt)
- Skyler Dawson ([@foxwoods369](https://github.com/foxwoods369)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=foxwoods369)
- Andrii Dieiev ([@IllusionMH](https://github.com/IllusionMH)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=IllusionMH)
- egfx-notifications ([@egfx-notifications](https://github.com/egfx-notifications)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=egfx-notifications)
- Segev Finer ([@segevfiner](https://github.com/segevfiner)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=segevfiner)
- Cory Forsyth ([@bantic](https://github.com/bantic)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=bantic)
- John Gee ([@shadowspawn](https://github.com/shadowspawn)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=shadowspawn)
- Geoffrey ([@g3offrey](https://github.com/g3offrey)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=g3offrey)
- Omar Ghazi ([@omarfesal](https://github.com/omarfesal)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=omarfesal)
- Neil Ghosh ([@neilghosh](https://github.com/neilghosh)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=neilghosh)
- Guillaume Rozan ([@grozan](https://github.com/grozan)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=grozan)
- Guillem González Vela ([@guillemglez](https://github.com/guillemglez)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=guillemglez)
- Vladislav Guleaev ([@vguleaev](https://github.com/vguleaev)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=vguleaev)
- Dmitry Gurovich ([@yrtimiD](https://github.com/yrtimiD)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=yrtimiD)
- hahaaha ([@hahaaha](https://github.com/hahaaha)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=hahaaha)
- Victor Hallberg ([@mogelbrod](https://github.com/mogelbrod)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=mogelbrod)
- Ken Hom ([@kh0m](https://github.com/kh0m)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=kh0m)
- Yukai Huang ([@Yukaii](https://github.com/Yukaii)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Yukaii)
- Justin Hutchings ([@jhutchings1](https://github.com/jhutchings1)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=jhutchings1)
- Roy Ivy III ([@rivy](https://github.com/rivy)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=rivy)
- Helmut Januschka ([@hjanuschka](https://github.com/hjanuschka)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=hjanuschka)
- jogo- ([@jogo-](https://github.com/jogo-)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=jogo-)
- Nils K ([@septatrix](https://github.com/septatrix)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=septatrix)
- Chris Kaczor ([@ckaczor](https://github.com/ckaczor)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ckaczor)
- Aidos Kanapyanov ([@aidoskanapyanov](https://github.com/aidoskanapyanov)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=aidoskanapyanov)
- Allan Karlson ([@bees4ever](https://github.com/bees4ever)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=bees4ever)
- Nafiur Rahman Khadem ([@ShafinKhadem](https://github.com/ShafinKhadem)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ShafinKhadem)
- Mathew King ([@MathewKing](https://github.com/MathewKing)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=MathewKing)
- Lior Kletter ([@Git-Lior](https://github.com/Git-Lior)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Git-Lior)
- Chase Knowlden ([@ChaseKnowlden](https://github.com/ChaseKnowlden)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ChaseKnowlden)
- Andrei Korigodski ([@korigod](https://github.com/korigod)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=korigod)
- Kwok ([@mankwok](https://github.com/mankwok)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=mankwok)
- Marc Lasson ([@mlasson](https://github.com/mlasson)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=mlasson)
- John Letey ([@johnletey](https://github.com/johnletey)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=johnletey)
- Stanislav Lvovsky ([@slavik-lvovsky](https://github.com/slavik-lvovsky)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=slavik-lvovsky)
- Peng Lyu ([@rebornix](https://github.com/rebornix)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=rebornix)
- Cédric Malard ([@cmalard](https://github.com/cmalard)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=cmalard)
- Asif Kamran Malick ([@akmalick](https://github.com/akmalick)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=akmalick)
- Sam Martin ([@smartinio](https://github.com/smartinio)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=smartinio)
- mcy-kylin ([@mcy-kylin](https://github.com/mcy-kylin)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=mcy-kylin)
- Mark Molinaro ([@markjm](https://github.com/markjm)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=markjm)
- Ahmadou Waly Ndiaye ([@sir-kain](https://github.com/sir-kain)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=sir-kain)
- Nguyen Long Nhat ([@torn4dom4n](https://github.com/torn4dom4n)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=torn4dom4n)
- Dave Nicolson ([@dnicolson](https://github.com/dnicolson)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=dnicolson)
- Aurelio Ogliari ([@nobitagit](https://github.com/nobitagit)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=nobitagit)
- Raaj Patil ([@arrpee](https://github.com/arrpee)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=arrpee)
- Kevin Paxton ([kpaxton](https://github.com/kpaxton)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=kpaxton)
- Connor Peet ([@connor4312](https://github.com/connor4312)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=connor4312)
- Maxim Pekurin ([@pmaxim25](https://github.com/pmaxim25)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=pmaxim25)
- Leo Dan Peña ([@leo9-py](https://github.com/leo9-py)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=leo9-py)
- Aman Prakash ([@gitgoap](https://github.com/gitgoap)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=gitgoap)
- Arunprasad Rajkumar ([@arajkumar](https://github.com/arajkumar)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=arajkumar)
- David Rees ([@studgeek](https://github.com/studgeek)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=studgeek)
- Rickard ([@rickardp](https://github.com/rickardp)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=rickardp)
- Johannes Rieken ([@jrieken](https://github.com/jrieken)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=jrieken)
- Daniel Rodríguez ([@sadasant](https://github.com/sadasant)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=sadasant)
- Guillaume Rozan ([@rozangu1](https://github.com/rozangu1)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=rozangu1)
- ryenus ([@ryenus](https://github.com/ryenus)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ryenus)
- Felipe Santos ([@felipecrs](https://github.com/felipecrs)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=felipecrs)
- Andrew Savage ([@andrewsavage1](https://github.com/andrewsavage1)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=andrewsavage1)
- Zack Schuster ([@zackschuster](https://github.com/zackschuster)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=zackschuster)
- Matt Seddon ([@mattseddon](https://github.com/mattseddon)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=mattseddon)
- Ahmadali Shafiee ([@ahmadalli](https://github.com/ahmadalli)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ahmadalli)
- Shashank Shastri ([@Shashank-Shastri](https://github.com/Shashank-Shastri)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Shashank-Shastri)
- Skybbles ([@Luxray5474](https://github.com/Luxray5474)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Luxray5474)
- Brendon Smith ([@br3ndonland](https://github.com/br3ndonland)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=br3ndonland)
- Ross Smith II ([@rasa](https://github.com/rasa)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=rasa)
- Oleg Solomka ([@legomushroom](https://github.com/legomushroom)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=legomushroom)
- Miguel Solorio ([@misolori](https://github.com/misolori)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=misolori)
- SpaceEEC ([@SpaceEEC](https://github.com/SpaceEEC)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=SpaceEEC)
- stampyzfanz ([@stampyzfanz](https://github.com/stampyzfanz)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=stampyzfanz)
- sueka ([@sueka](https://github.com/sueka)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=sueka)
- Mike Surcouf ([@mikes-gh](https://github.com/mikes-gh)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=mikes-gh)
- Alexey Svetliakov ([@asvetliakov](https://github.com/asvetliakov)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=asvetliakov)
- Takashi Tamura ([@tamuratak](https://github.com/tamuratak)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=tamuratak)
- Andy Tang ([@thewindsofwinter](https://github.com/thewindsofwinter)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=thewindsofwinter)
- Dmitry Ulupov ([@dimaulupov](https://github.com/dimaulupov)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=dimaulupov)
- Alexey Vasyukov ([@notmedia](https://github.com/notmedia)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=notmedia)
- Ivan Volzhev ([@ivolzhevbt](https://github.com/ivolzhevbt)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=ivolzhevbt)
- x13machine ([@x13machine](https://github.com/x13machine)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=x13machine)
- Alwin Wang ([@alwinw](https://github.com/alwinw)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=alwinw)
- Ian Wilkinson ([@sgtwilko](https://github.com/sgtwilko)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=sgtwilko)
- Brian Williams ([@Brcrwilliams](https://github.com/Brcrwilliams)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Brcrwilliams)
- Adaex Yang ([@adaex](https://github.com/adaex)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=adaex)
- Yan Zhang ([@Eskibear](https://github.com/Eskibear)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=Eskibear)
- Zyck ([@qzyse2017](https://github.com/qzyse2017)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=qzyse2017)
- Yonatan Greenfeld ([@YonatanGreenfeld](https://github.com/YonatanGreenfeld)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=YonatanGreenfeld)
- WofWca ([@WofWca](https://github.com/WofWca)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=WofWca)
- 不见月 ([@nooooooom](https://github.com/nooooooom)) &mdash; [contributions](https://github.com/gitkraken/vscode-gitlens/commits?author=nooooooom)
Also special thanks to the people that have provided support, testing, brainstorming, etc:
- Brian Canzanella ([@bcanzanella](https://github.com/bcanzanella))
- Matt King ([@KattMingMing](https://github.com/KattMingMing))
And of course the awesome [vscode](https://github.com/Microsoft/vscode/graphs/contributors) team!
# License
This repository contains both OSS-licensed and non-OSS-licensed files.
All files in or under any directory named "plus" fall under LICENSE.plus.
The remaining files fall under the MIT license.

+ 0
- 0
README.pre.md View File


+ 1693
- 0
ThirdPartyNotices.txt
File diff suppressed because it is too large
View File


+ 208
- 0
esbuild.mjs View File

@ -0,0 +1,208 @@
import * as esbuild from 'esbuild';
import { sassPlugin } from 'esbuild-sass-plugin';
import * as fs from 'fs';
import * as path from 'path';
import { minify } from 'terser';
import { URL } from 'url';
const __dirname = new URL('.', import.meta.url).pathname.substring(1);
const args = process.argv.slice(2);
let index = args.indexOf('--mode');
const mode = (index >= 0 ? args[index + 1] : undefined) || 'none';
const watch = args.includes('--watch');
const check = !args.includes('--no-check');
/**
* @param { 'node' | 'webworker' } target
* @param { 'production' | 'development' | 'none' } mode
*/
async function buildExtension(target, mode) {
let plugins = [];
// let TypeCheckerPlugin;
// if (check) {
// ({ EsbuildPlugin: TypeCheckerPlugin } = require('vite-esbuild-typescript-checker'));
// plugins.push(
// TypeCheckerPlugin({
// checker: {
// async: false,
// eslint: {
// enabled: true,
// files: 'src/**/*.ts',
// options: {
// // cache: true,
// cacheLocation: path.join(
// __dirname,
// target === 'webworker' ? '.eslintcache.browser' : '.eslintcache',
// ),
// overrideConfigFile: path.join(
// __dirname,
// target === 'webworker' ? '.eslintrc.browser.json' : '.eslintrc.json',
// ),
// },
// },
// formatter: 'basic',
// typescript: {
// configFile: target === 'webworker' ? 'tsconfig.browser.json' : 'tsconfig.json',
// },
// },
// }),
// );
// }
const alias = {
'@env': path.resolve(__dirname, 'src', 'env', target === 'webworker' ? 'browser' : target),
// Stupid dependency that is used by `http[s]-proxy-agent`
debug: path.resolve(__dirname, 'patches', 'debug.js'),
// This dependency is very large, and isn't needed for our use-case
tr46: path.resolve(__dirname, 'patches', 'tr46.js'),
// This dependency is unnecessary for our use-case
'whatwg-url': path.resolve(__dirname, 'patches', 'whatwg-url.js'),
};
if (target === 'webworker') {
alias.path = 'path-browserify';
alias.os = 'os-browserify/browser';
}
const out = target === 'webworker' ? 'dist/browser' : 'dist';
const result = await esbuild.build({
bundle: true,
entryPoints: ['src/extension.ts'],
entryNames: '[dir]/gitlens',
alias: alias,
drop: ['debugger'],
external: ['vscode'],
format: 'esm',
keepNames: true,
legalComments: 'none',
logLevel: 'info',
mainFields: target === 'webworker' ? ['browser', 'module', 'main'] : ['module', 'main'],
metafile: true,
minify: mode === 'production',
outdir: out,
platform: target === 'webworker' ? 'browser' : target,
sourcemap: mode !== 'production',
// splitting: target !== 'webworker',
// chunkNames: 'feature-[name]-[hash]',
target: ['es2022', 'chrome102', 'node16.14.2'],
treeShaking: true,
tsconfig: target === 'webworker' ? 'tsconfig.browser.json' : 'tsconfig.json',
// watch: watch,
plugins: plugins,
});
if (!fs.existsSync(path.join('dist', 'meta'))) {
fs.mkdirSync(path.join('dist', 'meta'));
}
fs.writeFileSync(
path.join('dist', 'meta', `gitlens${target === 'webworker' ? '.browser' : ''}.json`),
JSON.stringify(result.metafile),
);
if (mode === 'production') {
const file = path.join(out, 'gitlens.js');
console.log(`Minifying ${file}...`);
const code = fs.readFileSync(file, 'utf8');
const result = await minify(code, {
compress: {
drop_debugger: true,
ecma: 2020,
module: true,
},
ecma: 2020,
format: {
comments: false,
ecma: 2020,
},
// Keep the class names otherwise @log won't provide a useful name
keep_classnames: true,
module: true,
});
fs.writeFileSync(file, result.code);
}
}
/**
* @param { 'production' | 'development' | 'none' } mode
*/
async function buildGraphWebview(mode) {
let plugins = [sassPlugin()];
const out = 'dist/webviews';
const result = await esbuild.build({
bundle: true,
entryPoints: ['src/webviews/apps/plus/graph/graph.tsx'],
entryNames: '[dir]/graph',
alias: {
'@env': path.resolve(__dirname, 'src', 'env', 'browser'),
tslib: path.resolve(__dirname, 'node_modules/tslib/tslib.es6.js'),
'@microsoft/fast-foundation': path.resolve(
__dirname,
'node_modules/@microsoft/fast-foundation/dist/esm/index.js',
),
'@microsoft/fast-react-wrapper': path.resolve(
__dirname,
'node_modules/@microsoft/fast-react-wrapper/dist/esm/index.js',
),
},
drop: ['debugger'],
external: ['vscode'],
format: 'esm',
legalComments: 'none',
logLevel: 'info',
mainFields: ['browser', 'module', 'main'],
metafile: true,
minify: mode === 'production' ? true : false,
outdir: out,
platform: 'browser',
sourcemap: true,
target: ['es2022', 'chrome102'],
treeShaking: true,
tsconfig: 'src/webviews/apps/tsconfig.json',
// watch: watch,
plugins: plugins,
});
fs.writeFileSync(path.join('dist', 'meta', 'graph.json'), JSON.stringify(result.metafile));
if (mode === 'production') {
const file = path.join(out, 'graph.js');
console.log(`Minifying ${file}...`);
const code = fs.readFileSync(file, 'utf8');
const result = await minify(code, {
compress: {
drop_debugger: true,
ecma: 2020,
module: true,
},
ecma: 2020,
format: {
comments: false,
ecma: 2020,
},
module: true,
});
fs.writeFileSync(file, result.code);
}
}
try {
await Promise.allSettled([
buildExtension('node', mode),
buildExtension('webworker', mode),
buildGraphWebview(mode),
]);
} catch (ex) {
console.error(ex);
process.exit(1);
}

BIN
icons.fig View File


+ 4
- 0
images/dark/icon-activity.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M10.5 7C9.67157 7 9 7.67157 9 8.5C9 9.32843 9.67157 10 10.5 10C11.3284 10 12 9.32843 12 8.5C12 7.67157 11.3284 7 10.5 7ZM10 0L10 6.05001C8.85888 6.28164 8 7.29052 8 8.5C8 9.70948 8.85888 10.7184 10 10.95V16H11V10.95C12.1411 10.7184 13 9.70948 13 8.5C13 7.29052 12.1411 6.28164 11 6.05001L11 0H10Z" clip-rule="evenodd"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M5.5 2C4.67157 2 4 2.67157 4 3.5C4 4.32843 4.67157 5 5.5 5C6.32843 5 7 4.32843 7 3.5C7 2.67157 6.32843 2 5.5 2ZM5 0V1.05001C3.85888 1.28164 3 2.29052 3 3.5C3 4.70948 3.85888 5.71836 5 5.94999L5 10.05C3.85888 10.2816 3 11.2905 3 12.5C3 13.7095 3.85888 14.7184 5 14.95V16H6V14.95C7.14112 14.7184 8 13.7095 8 12.5C8 11.2905 7.14112 10.2816 6 10.05L6 5.94999C7.14112 5.71836 8 4.70948 8 3.5C8 2.29052 7.14112 1.28164 6 1.05001V0H5ZM5.5 11C4.67157 11 4 11.6716 4 12.5C4 13.3284 4.67157 14 5.5 14C6.32843 14 7 13.3284 7 12.5C7 11.6716 6.32843 11 5.5 11Z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-azdo.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M11.853 4.313l.023.018v7.743l-9.419-1.432 3.947 4.719v-1.898l5.406 1.898 3.53-3V3.67l-3.487.644z"/>
<path fill="#C5C5C5" d="M2.456 6.05l9.397-1.737L7.353 1v1.544l-4.897 1.94L1 6.383v4.037l1.457.223-.001-.002V6.05z"/>
</svg>

+ 11
- 0
images/dark/icon-bitbucket.svg View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M1.41 1.66a.45.45 0 0 0-.45.53l1.92 11.63a.61.61 0 0 0 .6.51h9.2a.45.45 0 0 0 .44-.38L15.04 2.2a.451.451 0 0 0-.45-.53H1.41v-.01zm8.07 8.41H6.55l-.8-4.15h4.44l-.7 4.15h-.01z"/>
<path fill="url(#paint0_linear)" d="M14.43 5.92h-4.24l-.7 4.15H6.54L3.08 14.2a.61.61 0 0 0 .4.15h9.2a.45.45 0 0 0 .44-.38l1.3-8.04.01-.01z"/>
<defs>
<linearGradient id="paint0_linear" x1="3.08" x2="3.08" y1="5.92" y2="14.35" gradientUnits="userSpaceOnUse">
<stop stop-color="#424242" stop-opacity=".7"/>
<stop offset=".5" stop-color="#424242" stop-opacity="0"/>
<stop offset="1" stop-color="#424242" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

+ 4
- 0
images/dark/icon-branch-green.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#0F5" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M12 10.25a2.75 2.75 0 1 1 0 5.5 2.75 2.75 0 0 1 0-5.5z"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M6 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM5 5.95a2.5 2.5 0 1 0-1 0v4.1a2.5 2.5 0 1 0 1.165.04c.168-.38.383-.622.61-.78.327-.227.738-.32 1.214-.31H7c.387 0 .76.03 1.124.059l.026.002c.343.027.694.055 1.003.046.313-.01.661-.06.954-.248.29-.185.466-.466.544-.812a.756.756 0 0 1 .046-.055 2.5 2.5 0 1 0-1.03-.134c-.028.108-.07.14-.1.16-.063.04-.191.08-.446.089a8.783 8.783 0 0 1-.917-.045A14.886 14.886 0 0 0 7.005 8c-.61-.013-1.249.105-1.8.488-.07.05-.14.102-.205.159V5.95zm7-.45a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-9 7a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-branch-red.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#F05" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M12 10.25a2.75 2.75 0 1 1 0 5.5 2.75 2.75 0 0 1 0-5.5z"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M6 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM5 5.95a2.5 2.5 0 1 0-1 0v4.1a2.5 2.5 0 1 0 1.165.04c.168-.38.383-.622.61-.78.327-.227.738-.32 1.214-.31H7c.387 0 .76.03 1.124.059l.026.002c.343.027.694.055 1.003.046.313-.01.661-.06.954-.248.29-.185.466-.466.544-.812a.756.756 0 0 1 .046-.055 2.5 2.5 0 1 0-1.03-.134c-.028.108-.07.14-.1.16-.063.04-.191.08-.446.089a8.783 8.783 0 0 1-.917-.045A14.886 14.886 0 0 0 7.005 8c-.61-.013-1.249.105-1.8.488-.07.05-.14.102-.205.159V5.95zm7-.45a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-9 7a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-branch-yellow.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#FF5" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M12 10.25a2.75 2.75 0 1 1 0 5.5 2.75 2.75 0 0 1 0-5.5z"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M6 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM5 5.95a2.5 2.5 0 1 0-1 0v4.1a2.5 2.5 0 1 0 1.165.04c.168-.38.383-.622.61-.78.327-.227.738-.32 1.214-.31H7c.387 0 .76.03 1.124.059l.026.002c.343.027.694.055 1.003.046.313-.01.661-.06.954-.248.29-.185.466-.466.544-.812a.756.756 0 0 1 .046-.055 2.5 2.5 0 1 0-1.03-.134c-.028.108-.07.14-.1.16-.063.04-.191.08-.446.089a8.783 8.783 0 0 1-.917-.045A14.886 14.886 0 0 0 7.005 8c-.61-.013-1.249.105-1.8.488-.07.05-.14.102-.205.159V5.95zm7-.45a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-9 7a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-branch.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M6 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zM5 5.95a2.5 2.5 0 1 0-1 0v4.1a2.5 2.5 0 1 0 1.165.04c.168-.38.383-.622.61-.78.327-.227.738-.32 1.214-.31H7c.387 0 .76.03 1.124.059l.026.002c.343.027.694.055 1.003.046.313-.01.661-.06.954-.248.29-.185.466-.466.544-.812a.756.756 0 0 1 .046-.055 2.5 2.5 0 1 0-1.03-.134c-.028.108-.07.14-.1.16-.063.04-.191.08-.446.089a8.783 8.783 0 0 1-.917-.045A14.886 14.886 0 0 0 7.005 8c-.61-.013-1.249.105-1.8.488-.07.05-.14.102-.205.159V5.95zm7-.45a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-9 7a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-check.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M14.431 3.323l-8.47 10-.79-.036-3.35-4.77.818-.574 2.978 4.24 8.052-9.506.762.646z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-checkout.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M6 4.507C4.538 4.61 3.5 5.752 3.5 7c0 1.248 1.038 2.39 2.5 2.493V10h3c-.743.622-1.718 1-2.787 1C3.886 11 2 9.21 2 7c0-2.141 1.772-3.89 4-3.995v1.502z"/>
<path stroke="#C5C5C5" stroke-width="1.5" d="M6 10.25h8M13.47 10.03l-2.475-2.475M13.47 10.47l-2.475 2.475"/>
</svg>

+ 4
- 0
images/dark/icon-commit-horizontal.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path stroke="#C5C5C5" stroke-width="1.5" stroke-linejoin="bevel" d="M8 11.5a4 4 0 110-8 4 4 0 010 8z" />
<path stroke="#C5C5C5" stroke-width="1.25" stroke-linejoin="bevel" d="M0 7.5h4m8 0h4-4z" />
</svg>

+ 3
- 0
images/dark/icon-compare-ref-working.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M9.885 1.694L8.572 3h2.774a1.671 1.671 0 011.671 1.672h-.5.5v6.368h-.07a2.5 2.5 0 11-.895 0h-.035V4.672A.67.67 0 0011.346 4H8.539l1.3 1.343-.72.696-2.118-2.19.006-.702L9.18.986l.706.708zM11 13.5a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0zm-5-10a2.5 2.5 0 01-2 2.45v6.357a.671.671 0 00.671.671h2.81l-1.3-1.343.72-.696 2.118 2.191-.006.702-2.172 2.16-.706-.709 1.313-1.305H4.671A1.67 1.67 0 013 12.307V5.95A2.5 2.5 0 116 3.5z" />
</svg>

+ 3
- 0
images/dark/icon-diff.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M7 7h1.5v1H7v1.5H6V8H4.5V7H6V5.5h1V7zm-2.5 5h4v-1h-4v1zm4-9L12 6.5V14l-1 1H3l-1-1V4l1-1h5.5zM11 7L8 4H3v10h8V7zM9.5 1H6L5 2h4l4 4v7l1-1V5.5L9.5 1z"/>
</svg>

+ 9
- 0
images/dark/icon-gerrit.svg View File

@ -0,0 +1,9 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="16" height="16" fill="black"/>
<path d="M11.0769 0H1.23077C0.551034 0 0 0.551034 0 1.23077V11.0769C0 11.7567 0.551034 12.3077 1.23077 12.3077H11.0769C11.7567 12.3077 12.3077 11.7567 12.3077 11.0769V1.23077C12.3077 0.551034 11.7567 0 11.0769 0Z" fill="#FFAAAA"/>
<path d="M14.7692 3.69231H4.92308C4.24334 3.69231 3.69231 4.24334 3.69231 4.92308V14.7692C3.69231 15.449 4.24334 16 4.92308 16H14.7692C15.449 16 16 15.449 16 14.7692V4.92308C16 4.24334 15.449 3.69231 14.7692 3.69231Z" fill="#AAFFAA"/>
<path d="M5.53846 6.76923H9.23077V8H5.53846V6.76923Z" fill="#FF0000"/>
<path d="M10.4615 6.76923H14.1538V8H10.4615V6.76923Z" fill="#FF0000"/>
<path d="M5.53846 11.0769H6.76923V9.84615H8V11.0769H9.23077V12.3077H8V13.5385H6.76923V12.3077H5.53846V11.0769Z" fill="#008000"/>
<path d="M10.4615 11.0769H11.6923V9.84615H12.9231V11.0769H14.1538V12.3077H12.9231V13.5385H11.6923V12.3077H10.4615V11.0769Z" fill="#008000"/>
</svg>

+ 3
- 0
images/dark/icon-git-orange.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#F05133" fill-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM7.5 13C8.32843 13 9 12.3284 9 11.5C9 10.8469 8.5826 10.2913 8 10.0854V5.91465C8.03995 5.90053 8.07912 5.88476 8.11744 5.86744L9.57434 7.32434C9.52623 7.4572 9.5 7.60054 9.5 7.75C9.5 8.44036 10.0596 9 10.75 9C11.4404 9 12 8.44036 12 7.75C12 7.05964 11.4404 6.5 10.75 6.5C10.5771 6.5 10.4125 6.53509 10.2627 6.59853L8.83967 5.17546C8.94223 4.97246 9 4.74298 9 4.5C9 3.67157 8.32843 3 7.5 3C6.67157 3 6 3.67157 6 4.5C6 5.15311 6.4174 5.70873 7 5.91465V10.0854C6.4174 10.2913 6 10.8469 6 11.5C6 12.3284 6.67157 13 7.5 13Z" clip-rule="evenodd"/>
</svg>

+ 5
- 0
images/dark/icon-git-progress.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM7.5 13C8.32843 13 9 12.3284 9 11.5C9 10.8469 8.5826 10.2913 8 10.0854V5.91465C8.03995 5.90053 8.07912 5.88476 8.11744 5.86744L9.57434 7.32434C9.52623 7.4572 9.5 7.60054 9.5 7.75C9.5 8.44036 10.0596 9 10.75 9C11.4404 9 12 8.44036 12 7.75C12 7.05964 11.4404 6.5 10.75 6.5C10.5771 6.5 10.4125 6.53509 10.2627 6.59853L8.83967 5.17546C8.94223 4.97246 9 4.74298 9 4.5C9 3.67157 8.32843 3 7.5 3C6.67157 3 6 3.67157 6 4.5C6 5.15311 6.4174 5.70873 7 5.91465V10.0854C6.4174 10.2913 6 10.8469 6 11.5C6 12.3284 6.67157 13 7.5 13Z" clip-rule="evenodd">
<animate attributeName="fill" dur="0.8s" repeatCount="indefinite" values="#b27b70;#F05133;#b27b70"/>
</path>
</svg>

+ 8
- 0
images/dark/icon-git.svg View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<circle cx="8" cy="8" r="6.5" stroke="#C5C5C5"/>
<circle cx="7.5" cy="11.5" r="1.5" fill="#C5C5C5"/>
<line x1="7.5" y1="11" x2="7.5" y2="5" stroke="#C5C5C5"/>
<circle cx="10.75" cy="7.75" r="1.25" fill="#C5C5C5"/>
<line x1="7.5" y1="4.5" x2="10.5" y2="7.5" stroke="#C5C5C5"/>
<circle cx="7.5" cy="4.5" r="1.5" fill="#C5C5C5"/>
</svg>

+ 4
- 0
images/dark/icon-gitea.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#fff" fill-opacity=".1" d="M9.69 11.282L6.866 9.923a.565.565 0 01-.263-.752L7.96 6.344a.565.565 0 01.753-.262l.604.29-.003-2.433.372-.002.002 2.608s1.279.539 1.851.893c.083.051.227.151.287.32a.566.566 0 01-.022.43l-1.358 2.827a.567.567 0 01-.755.267z" />
<path fill="#C5C5C5" d="M8.152 8.963a.402.402 0 00-.385.308.401.401 0 00.202.445.4.4 0 00.506-.12.402.402 0 00-.04-.514l.534-1.094a.397.397 0 00.138-.011c.092-.02.158-.08.158-.08a5.483 5.483 0 01.593.298.442.442 0 01.167.165c.042.122-.043.332-.043.332-.05.169-.41.904-.41.904a.404.404 0 00-.394.278.398.398 0 10.675-.147c.043-.082.083-.164.125-.251.111-.232.3-.677.3-.677.02-.038.128-.23.06-.475-.055-.254-.28-.372-.28-.372a5.225 5.225 0 00-.65-.338s0-.091-.025-.158a.401.401 0 00-.086-.14c.104-.217.209-.43.314-.646l-.272-.136-.323.657a.4.4 0 00-.316.65l-.548 1.122zm6.59-5.128c-.092-.092-.214-.09-.214-.09s-2.61.147-3.962.179c-.296.006-.59.013-.882.015v2.61l-.37-.176-.002-2.432a49.87 49.87 0 01-1.986-.049s-3.15-.158-3.492-.189c-.219-.013-.502-.047-.869.034-.194.04-.746.164-1.198.599-1.002.893-.746 2.314-.715 2.527.038.26.154.985.706 1.615 1.02 1.25 3.216 1.22 3.216 1.22s.27.644.681 1.236c.557.738 1.13 1.312 1.686 1.381l4.207-.002s.267.002.63-.23c.312-.189.59-.52.59-.52s.288-.308.689-1.01c.122-.215.225-.425.314-.623 0 0 1.229-2.608 1.229-5.147-.024-.768-.214-.904-.258-.948zM3.67 8.38c-.577-.19-.822-.416-.822-.416s-.425-.299-.639-.887c-.367-.984-.031-1.586-.031-1.586s.187-.5.857-.668c.308-.082.69-.069.69-.069s.159 1.323.35 2.098c.16.65.553 1.73.553 1.73s-.582-.068-.958-.202zm6.688 2.396s-.136.323-.437.343c-.129.01-.23-.026-.23-.026l-.117-.047L7.06 9.82s-.243-.127-.286-.348c-.049-.18.06-.403.06-.403l1.21-2.492s.107-.216.272-.29a.497.497 0 01.1-.033c.18-.046.4.063.4.063l2.466 1.196s.28.127.34.36a.612.612 0 01-.04.384c-.14.342-1.224 2.518-1.224 2.518z" />
</svg>

+ 1
- 0
images/dark/icon-github.svg View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16"><path fill="#C5C5C5" d="M7.938 1a6.936 6.936 0 0 0-2.194 13.519c.347.06.477-.147.477-.33 0-.164-.009-.71-.009-1.292-1.743.321-2.194-.424-2.332-.815-.078-.2-.417-.815-.712-.98-.242-.13-.59-.45-.008-.46.546-.008.936.504 1.066.712.625 1.05 1.622.754 2.021.572.06-.45.243-.754.442-.928-1.543-.173-3.156-.771-3.156-3.425a2.7 2.7 0 0 1 .71-1.865c-.069-.173-.311-.884.07-1.838 0 0 .581-.182 1.908.711a6.438 6.438 0 0 1 1.734-.234c.59 0 1.18.078 1.735.234 1.327-.902 1.908-.711 1.908-.711.381.954.138 1.665.069 1.838.442.486.711 1.102.711 1.865 0 2.662-1.622 3.252-3.165 3.425.251.217.468.633.468 1.284 0 .928-.009 1.673-.009 1.908 0 .182.13.398.477.33a6.949 6.949 0 0 0 4.2-9.238A6.935 6.935 0 0 0 7.937 1z"/></svg>

+ 5
- 0
images/dark/icon-gitlab.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#9E9E9E" fill-rule="evenodd" d="M8.153 14.758l-.005.007h.01l.007-.023 6.313-8.438h-3.69l-2.623 8.438-.01.013-2.647-8.45h-3.68l6.325 8.453z" clip-rule="evenodd"/>
<path fill="#636363" fill-rule="evenodd" d="M1.028 8.874l.8-2.57 6.325 8.454 6.325-8.453.8 2.57a.601.601 0 0 1-.001.354.57.57 0 0 1-.2.286L8.155 14.76l.004.005-.005-.004-.005.004.003-.005-6.923-5.245a.569.569 0 0 1-.2-.286.6.6 0 0 1 0-.354z" clip-rule="evenodd"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M1.828 6.305h3.69l2.64 8.46 2.63-8.46h3.69l-1.59-5.1a.28.28 0 0 0-.099-.137.264.264 0 0 0-.313 0 .28.28 0 0 0-.098.137l-1.6 5.1h-5.25l-1.6-5.1a.28.28 0 0 0-.099-.137.263.263 0 0 0-.313 0 .28.28 0 0 0-.098.137l-1.59 5.1z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-match-all-selected.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#fff" fill-opacity=".1" stroke="#C5C5C5" stroke-width=".5" d="M.25.25h15.5v15.5H.25z"/>
<path fill="#C5C5C5" d="M5.811 4.914a1.748 1.748 0 0 0 .186.789c.065.128.148.26.248.395.1.131.22.27.36.418.227-.14.424-.27.59-.394.165-.124.302-.25.41-.377a1.248 1.248 0 0 0 .324-.855 1.01 1.01 0 0 0-.075-.395.909.909 0 0 0-.532-.52 1.143 1.143 0 0 0-.434-.078c-.332 0-.594.09-.787.27-.193.175-.29.424-.29.747zm.782 6.123c.223 0 .43-.022.619-.066a2.676 2.676 0 0 0 .978-.472c.139-.108.27-.223.393-.347l-2.24-2.434c-.2.132-.377.261-.532.389a2.244 2.244 0 0 0-.393.4 1.635 1.635 0 0 0-.237.473 1.912 1.912 0 0 0-.081.586c0 .215.032.415.098.598.07.18.168.335.295.467.127.127.284.227.469.299.185.071.395.107.63.107zM4 9.602c0-.311.039-.588.116-.831a2.27 2.27 0 0 1 .335-.664c.15-.2.332-.385.544-.556a7.35 7.35 0 0 1 .735-.508 13.39 13.39 0 0 1-.353-.443 3.563 3.563 0 0 1-.306-.49 3.282 3.282 0 0 1-.209-.557 2.438 2.438 0 0 1-.08-.64c0-.298.047-.565.144-.8.096-.24.235-.441.417-.605.18-.167.405-.293.67-.376.267-.088.57-.132.91-.132.32 0 .605.044.856.132a1.653 1.653 0 0 1 1.047.98c.093.236.14.503.14.802 0 .255-.049.492-.145.711a2.456 2.456 0 0 1-.388.604c-.162.184-.35.355-.561.515a9.266 9.266 0 0 1-.66.448l2.037 2.225a3.257 3.257 0 0 0 .503-.736c.066-.135.124-.281.174-.436.054-.156.1-.327.139-.515h1.065a5.77 5.77 0 0 1-.209.73 4.48 4.48 0 0 1-.272.622c-.1.195-.214.378-.341.55-.124.167-.26.333-.411.496L11.5 11.88h-1.302l-.972-1.028a7.43 7.43 0 0 1-.562.484c-.185.14-.382.26-.59.359A3.578 3.578 0 0 1 6.593 12a3.58 3.58 0 0 1-1.094-.155 2.271 2.271 0 0 1-.816-.467 2.11 2.11 0 0 1-.51-.753A2.817 2.817 0 0 1 4 9.602z"/>
</svg>

+ 3
- 0
images/dark/icon-match-all.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M5.811 4.914a1.748 1.748 0 0 0 .186.789c.065.128.148.26.248.395.1.131.22.27.36.418.227-.14.424-.27.59-.394.165-.124.302-.25.41-.377a1.248 1.248 0 0 0 .324-.855 1.01 1.01 0 0 0-.075-.395.909.909 0 0 0-.532-.52 1.143 1.143 0 0 0-.434-.078c-.332 0-.594.09-.787.27-.193.175-.29.424-.29.747zm.782 6.123c.223 0 .43-.022.619-.066a2.676 2.676 0 0 0 .978-.472c.139-.108.27-.223.393-.347l-2.24-2.434c-.2.132-.377.261-.532.389a2.244 2.244 0 0 0-.393.4 1.635 1.635 0 0 0-.237.473 1.912 1.912 0 0 0-.081.586c0 .215.032.415.098.598.07.18.168.335.295.467.127.127.284.227.469.299.185.071.395.107.63.107zM4 9.602c0-.311.039-.588.116-.831a2.27 2.27 0 0 1 .335-.664c.15-.2.332-.385.544-.556a7.35 7.35 0 0 1 .735-.508 13.39 13.39 0 0 1-.353-.443 3.563 3.563 0 0 1-.306-.49 3.282 3.282 0 0 1-.209-.557 2.438 2.438 0 0 1-.08-.64c0-.298.047-.565.144-.8.096-.24.235-.441.417-.605.18-.167.405-.293.67-.376.267-.088.57-.132.91-.132.32 0 .605.044.856.132a1.653 1.653 0 0 1 1.047.98c.093.236.14.503.14.802 0 .255-.049.492-.145.711a2.456 2.456 0 0 1-.388.604c-.162.184-.35.355-.561.515a9.266 9.266 0 0 1-.66.448l2.037 2.225a3.257 3.257 0 0 0 .503-.736c.066-.135.124-.281.174-.436.054-.156.1-.327.139-.515h1.065a5.77 5.77 0 0 1-.209.73 4.48 4.48 0 0 1-.272.622c-.1.195-.214.378-.341.55-.124.167-.26.333-.411.496L11.5 11.88h-1.302l-.972-1.028a7.43 7.43 0 0 1-.562.484c-.185.14-.382.26-.59.359A3.578 3.578 0 0 1 6.593 12a3.58 3.58 0 0 1-1.094-.155 2.271 2.271 0 0 1-.816-.467 2.11 2.11 0 0 1-.51-.753A2.817 2.817 0 0 1 4 9.602z"/>
</svg>

+ 4
- 0
images/dark/icon-match-case-selected.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#fff" fill-opacity=".1" stroke="#C5C5C5" stroke-width=".5" d="M.25.25h15.5v15.5H.25z"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M7.328 9.052l.864 2.35H9.25L6.108 3H5.12L2 11.402h1.062l.812-2.35h3.454zM5.695 4.453l.043.135 1.278 3.574h-2.83l1.268-3.574.043-.135.036-.156.031-.152.02-.126h.023l.023.126.028.152.037.156zm7.335 6.011v.936h.96V7.498c0-.719-.18-1.272-.539-1.661-.359-.389-.889-.583-1.588-.583-.199 0-.401.019-.606.056a4.875 4.875 0 0 0-1.078.326 2.081 2.081 0 0 0-.343.188v.984c.266-.23.566-.411.904-.54a2.927 2.927 0 0 1 1.052-.193c.188 0 .358.028.513.085a.98.98 0 0 1 .396.267c.109.121.193.279.252.472.059.193.088.427.088.7l-1.811.252c-.344.047-.64.126-.888.237a1.947 1.947 0 0 0-.615.419 1.6 1.6 0 0 0-.36.58 2.134 2.134 0 0 0-.117.721c0 .246.042.475.124.688.082.213.203.397.363.551.16.154.36.276.598.366.238.09.513.135.826.135.402 0 .76-.092 1.075-.278.315-.186.572-.454.771-.806h.023zm-2.128-1.743c.176-.064.401-.114.674-.149l1.465-.205v.609c0 .246-.041.475-.123.688a1.727 1.727 0 0 1-.343.557 1.573 1.573 0 0 1-.524.372 1.63 1.63 0 0 1-.668.135c-.187 0-.353-.025-.495-.076a1.03 1.03 0 0 1-.357-.211.896.896 0 0 1-.22-.316 1.005 1.005 0 0 1-.076-.393 1.6 1.6 0 0 1 .055-.44.739.739 0 0 1 .202-.334 1.16 1.16 0 0 1 .41-.237z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-match-case.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M7.328 9.052l.864 2.35H9.25L6.108 3H5.12L2 11.402h1.062l.812-2.35h3.454zM5.695 4.453l.043.135 1.278 3.574h-2.83l1.268-3.574.043-.135.036-.156.031-.152.02-.126h.023l.023.126.028.152.037.156zm7.335 6.011v.936h.96V7.498c0-.719-.18-1.272-.539-1.661-.359-.389-.889-.583-1.588-.583-.199 0-.401.019-.606.056a4.875 4.875 0 0 0-1.078.326 2.081 2.081 0 0 0-.343.188v.984c.266-.23.566-.411.904-.54a2.927 2.927 0 0 1 1.052-.193c.188 0 .358.028.513.085a.98.98 0 0 1 .396.267c.109.121.193.279.252.472.059.193.088.427.088.7l-1.811.252c-.344.047-.64.126-.888.237a1.947 1.947 0 0 0-.615.419 1.6 1.6 0 0 0-.36.58 2.134 2.134 0 0 0-.117.721c0 .246.042.475.124.688.082.213.203.397.363.551.16.154.36.276.598.366.238.09.513.135.826.135.402 0 .76-.092 1.075-.278.315-.186.572-.454.771-.806h.023zm-2.128-1.743c.176-.064.401-.114.674-.149l1.465-.205v.609c0 .246-.041.475-.123.688a1.727 1.727 0 0 1-.343.557 1.573 1.573 0 0 1-.524.372 1.63 1.63 0 0 1-.668.135c-.187 0-.353-.025-.495-.076a1.03 1.03 0 0 1-.357-.211.896.896 0 0 1-.22-.316 1.005 1.005 0 0 1-.076-.393 1.6 1.6 0 0 1 .055-.44.739.739 0 0 1 .202-.334 1.16 1.16 0 0 1 .41-.237z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-match-regex-selected.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#fff" fill-opacity=".1" stroke="#C5C5C5" stroke-width=".5" d="M.25.25h15.5v15.5H.25z"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M10.012 2h.976v3.113l2.56-1.557.486.885L11.47 6l2.564 1.559-.485.885-2.561-1.557V10h-.976V6.887l-2.56 1.557-.486-.885L9.53 6 6.966 4.441l.485-.885 2.561 1.557V2zM2 10h4v4H2v-4z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-match-regex.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M10.012 2h.976v3.113l2.56-1.557.486.885L11.47 6l2.564 1.559-.485.885-2.561-1.557V10h-.976V6.887l-2.56 1.557-.486-.885L9.53 6 6.966 4.441l.485-.885 2.561 1.557V2zM2 10h4v4H2v-4z" clip-rule="evenodd"/>
</svg>

+ 5
- 0
images/dark/icon-next-commit.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<circle stroke="#C5C5C5" stroke-width="1.5" stroke-linejoin="bevel" cx="6.5" cy="7.5" r="4"/>
<path stroke="#C5C5C5" stroke-width="1.25" stroke-linejoin="bevel" d="M2.5 7.5H0"/>
<path fill="#C5C5C5" d="M13.5 10.35l2.5-2.5v-.7l-2.5-2.5-.71.7 1.515 1.529H10V8.12h4.305L12.78 9.65l.72.7z"/>
</svg>

+ 3
- 0
images/dark/icon-no-check.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M14.431 3.323l-3.158 3.73c-.687.1-1.328.339-1.894.688l4.29-5.064.762.646zM7 12v.096l-1.038 1.227-.791-.036-3.35-4.77.818-.574 2.978 4.24 1.75-2.066A4.986 4.986 0 0 0 7 12zm5 3c.648 0 1.248-.205 1.738-.555l-4.183-4.183A3 3 0 0 0 12 15zm-1.738-5.445l4.183 4.183a3 3 0 0 0-4.184-4.184zM12 16a4 4 0 1 0 0-8 4 4 0 0 0 0 8z" clip-rule="evenodd"/>
</svg>

+ 4
- 0
images/dark/icon-open-revision.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M0 2l1-1h6.2l.3.1 3.4 3.5.1.4v2.166L9.917 6.083 9.5 6.5V6H6V2.5H1.5v11H8L9.5 15H1l-1-1V2zm10.334 13h.166l.5-.5v-.166l-.666.666zM7 2.5L9.5 5H7V2.5z"/>
<path fill="#C5C5C5" fill-rule="evenodd" d="M10.058 8.165l.088-.088.089.088.707.707.088.089-.088.088-1.08 1.08h2.699a2.625 2.625 0 110 5.25h-.625v-1.25h.625a1.375 1.375 0 000-2.75H9.862l1.08 1.08.088.087-.088.089-.707.707-.089.088-.088-.088-2.146-2.147-.037-.036v-.811l.037-.036 2.146-2.147z"/>
</svg>

+ 6
- 0
images/dark/icon-prev-commit-menu.svg View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M6 14.5a1 1 0 11-2 0 1 1 0 012 0zM10 14.5a1 1 0 11-2 0 1 1 0 012 0zM14 14.5a1 1 0 11-2 0 1 1 0 012 0z"/>
<circle stroke="#C5C5C5" stroke-width="1.5" stroke-linejoin="bevel" r="4" transform="matrix(-1 0 0 1 9.5 7.5)"/>
<path stroke="#C5C5C5" stroke-width="1.25" stroke-linejoin="bevel" d="M13.5 7.5H16"/>
<path fill="#C5C5C5" d="M2.5 10.35L0 7.85v-.7l2.5-2.5.71.7-1.515 1.529H6V8.12H1.695L3.22 9.65l-.72.7z"/>
</svg>

+ 5
- 0
images/dark/icon-prev-commit.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<circle stroke="#C5C5C5" stroke-width="1.5" stroke-linejoin="bevel" r="4" transform="matrix(-1 0 0 1 9.5 7.5)"/>
<path stroke="#C5C5C5" stroke-width="1.25" stroke-linejoin="bevel" d="M13.5 7.5H16"/>
<path fill="#C5C5C5" d="M2.5 10.35L0 7.85v-.7l2.5-2.5.71.7-1.515 1.529H6V8.12H1.695L3.22 9.65l-.72.7z"/>
</svg>

+ 4
- 0
images/dark/icon-push-force.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M13.854 6.293l-5-5h-.708l-5 5L3.854 7 8 2.854V15h1V2.854L13.146 7l.707-.707z" clip-rule="evenodd"/>
<path stroke="#C5C5C5" d="M6.572 7.823c-3.02 2.487.059 4.536-2.963 6.89M10.428 7.823c3.02 2.487-.059 4.536 2.963 6.89"/>
</svg>

+ 5
- 0
images/dark/icon-repo-blue.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M13.5 4h.501v1.003h-.2a5.5 5.5 0 0 1 1.2.755V3.5l-.5-.5H13.5v1zm-4 0V3H7.713l-.852-.854L6.507 2H1.511l-.5.5v3.996L1 6.507v6.995l.5.5h6.227a5.528 5.528 0 0 1-.836-1H2V7.496h.01v-.489h4.486l.354-.146.858-.858h.014a5.51 5.51 0 0 1 1.477-1H7.5l-.353.147-.858.857H2.011V3H6.3l.853.853.353.146H9.5z" clip-rule="evenodd"/>
<path fill="#1A79FF" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 6.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5z"/>
<path stroke="#C5C5C5" d="M11.5 13v3M11.5 1v6"/>
</svg>

+ 5
- 0
images/dark/icon-repo-cloud-blue.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M12 5.536a3.5 3.5 0 0 1 0 6.928V15h-1v-2.536a3.5 3.5 0 0 1 0-6.928V0h1v5.536ZM14 9a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"/>
<path fill="#C5C5C5" d="M2 10c0 .28.38 2 2 2h3.5a5 5 0 0 0 1 1H4c-2 0-3-1.47-3-3 0-1.48 1.02-3 3-3 0-2.08 1.58-4 4-4 .579 0 1.075.067 1.5.18v1.083C9.11 4.103 8.619 4 8 4 6.36 4 5 5.61 5 7v1H4c-1.65 0-2 1.83-2 2Z"/>
<path fill="#1A79FF" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 5.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5Z"/>
</svg>

+ 5
- 0
images/dark/icon-repo-cloud-green.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M12 5.536a3.5 3.5 0 0 1 0 6.928V15h-1v-2.536a3.5 3.5 0 0 1 0-6.928V0h1v5.536ZM14 9a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"/>
<path fill="#C5C5C5" d="M2 10c0 .28.38 2 2 2h3.5a5 5 0 0 0 1 1H4c-2 0-3-1.47-3-3 0-1.48 1.02-3 3-3 0-2.08 1.58-4 4-4 .579 0 1.075.067 1.5.18v1.083C9.11 4.103 8.619 4 8 4 6.36 4 5 5.61 5 7v1H4c-1.65 0-2 1.83-2 2Z"/>
<path fill="#0F5" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 5.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5Z"/>
</svg>

+ 5
- 0
images/dark/icon-repo-cloud-red.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M12 5.536a3.5 3.5 0 0 1 0 6.928V15h-1v-2.536a3.5 3.5 0 0 1 0-6.928V0h1v5.536ZM14 9a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"/>
<path fill="#C5C5C5" d="M2 10c0 .28.38 2 2 2h3.5a5 5 0 0 0 1 1H4c-2 0-3-1.47-3-3 0-1.48 1.02-3 3-3 0-2.08 1.58-4 4-4 .579 0 1.075.067 1.5.18v1.083C9.11 4.103 8.619 4 8 4 6.36 4 5 5.61 5 7v1H4c-1.65 0-2 1.83-2 2Z"/>
<path fill="#F05" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 5.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5Z"/>
</svg>

+ 5
- 0
images/dark/icon-repo-cloud-yellow.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M12 5.536a3.5 3.5 0 0 1 0 6.928V15h-1v-2.536a3.5 3.5 0 0 1 0-6.928V0h1v5.536ZM14 9a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"/>
<path fill="#C5C5C5" d="M2 10c0 .28.38 2 2 2h3.5a5 5 0 0 0 1 1H4c-2 0-3-1.47-3-3 0-1.48 1.02-3 3-3 0-2.08 1.58-4 4-4 .579 0 1.075.067 1.5.18v1.083C9.11 4.103 8.619 4 8 4 6.36 4 5 5.61 5 7v1H4c-1.65 0-2 1.83-2 2Z"/>
<path fill="#FF5" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 5.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5Z"/>
</svg>

+ 5
- 0
images/dark/icon-repo-cloud.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M12 5.536a3.5 3.5 0 0 1 0 6.928V15h-1v-2.536a3.5 3.5 0 0 1 0-6.928V0h1v5.536ZM14 9a2.5 2.5 0 1 0-5 0 2.5 2.5 0 0 0 5 0Z"/>
<path fill="#C5C5C5" d="M2 10c0 .28.38 2 2 2h3.5a5 5 0 0 0 1 1H4c-2 0-3-1.47-3-3 0-1.48 1.02-3 3-3 0-2.08 1.58-4 4-4 .579 0 1.075.067 1.5.18v1.083C9.11 4.103 8.619 4 8 4 6.36 4 5 5.61 5 7v1H4c-1.65 0-2 1.83-2 2Z"/>
<path fill="none" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 5.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5Z"/>
</svg>

+ 5
- 0
images/dark/icon-repo-green.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M13.5 4h.501v1.003h-.2a5.5 5.5 0 0 1 1.2.755V3.5l-.5-.5H13.5v1zm-4 0V3H7.713l-.852-.854L6.507 2H1.511l-.5.5v3.996L1 6.507v6.995l.5.5h6.227a5.528 5.528 0 0 1-.836-1H2V7.496h.01v-.489h4.486l.354-.146.858-.858h.014a5.51 5.51 0 0 1 1.477-1H7.5l-.353.147-.858.857H2.011V3H6.3l.853.853.353.146H9.5z" clip-rule="evenodd"/>
<path fill="#0F5" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 6.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5z"/>
<path stroke="#C5C5C5" d="M11.5 13v3M11.5 1v6"/>
</svg>

+ 5
- 0
images/dark/icon-repo-red.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M13.5 4h.501v1.003h-.2a5.5 5.5 0 0 1 1.2.755V3.5l-.5-.5H13.5v1zm-4 0V3H7.713l-.852-.854L6.507 2H1.511l-.5.5v3.996L1 6.507v6.995l.5.5h6.227a5.528 5.528 0 0 1-.836-1H2V7.496h.01v-.489h4.486l.354-.146.858-.858h.014a5.51 5.51 0 0 1 1.477-1H7.5l-.353.147-.858.857H2.011V3H6.3l.853.853.353.146H9.5z" clip-rule="evenodd"/>
<path fill="#F05" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 6.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5z"/>
<path stroke="#C5C5C5" d="M11.5 13v3M11.5 1v6"/>
</svg>

+ 4
- 0
images/dark/icon-repo-solid-blue.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M13.725 7.025a3.5 3.5 0 0 0-1.975-.99V.5h-1v5.536a3.5 3.5 0 0 0 0 6.928V15.5h1v-2.536a3.5 3.5 0 0 0 1.975-5.939Zm-.707.707a2.5 2.5 0 1 1-3.536 3.536 2.5 2.5 0 0 1 3.536-3.536ZM7.123 4.67l.408-.18H8.8V2.501H7.707L6.85 1.65l-.344-.15H1.5l-.488.5v3.504H6.3l.822-.833ZM14.996 3 15 4.49h-1.2V2.501h.7l.496.499ZM6.434 6.493l.372-.165a5.5 5.5 0 0 0 .719 7.172H1.5L1 13V6.493h5.434Z"/>
<circle cx="11.25" cy="9.5" r="3" fill="#1A79FF"/>
</svg>

+ 4
- 0
images/dark/icon-repo-solid-green.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M13.725 7.025a3.5 3.5 0 0 0-1.975-.99V.5h-1v5.536a3.5 3.5 0 0 0 0 6.928V15.5h1v-2.536a3.5 3.5 0 0 0 1.975-5.939Zm-.707.707a2.5 2.5 0 1 1-3.536 3.536 2.5 2.5 0 0 1 3.536-3.536ZM7.123 4.67l.408-.18H8.8V2.501H7.707L6.85 1.65l-.344-.15H1.5l-.488.5v3.504H6.3l.822-.833ZM14.996 3 15 4.49h-1.2V2.501h.7l.496.499ZM6.434 6.493l.372-.165a5.5 5.5 0 0 0 .719 7.172H1.5L1 13V6.493h5.434Z"/>
<circle cx="11.25" cy="9.5" r="3" fill="#0F5"/>
</svg>

+ 4
- 0
images/dark/icon-repo-solid-red.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M13.725 7.025a3.5 3.5 0 0 0-1.975-.99V.5h-1v5.536a3.5 3.5 0 0 0 0 6.928V15.5h1v-2.536a3.5 3.5 0 0 0 1.975-5.939Zm-.707.707a2.5 2.5 0 1 1-3.536 3.536 2.5 2.5 0 0 1 3.536-3.536ZM7.123 4.67l.408-.18H8.8V2.501H7.707L6.85 1.65l-.344-.15H1.5l-.488.5v3.504H6.3l.822-.833ZM14.996 3 15 4.49h-1.2V2.501h.7l.496.499ZM6.434 6.493l.372-.165a5.5 5.5 0 0 0 .719 7.172H1.5L1 13V6.493h5.434Z"/>
<circle cx="11.25" cy="9.5" r="3" fill="#F05"/>
</svg>

+ 4
- 0
images/dark/icon-repo-solid-yellow.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M13.725 7.025a3.5 3.5 0 0 0-1.975-.99V.5h-1v5.536a3.5 3.5 0 0 0 0 6.928V15.5h1v-2.536a3.5 3.5 0 0 0 1.975-5.939Zm-.707.707a2.5 2.5 0 1 1-3.536 3.536 2.5 2.5 0 0 1 3.536-3.536ZM7.123 4.67l.408-.18H8.8V2.501H7.707L6.85 1.65l-.344-.15H1.5l-.488.5v3.504H6.3l.822-.833ZM14.996 3 15 4.49h-1.2V2.501h.7l.496.499ZM6.434 6.493l.372-.165a5.5 5.5 0 0 0 .719 7.172H1.5L1 13V6.493h5.434Z"/>
<circle cx="11.25" cy="9.5" r="3" fill="#FF5"/>
</svg>

+ 4
- 0
images/dark/icon-repo-solid.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" d="M13.725 7.025a3.5 3.5 0 0 0-1.975-.99V.5h-1v5.536a3.5 3.5 0 0 0 0 6.928V15.5h1v-2.536a3.5 3.5 0 0 0 1.975-5.939Zm-.707.707a2.5 2.5 0 1 1-3.536 3.536 2.5 2.5 0 0 1 3.536-3.536ZM7.123 4.67l.408-.18H8.8V2.501H7.707L6.85 1.65l-.344-.15H1.5l-.488.5v3.504H6.3l.822-.833ZM14.996 3 15 4.49h-1.2V2.501h.7l.496.499ZM6.434 6.493l.372-.165a5.5 5.5 0 0 0 .719 7.172H1.5L1 13V6.493h5.434Z"/>
<circle cx="11.25" cy="9.5" r="3" fill="none"/>
</svg>

+ 5
- 0
images/dark/icon-repo-yellow.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M13.5 4h.501v1.003h-.2a5.5 5.5 0 0 1 1.2.755V3.5l-.5-.5H13.5v1zm-4 0V3H7.713l-.852-.854L6.507 2H1.511l-.5.5v3.996L1 6.507v6.995l.5.5h6.227a5.528 5.528 0 0 1-.836-1H2V7.496h.01v-.489h4.486l.354-.146.858-.858h.014a5.51 5.51 0 0 1 1.477-1H7.5l-.353.147-.858.857H2.011V3H6.3l.853.853.353.146H9.5z" clip-rule="evenodd"/>
<path fill="#FF5" stroke="#C5C5C5" stroke-linejoin="bevel" stroke-width=".5" d="M11.5 6.75a3.25 3.25 0 1 1 0 6.5 3.25 3.25 0 0 1 0-6.5z"/>
<path stroke="#C5C5C5" d="M11.5 13v3M11.5 1v6"/>
</svg>

+ 5
- 0
images/dark/icon-repo.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M13.5 4h.501v1.003h-.2a5.5 5.5 0 0 1 1.2.755V3.5l-.5-.5H13.5v1zm-4 0V3H7.713l-.852-.854L6.507 2H1.511l-.5.5v3.996L1 6.507v6.995l.5.5h6.227a5.528 5.528 0 0 1-.836-1H2V7.496h.01v-.489h4.486l.354-.146.858-.858h.014a5.51 5.51 0 0 1 1.477-1H7.5l-.353.147-.858.857H2.011V3H6.3l.853.853.353.146H9.5z" clip-rule="evenodd"/>
<path stroke="#C5C5C5" stroke-linejoin="bevel" d="M11.5 7a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/>
<path stroke="#C5C5C5" d="M11.5 13v3M11.5 1v6"/>
</svg>

+ 4
- 0
images/dark/icon-stash-pop.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M4.5 7l-.416.223-2 3L2 10.5v4l.5.5h10l.5-.5v-4l-.084-.277-2-3L10.5 7H10v1h.232l1.334 2H10.5l-.354.146-.853.854H5.707l-.853-.854L4.5 10H3.434l1.334-2H5V7h-.5zm6.207 4H12v3H3v-3h1.293l.853.854L5.5 12h4l.354-.146.853-.854z" clip-rule="evenodd"/>
<path fill="#C5C5C5" d="M7.965 1h-1.06L3 4.905l1.061 1.06 2.637-2.61v6.177h1.5V3.355l2.723 2.723 1.061-1.061L7.965 1z"/>
</svg>

+ 4
- 0
images/dark/icon-stash-save.svg View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C5C5C5" fill-rule="evenodd" d="M.473.875h1.554V2.69l.322-.315a5.085 5.085 0 012.322-1.339 4.971 4.971 0 012.576 0 5.088 5.088 0 012.323 1.34 4.958 4.958 0 011.323 2.308 5.034 5.034 0 010 2.59c-.11.437-.273.846-.487 1.226H8.78a3.71 3.71 0 010 0H8.43l.023-.023c.456-.445.767-.973.937-1.587.17-.614.17-1.226 0-1.84l-.001-.003a3.341 3.341 0 00-.919-1.584l-.002-.002a3.406 3.406 0 00-1.586-.904l-.003-.001a3.392 3.392 0 00-1.839 0c-.603.17-1.125.48-1.571.937l-.004.003-.567.558h2.325v1.571H1.146l-.673-.673V.875zM7 9.926l-4.25 4.238 1.118 1.118L7 12.16v-1.881l-3.897 3.885L7 10.279v-.353zM2.287 4.304h2.686-2.686zm-.51-3.179H.723h1.054zm.748 1.428l-.748.731.748-.731a4.835 4.835 0 012.21-1.275 4.719 4.719 0 012.448 0 4.835 4.835 0 000 0 4.72 4.72 0 00-2.448 0 4.835 4.835 0 00-2.21 1.275zm8.164 2.348a5.179 5.179 0 010 0z"/>
<path stroke="#C5C5C5" stroke-width="1.5" d="M12.5 7v7M9 10.5h7"/>
</svg>

+ 3
- 0
images/dark/icon-stash.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path stroke="#C5C5C5" stroke-linejoin="bevel" d="M13.5 8.5v4h-11v-4m11 0h-2l-1 1h-5l-1-1h-2m11 0l-2-5h-7l-2 5"/>
</svg>

+ 3
- 0
images/dark/icon-status-added.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#388A34" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zm.75-6.75h3v-1.5h-3v-3h-1.5v3h-3v1.5h3v3h1.5v-3z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-conflict.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#7F4E7E" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zm-4.03-4.53L6.44 7.5 3.47 4.53l1.06-1.06L7.5 6.44l2.97-2.97 1.06 1.06L8.56 7.5l2.97 2.97-1.06 1.06L7.5 8.56l-2.97 2.97-1.06-1.06z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-copied.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#692C77" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zM6.964 3.75L5.893 4.813v.53h1.071v-.53h3.215v4.25h-.536v1.062h.536l1.071-1.063v-4.25L10.179 3.75H6.964zM3.75 6.938l1.071-1.063h3.215l1.071 1.063v4.25L8.036 12.25H4.82L3.75 11.187v-4.25zm1.071 0v4.25h3.215v-4.25H4.82z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-deleted.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#9E121D" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zm3.75-6.75v-1.5h-7.5v1.5h7.5z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-ignored.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#969696" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zM10 4l-6.01 6.01 1.06 1.061 6.01-6.01L10 4z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-modified.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#1B80B2" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zm3.75-9.5V7h-3v2.5h-1.5V7h-3V5.5h3v-3h1.5v3h3zm0 5V12h-7.5v-1.5h7.5z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-renamed.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#C63" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zM9.25 4.5v1.25h1.25l1 1v2.5l-1 1H9.25v1.25H10v1.25H7V11.5h.75v-1.25H4l-1-1v-2.5l1-1h3.75V4.5H7V3.25h3V4.5h-.75zm-5 2.5h3.5v2h-3.5V7zm5 0v2h1V7h-1z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-unknown.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#6C6C6C" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zM9.19 2.822c-.439-.215-.97-.322-1.596-.322-1.25 0-2.282.478-3.094 1.435l1.05.798c.275-.331.579-.574.91-.728.331-.154.66-.231.987-.231.415 0 .76.093 1.036.28.275.182.413.448.413.798 0 .275-.082.509-.245.7-.159.187-.36.364-.602.532a9.506 9.506 0 0 0-.728.56 2.66 2.66 0 0 0-.602.763c-.159.299-.238.679-.238 1.141v.483h1.498v-.413c0-.364.086-.663.259-.896a2.76 2.76 0 0 1 .637-.616c.252-.177.504-.362.756-.553.257-.196.471-.436.644-.721.173-.285.259-.651.259-1.099 0-.387-.114-.749-.343-1.085-.229-.34-.562-.616-1.001-.826zm-1.169 7.917a1.024 1.024 0 0 0-.763-.315c-.294 0-.544.105-.749.315-.2.205-.301.453-.301.742 0 .294.1.546.301.756.205.205.455.308.749.308.303 0 .558-.103.763-.308.205-.21.308-.462.308-.756 0-.29-.103-.537-.308-.742z" clip-rule="evenodd"/>
</svg>

+ 3
- 0
images/dark/icon-status-untracked.svg View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#6C6C6C" fill-rule="evenodd" d="M7.5 15a7.5 7.5 0 1 0 0-15 7.5 7.5 0 0 0 0 15zm-3.942-3.942l7.5-7.5.884.884-.664.664c.95.655 1.65 1.524 2.222 2.394-1.15 1.75-2.824 3.5-6 3.5-.696 0-1.32-.084-1.882-.234l-1.176 1.176-.884-.884zm5.188-3.42l1.629-1.629c.634.393 1.147.913 1.594 1.491C10.99 8.767 9.692 9.75 7.5 9.75c-.287 0-.56-.017-.817-.05l.455-.454a1.5 1.5 0 0 0 1.608-1.608zM7.362 6.254L5.754 7.862a1.5 1.5 0 0 1 1.608-1.608zm.955-.955A6.595 6.595 0 0 0 7.5 5.25c-2.192 0-3.49.982-4.469 2.25.447.578.96 1.098 1.594 1.491l-.903.903C2.772 9.239 2.072 8.369 1.5 7.5 2.65 5.75 4.324 4 7.5 4c.696 0 1.32.084 1.882.234L8.317 5.299z" clip-rule="evenodd"/>
</svg>

+ 5
- 0
images/dark/icon-tag-selected.svg View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
<path fill="#fff" fill-opacity=".1" stroke="#C5C5C5" stroke-width=".5" d="M.25.25h15.5v15.5H.25z"/>
<path stroke="#C5C5C5" stroke-linejoin="bevel" d="M6.5 2.5L.5 9l5 5 6-6.5v-5h-5z" />
<path fill="#C5C5C5" fill-rule="evenodd" clip-rule="evenodd" d="M14 8a3 3 0 01-5.22 2.017l-.77.64a4 4 0 10.407-5.713l.879.587A3 3 0 0114 8z"/>
</svg>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save