OXYGENHUB
# b4626290e660 oxygen-vscode / package.json
19.4 KiB · JSON · last changed History graph: split, squash and rebase from the change picker or a right-click menu, confirmed first and undoable; 0.8.0 1 month ago source blame history raw
1
{
2
  "name": "oxygen-vscode",
3
  "displayName": "Oxygen",
4
  "description": "Oxygen version control: source control view, diffs, decorations, bookmarks and history for oxy repositories",
5
  "version": "0.8.0",
6
  "publisher": "oxygen",
7
  "license": "MIT OR Apache-2.0",
8
  "icon": "assets/images/oxygen.png",
9
  "engines": {
10
    "vscode": "^1.137.0"
11
  },
12
  "categories": [
13
    "SCM Providers"
14
  ],
15
  "keywords": [
16
    "oxygen",
17
    "oxy",
18
    "scm",
19
    "version control"
20
  ],
21
  "activationEvents": [
22
    "workspaceContains:.oxy/format",
23
    "workspaceContains:.oxy",
24
    "onStartupFinished"
25
  ],
26
  "main": "./dist/extension.js",
27
  "contributes": {
28
    "commands": [
29
      {
30
        "command": "oxygen.refresh",
31
        "title": "Refresh",
32
        "category": "Oxygen",
33
        "icon": "$(refresh)"
34
      },
35
      {
36
        "command": "oxygen.commit",
37
        "title": "Commit",
38
        "category": "Oxygen",
39
        "icon": "$(check)"
40
      },
41
      {
42
        "command": "oxygen.openFile",
43
        "title": "Open File",
44
        "category": "Oxygen",
45
        "icon": "$(go-to-file)"
46
      },
47
      {
48
        "command": "oxygen.openChanges",
49
        "title": "Open Changes",
50
        "category": "Oxygen"
51
      },
52
      {
53
        "command": "oxygen.openBaseVersion",
54
        "title": "Open Base Version",
55
        "category": "Oxygen"
56
      },
57
      {
58
        "command": "oxygen.showOutput",
59
        "title": "Show Output",
60
        "category": "Oxygen"
61
      },
62
      {
63
        "command": "oxygen.showLog",
64
        "title": "Show Log",
65
        "category": "Oxygen"
66
      },
67
      {
68
        "command": "oxygen.init",
69
        "title": "Initialize Repository",
70
        "category": "Oxygen"
71
      },
72
      {
73
        "command": "oxygen.discard",
74
        "title": "Discard Changes",
75
        "category": "Oxygen",
76
        "icon": "$(discard)"
77
      },
78
      {
79
        "command": "oxygen.commitSelected",
80
        "title": "Commit Selected Paths",
81
        "category": "Oxygen"
82
      },
83
      {
84
        "command": "oxygen.commitHunks",
85
        "title": "Commit Hunks\u2026",
86
        "category": "Oxygen"
87
      },
88
      {
89
        "command": "oxygen.amend",
90
        "title": "Amend",
91
        "category": "Oxygen"
92
      },
93
      {
94
        "command": "oxygen.undo",
95
        "title": "Undo Last Operation",
96
        "category": "Oxygen",
97
        "icon": "$(discard)"
98
      },
99
      {
100
        "command": "oxygen.undoTo",
101
        "title": "Undo to Here",
102
        "category": "Oxygen",
103
        "icon": "$(discard)"
104
      },
105
      {
106
        "command": "oxygen.refreshOperations",
107
        "title": "Refresh Operations",
108
        "category": "Oxygen",
109
        "icon": "$(refresh)"
110
      },
111
      {
112
        "command": "oxygen.switchBookmark",
113
        "title": "Switch Bookmark\u2026",
114
        "category": "Oxygen",
115
        "icon": "$(bookmark)"
116
      },
117
      {
118
        "command": "oxygen.createBookmark",
119
        "title": "Create Bookmark\u2026",
120
        "category": "Oxygen"
121
      },
122
      {
123
        "command": "oxygen.mergeBookmark",
124
        "title": "Merge Bookmark\u2026",
125
        "category": "Oxygen"
126
      },
127
      {
128
        "command": "oxygen.deleteBookmark",
129
        "title": "Delete Bookmark\u2026",
130
        "category": "Oxygen"
131
      },
132
      {
133
        "command": "oxygen.fetch",
134
        "title": "Fetch",
135
        "category": "Oxygen"
136
      },
137
      {
138
        "command": "oxygen.pull",
139
        "title": "Pull",
140
        "category": "Oxygen"
141
      },
142
      {
143
        "command": "oxygen.push",
144
        "title": "Push",
145
        "category": "Oxygen"
146
      },
147
      {
148
        "command": "oxygen.pushBookmark",
149
        "title": "Push Bookmark\u2026",
150
        "category": "Oxygen"
151
      },
152
      {
153
        "command": "oxygen.sync",
154
        "title": "Sync",
155
        "category": "Oxygen",
156
        "icon": "$(sync)"
157
      },
158
      {
159
        "command": "oxygen.showHistory",
160
        "title": "Show History",
161
        "category": "Oxygen",
162
        "icon": "$(git-commit)"
163
      },
164
      {
165
        "command": "oxygen.fileHistory",
166
        "title": "File History\u2026",
167
        "category": "Oxygen",
168
        "icon": "$(history)"
169
      },
170
      {
171
        "command": "oxygen.toggleBlame",
172
        "title": "Toggle Inline Blame",
173
        "category": "Oxygen"
174
      },
175
      {
176
        "command": "oxygen.showChange",
177
        "title": "Show Change",
178
        "category": "Oxygen"
179
      },
180
      {
181
        "command": "oxygen.acceptSides",
182
        "title": "Accept Conflict Sides",
183
        "category": "Oxygen"
184
      },
185
      {
186
        "command": "oxygen.keepCandidate",
187
        "title": "Keep This Candidate",
188
        "category": "Oxygen",
189
        "icon": "$(check)"
190
      },
191
      {
192
        "command": "oxygen.markResolved",
193
        "title": "Mark Resolved",
194
        "category": "Oxygen",
195
        "icon": "$(check-all)"
196
      },
197
      {
198
        "command": "oxygen.openConflict",
199
        "title": "Open Conflict",
200
        "category": "Oxygen"
201
      },
202
      {
203
        "command": "oxygen.openSubrepo",
204
        "title": "Open Subrepo",
205
        "category": "Oxygen"
206
      },
207
      {
208
        "command": "oxygen.updateSubrepo",
209
        "title": "Update to Pin",
210
        "category": "Oxygen",
211
        "icon": "$(cloud-download)"
212
      },
213
      {
214
        "command": "oxygen.updateSubrepos",
215
        "title": "Update Subrepos",
216
        "category": "Oxygen"
217
      },
218
      {
219
        "command": "oxygen.bisectStart",
220
        "title": "Bisect: Start",
221
        "category": "Oxygen"
222
      },
223
      {
224
        "command": "oxygen.bisectGood",
225
        "title": "Bisect: Good",
226
        "category": "Oxygen"
227
      },
228
      {
229
        "command": "oxygen.bisectBad",
230
        "title": "Bisect: Bad",
231
        "category": "Oxygen"
232
      },
233
      {
234
        "command": "oxygen.bisectSkip",
235
        "title": "Bisect: Skip",
236
        "category": "Oxygen"
237
      },
238
      {
239
        "command": "oxygen.bisectRun",
240
        "title": "Bisect: Run\u2026",
241
        "category": "Oxygen"
242
      },
243
      {
244
        "command": "oxygen.bisectReset",
245
        "title": "Bisect: Reset",
246
        "category": "Oxygen"
247
      },
248
      {
249
        "command": "oxygen.refreshBisect",
250
        "title": "Refresh",
251
        "category": "Oxygen",
252
        "icon": "$(refresh)"
253
      },
254
      {
255
        "command": "oxygen.refreshTrust",
256
        "title": "Refresh",
257
        "category": "Oxygen",
258
        "icon": "$(refresh)"
259
      },
260
      {
261
        "command": "oxygen.verify",
262
        "title": "Verify Signatures",
263
        "category": "Oxygen"
264
      },
265
      {
266
        "command": "oxygen.tags",
267
        "title": "Tags\u2026",
268
        "category": "Oxygen"
269
      },
270
      {
271
        "command": "oxygen.createTag",
272
        "title": "Create Tag\u2026",
273
        "category": "Oxygen"
274
      },
275
      {
276
        "command": "oxygen.addWorkspace",
277
        "title": "Add Workspace\u2026",
278
        "category": "Oxygen"
279
      },
280
      {
281
        "command": "oxygen.clone",
282
        "title": "Clone Repository\u2026",
283
        "category": "Oxygen"
284
      },
285
      {
286
        "command": "oxygen.openOnRemote",
287
        "title": "Open on Remote",
288
        "category": "Oxygen",
289
        "icon": "$(link-external)"
290
      },
291
      {
292
        "command": "oxygen.openChangeOnRemote",
293
        "title": "Open Change on Remote",
294
        "category": "Oxygen"
295
      },
296
      {
297
        "command": "oxygen.history.split",
298
        "title": "Split\u2026",
299
        "category": "Oxygen",
300
        "icon": "$(split-horizontal)"
301
      },
302
      {
303
        "command": "oxygen.history.squash",
304
        "title": "Squash into a Dependency\u2026",
305
        "category": "Oxygen",
306
        "icon": "$(fold)"
307
      },
308
      {
309
        "command": "oxygen.history.rebase",
310
        "title": "Rebase onto\u2026",
311
        "category": "Oxygen",
312
        "icon": "$(git-pull-request-go-to-changes)"
313
      }
314
    ],
315
    "views": {
316
      "scm": [
317
        {
318
          "id": "oxygen.operations",
319
          "name": "Oxygen Operations",
320
          "when": "oxygen.hasRepository",
321
          "icon": "assets/images/oxygen.svg",
322
          "visibility": "collapsed"
323
        },
324
        {
325
          "id": "oxygen.bisect",
326
          "name": "Oxygen Bisect",
327
          "when": "oxygen.hasRepository",
328
          "icon": "assets/images/oxygen.svg",
329
          "visibility": "collapsed"
330
        },
331
        {
332
          "id": "oxygen.trust",
333
          "name": "Oxygen Trust",
334
          "when": "oxygen.hasRepository",
335
          "icon": "assets/images/oxygen.svg",
336
          "visibility": "collapsed"
337
        }
338
      ]
339
    },
340
    "viewsWelcome": [
341
      {
342
        "view": "scm",
343
        "contents": "Oxygen is installed but found no oxy repository in the open folders.\n[Initialize Oxygen Repository](command:oxygen.init)\n[Show Oxygen Output](command:oxygen.showOutput)",
344
        "when": "workbenchState != empty && !oxygen.hasRepository"
345
      }
346
    ],
347
    "menus": {
348
      "scm/title": [
349
        {
350
          "command": "oxygen.commit",
351
          "group": "navigation@1",
352
          "when": "scmProvider == oxygen"
353
        },
354
        {
355
          "command": "oxygen.sync",
356
          "group": "navigation@2",
357
          "when": "scmProvider == oxygen"
358
        },
359
        {
360
          "command": "oxygen.refresh",
361
          "group": "navigation@3",
362
          "when": "scmProvider == oxygen"
363
        },
364
        {
365
          "command": "oxygen.pull",
366
          "group": "4_sync@1",
367
          "when": "scmProvider == oxygen"
368
        },
369
        {
370
          "command": "oxygen.push",
371
          "group": "4_sync@2",
372
          "when": "scmProvider == oxygen"
373
        },
374
        {
375
          "command": "oxygen.pushBookmark",
376
          "group": "4_sync@3",
377
          "when": "scmProvider == oxygen"
378
        },
379
        {
380
          "command": "oxygen.fetch",
381
          "group": "4_sync@4",
382
          "when": "scmProvider == oxygen"
383
        },
384
        {
385
          "command": "oxygen.switchBookmark",
386
          "group": "5_bookmarks@1",
387
          "when": "scmProvider == oxygen"
388
        },
389
        {
390
          "command": "oxygen.createBookmark",
391
          "group": "5_bookmarks@2",
392
          "when": "scmProvider == oxygen"
393
        },
394
        {
395
          "command": "oxygen.mergeBookmark",
396
          "group": "5_bookmarks@3",
397
          "when": "scmProvider == oxygen"
398
        },
399
        {
400
          "command": "oxygen.deleteBookmark",
401
          "group": "5_bookmarks@4",
402
          "when": "scmProvider == oxygen"
403
        },
404
        {
405
          "command": "oxygen.tags",
406
          "group": "6_more@1",
407
          "when": "scmProvider == oxygen"
408
        },
409
        {
410
          "command": "oxygen.createTag",
411
          "group": "6_more@2",
412
          "when": "scmProvider == oxygen"
413
        },
414
        {
415
          "command": "oxygen.addWorkspace",
416
          "group": "6_more@3",
417
          "when": "scmProvider == oxygen"
418
        },
419
        {
420
          "command": "oxygen.updateSubrepos",
421
          "group": "6_more@4",
422
          "when": "scmProvider == oxygen"
423
        },
424
        {
425
          "command": "oxygen.verify",
426
          "group": "6_more@5",
427
          "when": "scmProvider == oxygen"
428
        },
429
        {
430
          "command": "oxygen.commitHunks",
431
          "group": "2_commit@1",
432
          "when": "scmProvider == oxygen"
433
        },
434
        {
435
          "command": "oxygen.amend",
436
          "group": "2_commit@2",
437
          "when": "scmProvider == oxygen"
438
        },
439
        {
440
          "command": "oxygen.undo",
441
          "group": "3_undo",
442
          "when": "scmProvider == oxygen"
443
        },
444
        {
445
          "command": "oxygen.markResolved",
446
          "group": "2_commit@3",
447
          "when": "scmProvider == oxygen"
448
        },
449
        {
450
          "command": "oxygen.showHistory",
451
          "group": "1_view@1",
452
          "when": "scmProvider == oxygen"
453
        },
454
        {
455
          "command": "oxygen.showLog",
456
          "group": "1_view@2",
457
          "when": "scmProvider == oxygen"
458
        },
459
        {
460
          "command": "oxygen.showOutput",
461
          "group": "1_view@3",
462
          "when": "scmProvider == oxygen"
463
        },
464
        {
465
          "command": "oxygen.openOnRemote",
466
          "when": "scmProvider == oxygen",
467
          "group": "navigation@9"
468
        }
469
      ],
470
      "editor/title": [
471
        {
472
          "command": "oxygen.fileHistory",
473
          "group": "navigation@9",
474
          "when": "oxygen.hasRepository && resourceScheme == file"
475
        }
476
      ],
477
      "editor/context": [
478
        {
479
          "command": "oxygen.toggleBlame",
480
          "group": "oxygen@1",
481
          "when": "oxygen.hasRepository && resourceScheme == file"
482
        },
483
        {
484
          "command": "oxygen.fileHistory",
485
          "group": "oxygen@2",
486
          "when": "oxygen.hasRepository && resourceScheme == file"
487
        }
488
      ],
489
      "explorer/context": [
490
        {
491
          "command": "oxygen.fileHistory",
492
          "group": "7_modification@9",
493
          "when": "oxygen.hasRepository && !explorerResourceIsFolder"
494
        }
495
      ],
496
      "scm/resourceState/context": [
497
        {
498
          "command": "oxygen.openFile",
499
          "group": "inline@1",
500
          "when": "scmProvider == oxygen"
501
        },
502
        {
503
          "command": "oxygen.discard",
504
          "group": "inline@2",
505
          "when": "scmProvider == oxygen"
506
        },
507
        {
508
          "command": "oxygen.openChanges",
509
          "group": "navigation",
510
          "when": "scmProvider == oxygen"
511
        },
512
        {
513
          "command": "oxygen.openBaseVersion",
514
          "group": "navigation",
515
          "when": "scmProvider == oxygen"
516
        },
517
        {
518
          "command": "oxygen.commitSelected",
519
          "group": "1_modification@1",
520
          "when": "scmProvider == oxygen"
521
        },
522
        {
523
          "command": "oxygen.discard",
524
          "group": "1_modification@2",
525
          "when": "scmProvider == oxygen"
526
        },
527
        {
528
          "command": "oxygen.keepCandidate",
529
          "group": "inline@0",
530
          "when": "scmProvider == oxygen && scmResourceState == candidate"
531
        },
532
        {
533
          "command": "oxygen.updateSubrepo",
534
          "group": "inline@0",
535
          "when": "scmProvider == oxygen && scmResourceState == subrepo"
536
        },
537
        {
538
          "command": "oxygen.keepCandidate",
539
          "group": "0_conflict",
540
          "when": "scmProvider == oxygen && scmResourceState == candidate"
541
        }
542
      ],
543
      "scm/resourceGroup/context": [
544
        {
545
          "command": "oxygen.markResolved",
546
          "group": "inline",
547
          "when": "scmProvider == oxygen && scmResourceGroup == conflicts"
548
        }
549
      ],
550
      "view/title": [
551
        {
552
          "command": "oxygen.refreshOperations",
553
          "group": "navigation",
554
          "when": "view == oxygen.operations"
555
        },
556
        {
557
          "command": "oxygen.refreshBisect",
558
          "group": "navigation",
559
          "when": "view == oxygen.bisect"
560
        },
561
        {
562
          "command": "oxygen.refreshTrust",
563
          "group": "navigation",
564
          "when": "view == oxygen.trust"
565
        }
566
      ],
567
      "view/item/context": [
568
        {
569
          "command": "oxygen.undoTo",
570
          "group": "inline",
571
          "when": "view == oxygen.operations && viewItem == operation"
572
        }
573
      ],
574
      "commandPalette": [
575
        {
576
          "command": "oxygen.openFile",
577
          "when": "false"
578
        },
579
        {
580
          "command": "oxygen.openChanges",
581
          "when": "false"
582
        },
583
        {
584
          "command": "oxygen.openBaseVersion",
585
          "when": "false"
586
        },
587
        {
588
          "command": "oxygen.discard",
589
          "when": "false"
590
        },
591
        {
592
          "command": "oxygen.commitSelected",
593
          "when": "false"
594
        },
595
        {
596
          "command": "oxygen.undoTo",
597
          "when": "false"
598
        },
599
        {
600
          "command": "oxygen.refreshOperations",
601
          "when": "false"
602
        },
603
        {
604
          "command": "oxygen.showChange",
605
          "when": "false"
606
        },
607
        {
608
          "command": "oxygen.acceptSides",
609
          "when": "false"
610
        },
611
        {
612
          "command": "oxygen.keepCandidate",
613
          "when": "false"
614
        },
615
        {
616
          "command": "oxygen.openConflict",
617
          "when": "false"
618
        },
619
        {
620
          "command": "oxygen.openSubrepo",
621
          "when": "false"
622
        },
623
        {
624
          "command": "oxygen.updateSubrepo",
625
          "when": "false"
626
        },
627
        {
628
          "command": "oxygen.refreshBisect",
629
          "when": "false"
630
        },
631
        {
632
          "command": "oxygen.refreshTrust",
633
          "when": "false"
634
        },
635
        {
636
          "command": "oxygen.history.split",
637
          "when": "false"
638
        },
639
        {
640
          "command": "oxygen.history.squash",
641
          "when": "false"
642
        },
643
        {
644
          "command": "oxygen.history.rebase",
645
          "when": "false"
646
        }
647
      ],
648
      "editor/title/context": [
649
        {
650
          "command": "oxygen.openOnRemote",
651
          "when": "oxygen.hasRemoteProvider",
652
          "group": "oxygen"
653
        }
654
      ],
655
      "webview/context": [
656
        {
657
          "command": "oxygen.history.split",
658
          "when": "webviewId == 'oxygen.history' && webviewSection == 'change' && oxygenHead",
659
          "group": "oxygen@1"
660
        },
661
        {
662
          "command": "oxygen.history.squash",
663
          "when": "webviewId == 'oxygen.history' && webviewSection == 'change' && oxygenHasDeps",
664
          "group": "oxygen@2"
665
        },
666
        {
667
          "command": "oxygen.history.rebase",
668
          "when": "webviewId == 'oxygen.history' && webviewSection == 'change'",
669
          "group": "oxygen@3"
670
        }
671
      ]
672
    },
673
    "configuration": {
674
      "title": "Oxygen",
675
      "properties": {
676
        "oxygen.path": {
677
          "type": "string",
678
          "default": "",
679
          "description": "Path to the oxy binary. Empty means oxy on PATH, then ~/.local/bin/oxy."
680
        },
681
        "oxygen.autoRefresh": {
682
          "type": "boolean",
683
          "default": true,
684
          "description": "Refresh the source control view when files in the workspace change."
685
        },
686
        "oxygen.decorations.enabled": {
687
          "type": "boolean",
688
          "default": true,
689
          "description": "Show status decorations in the explorer and on editor tabs."
690
        },
691
        "oxygen.inlineBlame": {
692
          "type": "boolean",
693
          "default": false,
694
          "description": "Show each line's introducing change, author and age at the end of the line."
695
        },
696
        "oxygen.confirmSync": {
697
          "type": "boolean",
698
          "default": true,
699
          "description": "Ask before pushing."
700
        },
701
        "oxygen.showSnapshotOperations": {
702
          "type": "boolean",
703
          "default": false,
704
          "description": "List snapshot operations in the Oxygen Operations view."
705
        },
706
        "oxygen.statusBar.enabled": {
707
          "type": "boolean",
708
          "default": true,
709
          "description": "Show the bookmark, working copy and state in the status bar."
710
        }
711
      }
712
    }
713
  },
714
  "scripts": {
715
    "build": "esbuild src/extension.ts --bundle --platform=node --format=cjs --external:vscode --outfile=dist/extension.js --sourcemap",
716
    "watch": "npm run build -- --watch",
717
    "typecheck": "tsc --noEmit -p .",
718
    "pretest": "esbuild src/oxy.ts --bundle --platform=node --format=esm --outfile=out/oxy.mjs && esbuild src/diffutil.ts --bundle --platform=node --format=esm --outfile=out/diffutil.mjs && esbuild src/markers.ts --bundle --platform=node --format=esm --outfile=out/markers.mjs && esbuild src/api.ts --bundle --platform=node --format=esm --outfile=out/api.mjs",
719
    "test": "node --test \"test/**/*.test.mjs\"",
720
    "check": "npm run typecheck && npm run build && npm test",
721
    "package": "vsce package --no-dependencies"
722
  },
723
  "devDependencies": {
724
    "@types/node": "^24.0.0",
725
    "@types/vscode": "^1.137.0",
726
    "@vscode/vsce": "^4.0.0",
727
    "esbuild": "^0.28.0",
728
    "typescript": "^5.9.0"
729
  }
730
}