Repository navigation
Expand file tree
/
Copy pathpackage.json
More file actions
318 lines (318 loc) · 12.7 KB
/
Copy pathpackage.json
File metadata and controls
318 lines (318 loc) · 12.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
{
"name": "speedy-git-ext",
"displayName": "Speedy Git",
"description": "A performance-first, lightweight Git graph visualization extension for VS Code",
"version": "5.21.0",
"publisher": "onlineeric",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/onlineeric/speedy-git-ext"
},
"engines": {
"vscode": "^1.85.0"
},
"icon": "resources/speedy-git-ext-icon-128.png",
"categories": [
"SCM Providers",
"Visualization"
],
"keywords": [
"git",
"git graph",
"git history",
"git ui",
"git gui",
"git log",
"git diff",
"git compare",
"git visualization",
"git worktree",
"worktree",
"source control",
"version control",
"scm",
"commit graph",
"commit history",
"history viewer",
"branch graph",
"git branch",
"branch manager",
"branch compare",
"compare branches",
"large repo",
"rebase",
"interactive rebase",
"cherry pick",
"stash",
"submodule",
"signed commits",
"cursor"
],
"activationEvents": [
"onStartupFinished"
],
"main": "./dist/extension.js",
"contributes": {
"commands": [
{
"command": "speedyGit.showGraph",
"title": "Show Speedy Git",
"category": "Speedy Git"
},
{
"command": "speedyGit.openNewGraphTab",
"title": "Open New Graph Tab",
"category": "Speedy Git",
"icon": "$(add)"
},
{
"command": "speedyGit.openForRepo",
"title": "Open in Speedy Git",
"category": "Speedy Git",
"icon": "$(zap)"
}
],
"keybindings": [
{
"command": "speedyGit.showGraph",
"key": "ctrl+shift+g",
"mac": "cmd+shift+g",
"when": "workspaceFolderCount > 0"
}
],
"menus": {
"commandPalette": [
{
"command": "speedyGit.showGraph",
"when": "workspaceFolderCount > 0"
},
{
"command": "speedyGit.openNewGraphTab",
"when": "workspaceFolderCount > 0"
}
],
"scm/title": [
{
"when": "scmProvider == git",
"command": "speedyGit.openForRepo",
"group": "navigation"
}
]
},
"configuration": {
"title": "Speedy Git",
"properties": {
"speedyGit.telemetry.enabled": {
"type": "boolean",
"default": true,
"tags": [
"telemetry",
"usesOnlineServices"
],
"markdownDescription": "Allow Speedy Git to send anonymous usage statistics (feature usage counts, error codes, performance timings — never repository names, branch names, file paths, or anything you type). **Note:** anonymous usage statistics are sent only when this setting and VS Code's global `#telemetry.telemetryLevel#` setting are both enabled — turning either off stops all collection. See [telemetry details](https://github.com/onlineeric/speedy-git-ext#telemetry)."
},
"speedyGit.batchCommitSize": {
"type": "number",
"default": 500,
"minimum": 1,
"maximum": 10000,
"markdownDescription": "Number of commits to load per batch in the Git graph panel. Lower values give faster initial load; higher values reduce scroll-triggered fetches for large repositories. Values above 10000 are capped."
},
"speedyGit.statusBarText": {
"type": "string",
"enum": [
"iconAndText",
"icon"
],
"enumItemLabels": [
"Icon + text",
"Icon only"
],
"enumDescriptions": [
"Show the lightning icon followed by 'Speedy Git'.",
"Show only the lightning icon."
],
"default": "iconAndText",
"markdownDescription": "Label shown for the Speedy Git status bar item."
},
"speedyGit.graphColors": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"#F44336",
"#2196F3",
"#4CAF50",
"#FF9800",
"#9C27B0",
"#00BCD4",
"#FF5722",
"#8BC34A",
"#3F51B5",
"#FFEB3B"
],
"markdownDescription": "Array of hex color strings used for graph branch lines. Colors cycle in order."
},
"speedyGit.dateFormat": {
"type": "string",
"enum": [
"relative",
"absolute",
"absolute-date",
"system",
"custom"
],
"enumDescriptions": [
"Short relative time (e.g. \"3h ago\")",
"YYYY-MM-DD HH:mm (e.g. 2026-05-18 14:32)",
"YYYY-MM-DD (e.g. 2026-05-18)",
"Follow the OS locale (toLocaleString)",
"Use the date-fns token string in `speedyGit.dateFormatCustom`"
],
"default": "relative",
"markdownDescription": "Date display format for commit rows. Choose `custom` to provide your own [date-fns format tokens](https://date-fns.org/docs/format) in `#speedyGit.dateFormatCustom#`."
},
"speedyGit.dateFormatCustom": {
"type": "string",
"default": "",
"markdownDescription": "Custom date format using [date-fns tokens](https://date-fns.org/docs/format) (e.g. `yyyy-MM-dd HH:mm`, `MMM d, yyyy`). Only used when `#speedyGit.dateFormat#` is set to `custom`. Falls back to `relative` if the token string is invalid or empty."
},
"speedyGit.avatars.enabled": {
"type": "boolean",
"default": true,
"markdownDescription": "Show author avatars in the commit graph. Initials are used when an avatar is unavailable."
},
"speedyGit.avatars.refreshDays": {
"type": "number",
"default": 30,
"minimum": 1,
"maximum": 365,
"markdownDescription": "How long a looked-up avatar stays cached before it is refreshed in the background. Avatars are cached per author email and reused across repositories, so a longer window means far fewer GitHub API requests. A stale entry keeps displaying while it refreshes, and GitHub avatar image URLs are stable — so a longer window does not mean out-of-date pictures."
},
"speedyGit.showRemoteBranches": {
"type": "boolean",
"default": true,
"markdownDescription": "Show remote branch labels in the graph."
},
"speedyGit.showTags": {
"type": "boolean",
"default": true,
"markdownDescription": "Show tag labels in the graph."
},
"speedyGit.overScan": {
"type": "number",
"default": 20,
"minimum": 0,
"maximum": 200,
"markdownDescription": "Number of commit rows to render above and below the visible graph viewport. Higher values reduce blank-row flicker during fast scrolling at the cost of more DOM nodes. Lower values use less memory but may show empty rows when scrolling quickly."
},
"speedyGit.toolbar.showLabels": {
"type": "boolean",
"default": true,
"markdownDescription": "Show a small text label under each toolbar icon button (Filter, Search, Compare, Worktrees, Refresh, Fetch, View, Remote, Settings). You can also toggle this by right-clicking any toolbar button."
},
"speedyGit.toolbar.showRemoteButton": {
"type": "boolean",
"default": true,
"markdownDescription": "Show the Remote (Manage Remotes) button in the toolbar. You can also toggle this by right-clicking the View, Remote, or Settings toolbar button."
},
"speedyGit.autolinks.remoteProvider.enabled": {
"type": "boolean",
"default": true,
"markdownDescription": "Turn issue and pull request references in commit messages into links to the repository's GitHub or GitLab page: `#123` and `GH-123` on GitHub, `#123` (issue) and `!123` (merge request) on GitLab, and `owner/repo#123` on either. Links are added only when the remote is on `github.com` or `gitlab.com`: the remote is the only one, or `upstream`, or else `origin`. Any other host gets no links, so a link never points somewhere it might be wrong."
},
"speedyGit.autolinks.custom": {
"type": "array",
"default": [],
"items": {
"type": "object",
"required": [
"prefix",
"url"
],
"properties": {
"prefix": {
"type": "string",
"markdownDescription": "Text that comes before the number, e.g. `ABCD-`. A prefix with a space goes in double quotes: `\"Jira \"` links `Jira 123`. Inside the quotes, `\\\"` is a literal double quote."
},
"url": {
"type": "string",
"markdownDescription": "Link to open, with `<num>` where the number goes, e.g. `https://jira.example.com/browse/ABCD-<num>`. Must be an `http://` or `https://` URL."
},
"ignoreCase": {
"type": "boolean",
"default": true,
"markdownDescription": "Match the prefix in any letter case, so `Jira-` also links `JIRA-123`. On unless set to `false`."
},
"alphanumeric": {
"type": "boolean",
"default": false,
"markdownDescription": "Match letters and digits after the prefix, not only digits."
}
}
},
"markdownDescription": "Turn ticket references in commit messages into links, e.g. Jira keys like `ABCD-123`. Each entry is a `prefix` and a `url` with `<num>` where the number goes. The format matches GitLens's `gitlens.autolinks`, so an existing GitLens list can be copied in. You can also edit this list from the graph's **View** settings."
},
"speedyGit.worktree.basePath": {
"type": "string",
"default": "../${repoName}.worktrees",
"markdownDescription": "Parent directory where new git worktrees are created. The sanitized ref name is appended below it as the worktree folder — either nested or flattened, per `#speedyGit.worktree.folderNameStyle#` (e.g. `../myrepo.worktrees/feat/foo` or `../myrepo.worktrees/feat-foo`). Supports the `${repoName}` token. Defaults to a sibling folder so worktrees stay outside the watched working tree (protects graph performance)."
},
"speedyGit.worktree.folderNameStyle": {
"type": "string",
"enum": [
"nested",
"flat"
],
"default": "nested",
"enumDescriptions": [
"Keep the branch hierarchy as folders: branch `feat/x` becomes `feat/x`.",
"Flatten the branch hierarchy into one folder name: branch `feat/x` becomes `feat-x`."
],
"markdownDescription": "Which worktree folder is preselected in the Create Worktree dialog for a branch name containing `/`. Both options are always offered in the dialog; this only chooses the default."
}
}
}
},
"scripts": {
"vscode:prepublish": "pnpm run build:prod",
"build": "pnpm run build:ext && pnpm run build:webview",
"build:prod": "pnpm run build:ext:prod && pnpm run build:webview",
"build:ext": "node esbuild.config.mjs",
"build:ext:prod": "node esbuild.config.mjs --production",
"build:webview": "cd webview-ui && pnpm run build",
"watch": "concurrently \"pnpm run watch:ext\" \"pnpm run watch:webview\"",
"watch:ext": "node esbuild.config.mjs --watch",
"watch:webview": "cd webview-ui && pnpm run dev",
"lint": "eslint .",
"typecheck": "tsc --noEmit",
"generate-test-repo": "tsx scripts/main.ts",
"generate-submodule-repos": "tsx scripts/generate-submodule-repos.ts",
"test": "vitest run",
"ext:package": "npx @vscode/vsce package --no-dependencies",
"ext:publish": "pnpm run ext:publish:vscode && pnpm run ext:publish:cursor",
"ext:publish:vscode": "npx @vscode/vsce publish --no-dependencies",
"ext:publish:cursor": "npx ovsx publish --no-dependencies",
"ext:publish:pre-release": "npx @vscode/vsce publish --no-dependencies --pre-release && npx ovsx publish --no-dependencies --pre-release"
},
"devDependencies": {
"@eslint/js": "^9.39.2",
"@types/node": "^20.11.0",
"@types/vscode": "^1.85.0",
"@vscode/vsce": "^3.9.2",
"concurrently": "^8.2.2",
"esbuild": "^0.20.0",
"eslint": "^9.39.2",
"eslint-plugin-react-hooks": "^7.0.1",
"tsx": "^4.19.0",
"typescript": "^5.3.3",
"typescript-eslint": "^8.55.0",
"vitest": "^4.0.18"
},
"packageManager": "pnpm@10.28.2",
"dependencies": {
"@vscode/extension-telemetry": "^1.5.2"
}
}