statusbar-quick-actions 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ESLint configuration for the project.
3
+ *
4
+ * See https://eslint.style and https://typescript-eslint.io for additional linting options.
5
+ */
6
+ // @ts-check
7
+ import js from "@eslint/js";
8
+ import tseslint from "typescript-eslint";
9
+ import stylistic from "@stylistic/eslint-plugin";
10
+
11
+ export default tseslint.config(
12
+ {
13
+ ignores: [".vscode-test", "out"],
14
+ },
15
+ js.configs.recommended,
16
+ ...tseslint.configs.recommended,
17
+ ...tseslint.configs.stylistic,
18
+ {
19
+ plugins: {
20
+ "@stylistic": stylistic,
21
+ },
22
+ rules: {
23
+ curly: "warn",
24
+ "@stylistic/semi": ["warn", "always"],
25
+ "@typescript-eslint/no-empty-function": "off",
26
+ "@typescript-eslint/naming-convention": [
27
+ "warn",
28
+ {
29
+ selector: "import",
30
+ format: ["camelCase", "PascalCase"],
31
+ },
32
+ ],
33
+ "@typescript-eslint/no-unused-vars": [
34
+ "error",
35
+ {
36
+ argsIgnorePattern: "^_",
37
+ },
38
+ ],
39
+ },
40
+ },
41
+ );
package/package.json ADDED
@@ -0,0 +1,605 @@
1
+ {
2
+ "name": "statusbar-quick-actions",
3
+ "displayName": "StatusBar Quick Actions",
4
+ "description": "Highly customizable statusbar buttons for executing user-defined scripts and commands with advanced features including theme support, execution tracking, and intelligent visibility conditions.",
5
+ "version": "0.0.10",
6
+ "publisher": "involvex",
7
+ "author": {
8
+ "name": "involvex"
9
+ },
10
+ "bin": {
11
+ "statusbar-quick-actions-configcli": "src/config-cli.ts"
12
+ },
13
+ "private": false,
14
+ "license": "MIT",
15
+ "icon": "assets/icon.png",
16
+ "galleryBanner": {
17
+ "color": "#1e2024",
18
+ "theme": "dark"
19
+ },
20
+ "funding": {
21
+ "type": "url",
22
+ "url": "https://paypal.me/involvex"
23
+ },
24
+ "sponsor": {
25
+ "url": "https://github.com/sponsors/involvex"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "https://github.com/involvex/vscode-statusbar-quick-actions.git"
30
+ },
31
+ "bugs": {
32
+ "url": "https://github.com/involvex/vscode-statusbar-quick-actions/issues"
33
+ },
34
+ "homepage": "https://github.com/involvex/vscode-statusbar-quick-actions#readme",
35
+ "engines": {
36
+ "vscode": "^1.107.0"
37
+ },
38
+ "categories": [
39
+ "Other",
40
+ "Extension Packs",
41
+ "Snippets"
42
+ ],
43
+ "keywords": [
44
+ "statusbar",
45
+ "quick-actions",
46
+ "buttons",
47
+ "scripts",
48
+ "commands",
49
+ "npm",
50
+ "yarn",
51
+ "pnpm",
52
+ "bun",
53
+ "git",
54
+ "development",
55
+ "productivity",
56
+ "customizable",
57
+ "theme",
58
+ "accessibility"
59
+ ],
60
+ "activationEvents": [
61
+ "*"
62
+ ],
63
+ "main": "./out/extension.js",
64
+ "contributes": {
65
+ "commands": [
66
+ {
67
+ "command": "statusbarQuickActions.editButton",
68
+ "title": "StatusBar Quick Actions: Edit Button",
69
+ "category": "StatusBar Quick Actions"
70
+ },
71
+ {
72
+ "command": "statusbarQuickActions.viewHistory",
73
+ "title": "StatusBar Quick Actions: View History",
74
+ "category": "StatusBar Quick Actions"
75
+ },
76
+ {
77
+ "command": "statusbarQuickActions.clearHistory",
78
+ "title": "StatusBar Quick Actions: Clear History",
79
+ "category": "StatusBar Quick Actions"
80
+ },
81
+ {
82
+ "command": "statusbarQuickActions.navigateButtons",
83
+ "title": "StatusBar Quick Actions: Navigate Buttons",
84
+ "category": "StatusBar Quick Actions"
85
+ }
86
+ ],
87
+ "keybindings": [
88
+ {
89
+ "command": "statusbarQuickActions.navigateButtons",
90
+ "key": "ctrl+shift+b",
91
+ "mac": "cmd+shift+b",
92
+ "when": "editorTextFocus"
93
+ }
94
+ ],
95
+ "configuration": {
96
+ "title": "StatusBar Quick Actions",
97
+ "properties": {
98
+ "statusbarQuickActions.buttons": {
99
+ "type": "array",
100
+ "default": [],
101
+ "description": "Array of statusbar button configurations",
102
+ "items": {
103
+ "type": "object",
104
+ "properties": {
105
+ "id": {
106
+ "type": "string",
107
+ "description": "Unique identifier for the button"
108
+ },
109
+ "text": {
110
+ "type": "string",
111
+ "description": "Text to display on the button (supports emojis)"
112
+ },
113
+ "tooltip": {
114
+ "type": "string",
115
+ "description": "Tooltip text shown on hover"
116
+ },
117
+ "icon": {
118
+ "type": "object",
119
+ "description": "Icon configuration for the button",
120
+ "properties": {
121
+ "id": {
122
+ "type": "string",
123
+ "description": "VS Code icon ID (e.g., 'symbol-method', 'play')"
124
+ },
125
+ "animation": {
126
+ "type": "string",
127
+ "enum": [
128
+ "spin",
129
+ "pulse"
130
+ ],
131
+ "description": "Icon animation type"
132
+ }
133
+ }
134
+ },
135
+ "command": {
136
+ "type": "object",
137
+ "description": "Command configuration",
138
+ "properties": {
139
+ "type": {
140
+ "type": "string",
141
+ "enum": [
142
+ "npm",
143
+ "yarn",
144
+ "pnpm",
145
+ "bun",
146
+ "bunx",
147
+ "npx",
148
+ "pnpx",
149
+ "shell",
150
+ "github",
151
+ "vscode",
152
+ "task",
153
+ "detect"
154
+ ],
155
+ "description": "Type of command to execute"
156
+ },
157
+ "script": {
158
+ "type": "string",
159
+ "description": "Script name for package manager commands"
160
+ },
161
+ "command": {
162
+ "type": "string",
163
+ "description": "Command to execute for shell and other command types"
164
+ },
165
+ "args": {
166
+ "type": "array",
167
+ "items": {
168
+ "type": "string"
169
+ },
170
+ "description": "Additional arguments for the command"
171
+ }
172
+ },
173
+ "required": [
174
+ "type"
175
+ ]
176
+ },
177
+ "enabled": {
178
+ "type": "boolean",
179
+ "default": true,
180
+ "description": "Whether the button is enabled"
181
+ },
182
+ "alignment": {
183
+ "type": "string",
184
+ "enum": [
185
+ "left",
186
+ "right"
187
+ ],
188
+ "default": "left",
189
+ "description": "Alignment of the button in the statusbar"
190
+ },
191
+ "priority": {
192
+ "type": "number",
193
+ "default": 100,
194
+ "description": "Priority for button positioning (higher numbers appear first)"
195
+ },
196
+ "colors": {
197
+ "type": "object",
198
+ "description": "Custom colors for the button",
199
+ "properties": {
200
+ "foreground": {
201
+ "type": "string",
202
+ "description": "Foreground color (theme color or hex)"
203
+ },
204
+ "background": {
205
+ "type": "string",
206
+ "description": "Background color (theme color or hex)"
207
+ }
208
+ }
209
+ },
210
+ "execution": {
211
+ "type": "object",
212
+ "description": "Execution behavior configuration",
213
+ "properties": {
214
+ "foreground": {
215
+ "type": "boolean",
216
+ "default": false,
217
+ "description": "Execute in foreground (blocking) or background (non-blocking)"
218
+ },
219
+ "showProgress": {
220
+ "type": "boolean",
221
+ "default": true,
222
+ "description": "Show progress indicator during execution"
223
+ },
224
+ "timeout": {
225
+ "type": "number",
226
+ "default": 30000,
227
+ "description": "Timeout in milliseconds for command execution"
228
+ },
229
+ "notifications": {
230
+ "type": "object",
231
+ "description": "Notification settings",
232
+ "properties": {
233
+ "showSuccess": {
234
+ "type": "boolean",
235
+ "default": true
236
+ },
237
+ "showError": {
238
+ "type": "boolean",
239
+ "default": true
240
+ },
241
+ "showOutput": {
242
+ "type": "boolean",
243
+ "default": false
244
+ }
245
+ }
246
+ }
247
+ }
248
+ },
249
+ "visibility": {
250
+ "type": "object",
251
+ "description": "Visibility conditions for the button",
252
+ "properties": {
253
+ "conditions": {
254
+ "type": "array",
255
+ "description": "Array of visibility conditions (all must be met)",
256
+ "items": {
257
+ "type": "object",
258
+ "properties": {
259
+ "type": {
260
+ "type": "string",
261
+ "enum": [
262
+ "fileType",
263
+ "fileExists",
264
+ "gitStatus",
265
+ "workspaceFolder"
266
+ ],
267
+ "description": "Type of visibility condition"
268
+ },
269
+ "patterns": {
270
+ "type": "array",
271
+ "items": {
272
+ "type": "string"
273
+ },
274
+ "description": "File patterns to match (for fileType)"
275
+ },
276
+ "path": {
277
+ "type": "string",
278
+ "description": "File/directory path to check (for fileExists)"
279
+ },
280
+ "status": {
281
+ "type": "string",
282
+ "enum": [
283
+ "repository",
284
+ "clean",
285
+ "dirty",
286
+ "ahead",
287
+ "behind"
288
+ ],
289
+ "description": "Git status to match (for gitStatus)"
290
+ },
291
+ "folders": {
292
+ "type": "array",
293
+ "items": {
294
+ "type": "string"
295
+ },
296
+ "description": "Workspace folder names to match (for workspaceFolder)"
297
+ },
298
+ "invert": {
299
+ "type": "boolean",
300
+ "default": false,
301
+ "description": "Invert the condition logic"
302
+ }
303
+ },
304
+ "required": [
305
+ "type"
306
+ ]
307
+ }
308
+ }
309
+ }
310
+ },
311
+ "workingDirectory": {
312
+ "type": "string",
313
+ "description": "Working directory for command execution"
314
+ },
315
+ "environment": {
316
+ "type": "object",
317
+ "description": "Environment variables to set for command execution",
318
+ "additionalProperties": {
319
+ "type": "string"
320
+ }
321
+ },
322
+ "history": {
323
+ "type": "object",
324
+ "description": "History tracking configuration",
325
+ "properties": {
326
+ "enabled": {
327
+ "type": "boolean",
328
+ "default": true
329
+ },
330
+ "maxEntries": {
331
+ "type": "number",
332
+ "default": 20,
333
+ "description": "Maximum number of history entries to keep"
334
+ }
335
+ }
336
+ }
337
+ },
338
+ "required": [
339
+ "id",
340
+ "text",
341
+ "command"
342
+ ]
343
+ }
344
+ },
345
+ "statusbarQuickActions.settings.theme": {
346
+ "type": "object",
347
+ "description": "Theme configuration for the extension",
348
+ "properties": {
349
+ "darkTheme": {
350
+ "type": "boolean",
351
+ "default": true,
352
+ "description": "Use dark theme colors"
353
+ },
354
+ "highContrast": {
355
+ "type": "boolean",
356
+ "default": false,
357
+ "description": "Enable high contrast mode for better accessibility"
358
+ },
359
+ "customColors": {
360
+ "type": "object",
361
+ "description": "Custom color palette",
362
+ "properties": {
363
+ "success": {
364
+ "type": "string",
365
+ "default": "#28a745",
366
+ "description": "Color for success states"
367
+ },
368
+ "error": {
369
+ "type": "string",
370
+ "default": "#dc3545",
371
+ "description": "Color for error states"
372
+ },
373
+ "warning": {
374
+ "type": "string",
375
+ "default": "#ffc107",
376
+ "description": "Color for warning states"
377
+ },
378
+ "info": {
379
+ "type": "string",
380
+ "default": "#17a2b8",
381
+ "description": "Color for info states"
382
+ },
383
+ "executing": {
384
+ "type": "string",
385
+ "default": "#007acc",
386
+ "description": "Color for executing states"
387
+ },
388
+ "disabled": {
389
+ "type": "string",
390
+ "default": "#6c757d",
391
+ "description": "Color for disabled states"
392
+ }
393
+ }
394
+ },
395
+ "statusBarColors": {
396
+ "type": "object",
397
+ "description": "Custom statusbar colors",
398
+ "properties": {
399
+ "foreground": {
400
+ "type": "string",
401
+ "default": "statusBarItem.foreground",
402
+ "description": "Default foreground color"
403
+ },
404
+ "background": {
405
+ "type": "string",
406
+ "default": "statusBarItem.background",
407
+ "description": "Default background color"
408
+ }
409
+ }
410
+ }
411
+ }
412
+ },
413
+ "statusbarQuickActions.settings.debug": {
414
+ "type": "boolean",
415
+ "default": false,
416
+ "description": "Enable debug logging for troubleshooting"
417
+ },
418
+ "statusbarQuickActions.settings.output": {
419
+ "type": "object",
420
+ "description": "Output panel configuration for command execution",
421
+ "properties": {
422
+ "enabled": {
423
+ "type": "boolean",
424
+ "default": true,
425
+ "description": "Enable dedicated output panel for command execution"
426
+ },
427
+ "mode": {
428
+ "type": "string",
429
+ "enum": [
430
+ "per-button",
431
+ "shared"
432
+ ],
433
+ "default": "per-button",
434
+ "description": "Output panel mode: per-button (separate panel for each button) or shared (one panel for all)"
435
+ },
436
+ "format": {
437
+ "type": "string",
438
+ "enum": [
439
+ "raw",
440
+ "formatted",
441
+ "ansi"
442
+ ],
443
+ "default": "formatted",
444
+ "description": "Output formatting: raw (plain text), formatted (with timestamps), ansi (preserve colors)"
445
+ },
446
+ "clearOnRun": {
447
+ "type": "boolean",
448
+ "default": false,
449
+ "description": "Clear output panel before each command execution"
450
+ },
451
+ "showTimestamps": {
452
+ "type": "boolean",
453
+ "default": true,
454
+ "description": "Show timestamps in output panel"
455
+ },
456
+ "preserveHistory": {
457
+ "type": "boolean",
458
+ "default": true,
459
+ "description": "Preserve output history across command runs"
460
+ },
461
+ "maxLines": {
462
+ "type": "number",
463
+ "default": 1000,
464
+ "description": "Maximum number of lines to keep in output panel"
465
+ }
466
+ }
467
+ },
468
+ "statusbarQuickActions.settings.performance": {
469
+ "type": "object",
470
+ "description": "Performance optimization settings",
471
+ "properties": {
472
+ "visibilityDebounceMs": {
473
+ "type": "number",
474
+ "default": 300,
475
+ "description": "Debounce delay for visibility checks in milliseconds (reduces CPU usage on rapid file switching)"
476
+ },
477
+ "enableVirtualization": {
478
+ "type": "boolean",
479
+ "default": false,
480
+ "description": "Enable virtualization for large button lists (experimental)"
481
+ },
482
+ "cacheResults": {
483
+ "type": "boolean",
484
+ "default": true,
485
+ "description": "Cache visibility evaluation results for better performance"
486
+ }
487
+ }
488
+ },
489
+ "statusbarQuickActions.settings.icons": {
490
+ "type": "object",
491
+ "description": "Icon configuration for status bar buttons",
492
+ "properties": {
493
+ "library": {
494
+ "type": "string",
495
+ "enum": [
496
+ "vscode",
497
+ "material"
498
+ ],
499
+ "default": "vscode",
500
+ "description": "Icon library: VSCode Codicons or Material Design Icons"
501
+ },
502
+ "defaultVariant": {
503
+ "type": "string",
504
+ "enum": [
505
+ "outlined",
506
+ "filled",
507
+ "rounded",
508
+ "sharp",
509
+ "two-tone"
510
+ ],
511
+ "default": "outlined",
512
+ "description": "Default Material Design Icon variant (only applies when library is 'material')"
513
+ },
514
+ "defaultSize": {
515
+ "type": "string",
516
+ "enum": [
517
+ "small",
518
+ "medium",
519
+ "large"
520
+ ],
521
+ "default": "medium",
522
+ "description": "Default icon size"
523
+ }
524
+ }
525
+ }
526
+ }
527
+ }
528
+ },
529
+ "scripts": {
530
+ "vscode:prepublish": "bun run compile",
531
+ "compile": "bun run tsc -p ./",
532
+ "compile:watch": "bun run tsc -watch -p ./",
533
+ "lint": "bun run eslint .",
534
+ "lint:fix": "bun run eslint --fix .",
535
+ "format": "bun run prettier --write .",
536
+ "format:check": "bun run prettier --check .",
537
+ "typecheck": "bun run tsc --noEmit",
538
+ "watch": "bun run compile:watch",
539
+ "clean": "rimraf out dist && mkdir dist",
540
+ "rebuild": "bun run clean && bun run compile",
541
+ "dev": "bun run clean && bun run watch",
542
+ "prepack": "bun run format && bun run lint:fix && bun run typecheck && bun run compile",
543
+ "package": "bun run vsce package --no-dependencies --allow-star-activation -o dist/",
544
+ "package:prerelease": "bun run prepack && bun run vsce package --no-dependencies --allow-star-activation --pre-release -o dist/",
545
+ "package:install": "bun run package && code --install-extension dist/statusbar-quick-actions-*.vsix",
546
+ "test": "echo \"No tests specified\" && exit 0",
547
+ "install:deps": "bun install",
548
+ "dev:cli": "bun run src/config-cli.ts",
549
+ "debug": "bun run --inspect-brk compile",
550
+ "publish:extension": "bun run package && vsce publish",
551
+ "publish:extension:prerelease": "bun run package:prerelease && vsce publish --pre-release",
552
+ "publish:cli": "bun run package && npm publish --access public"
553
+ },
554
+ "devDependencies": {
555
+ "@eslint/js": "^9.39.2",
556
+ "@stylistic/eslint-plugin": "^5.6.1",
557
+ "@types/bun": "^1.3.5",
558
+ "@types/console-clear": "^1.1.4",
559
+ "@types/node": "^25.0.3",
560
+ "@types/vscode": "^1.107.0",
561
+ "@vscode/vsce": "^3.7.1",
562
+ "eslint": "^9.39.2",
563
+ "prettier": "^3.7.4",
564
+ "rimraf": "^6.1.2",
565
+ "typescript": "^5.9.3",
566
+ "typescript-eslint": "^8.50.1"
567
+ },
568
+ "extensionDependencies": [],
569
+ "badges": [
570
+ {
571
+ "url": "https://img.shields.io/badge/version-blue.svg",
572
+ "href": "https://img.shields.io/badge/version-blue.svg",
573
+ "description": "Version"
574
+ },
575
+ {
576
+ "url": "https://img.shields.io/badge/downloads-blue.svg",
577
+ "href": "https://img.shields.io/badge/downloads-blue.svg",
578
+ "description": "Downloads"
579
+ },
580
+ {
581
+ "url": "https://img.shields.io/badge/Rating-blue.svg",
582
+ "href": "https://img.shields.io/badge/Rating-blue.svg",
583
+ "description": "Rating"
584
+ },
585
+ {
586
+ "url": "https://img.shields.io/badge/license-MIT-blue.svg",
587
+ "href": "https://github.com/involvex/vscode-statusbar-quick-actions/blob/main/LICENSE",
588
+ "description": "License"
589
+ },
590
+ {
591
+ "url": "https://img.shields.io/github/stars/involvex/vscode-statusbar-quick-actions?style=flat",
592
+ "href": "https://github.com/involvex/vscode-statusbar-quick-actions",
593
+ "description": "GitHub Stars"
594
+ },
595
+ {
596
+ "url": "https://img.shields.io/github/issues/involvex/vscode-statusbar-quick-actions",
597
+ "href": "https://github.com/involvex/vscode-statusbar-quick-actions/issues",
598
+ "description": "GitHub Issues"
599
+ }
600
+ ],
601
+ "dependencies": {
602
+ "bun": "^1.3.5",
603
+ "console-clear": "^1.1.1"
604
+ }
605
+ }