OXYGENHUB
# 813df1a92fbb oxygen-vscode / package.json
35.8 KiB · JSON · last changed 0.16.0: published by OxygenHub.io 1 month ago source blame history raw
bed495a9 Andy McCall ↶ 1
{
2
  "name": "oxygen-vscode",
3
  "displayName": "Oxygen",
4
  "description": "Oxygen version control: source control view, diffs, decorations, bookmarks and history for oxy repositories",
813df1a9 Andy McCall ↶ 5
  "version": "0.16.0",
6
  "publisher": "oxygenhub",
7
  "author": {
8
    "name": "OxygenHub.io",
9
    "url": "https://oxygenhub.io"
10
  },
11
  "homepage": "https://oxygenhub.io/andymccall/oxygen-vscode",
12
  "repository": {
13
    "type": "oxygen",
14
    "url": "https://oxygenhub.io/andymccall/oxygen-vscode"
15
  },
16
  "bugs": {
17
    "url": "https://oxygenhub.io/andymccall/oxygen-vscode/issues"
18
  },
bed495a9 Andy McCall ↶ 19
  "license": "MIT OR Apache-2.0",
20
  "icon": "assets/images/oxygen.png",
21
  "engines": {
22
    "vscode": "^1.137.0"
23
  },
24
  "categories": [
25
    "SCM Providers"
26
  ],
27
  "keywords": [
28
    "oxygen",
29
    "oxy",
30
    "scm",
31
    "version control"
32
  ],
33
  "activationEvents": [
71d8bf97 Andy McCall ↶ 34
    "workspaceContains:.oxy/format",
35
    "workspaceContains:.oxy",
f532c426 Andy McCall ↶ 36
    "onStartupFinished",
37
    "onUri"
bed495a9 Andy McCall ↶ 38
  ],
39
  "main": "./dist/extension.js",
40
  "contributes": {
41
    "commands": [
f6bda77e Andy McCall ↶ 42
      {
43
        "command": "oxygen.refresh",
44
        "title": "Refresh",
45
        "category": "Oxygen",
46
        "icon": "$(refresh)"
47
      },
48
      {
49
        "command": "oxygen.commit",
50
        "title": "Commit",
51
        "category": "Oxygen",
52
        "icon": "$(check)"
53
      },
54
      {
55
        "command": "oxygen.openFile",
56
        "title": "Open File",
57
        "category": "Oxygen",
58
        "icon": "$(go-to-file)"
59
      },
60
      {
61
        "command": "oxygen.openChanges",
62
        "title": "Open Changes",
63
        "category": "Oxygen"
64
      },
65
      {
66
        "command": "oxygen.openBaseVersion",
67
        "title": "Open Base Version",
68
        "category": "Oxygen"
69
      },
70
      {
71
        "command": "oxygen.showOutput",
72
        "title": "Show Output",
73
        "category": "Oxygen"
74
      },
75
      {
76
        "command": "oxygen.showLog",
77
        "title": "Show Log",
78
        "category": "Oxygen"
79
      },
80
      {
81
        "command": "oxygen.init",
82
        "title": "Initialize Repository",
83
        "category": "Oxygen"
84
      },
85
      {
86
        "command": "oxygen.discard",
87
        "title": "Discard Changes",
88
        "category": "Oxygen",
89
        "icon": "$(discard)"
90
      },
91
      {
92
        "command": "oxygen.commitSelected",
93
        "title": "Commit Selected Paths",
94
        "category": "Oxygen"
95
      },
96
      {
97
        "command": "oxygen.commitHunks",
98
        "title": "Commit Hunks\u2026",
99
        "category": "Oxygen"
100
      },
101
      {
102
        "command": "oxygen.amend",
103
        "title": "Amend",
104
        "category": "Oxygen"
105
      },
106
      {
107
        "command": "oxygen.undo",
108
        "title": "Undo Last Operation",
109
        "category": "Oxygen",
110
        "icon": "$(discard)"
111
      },
112
      {
113
        "command": "oxygen.undoTo",
114
        "title": "Undo to Here",
115
        "category": "Oxygen",
116
        "icon": "$(discard)"
117
      },
118
      {
119
        "command": "oxygen.refreshOperations",
120
        "title": "Refresh Operations",
121
        "category": "Oxygen",
122
        "icon": "$(refresh)"
123
      },
124
      {
125
        "command": "oxygen.switchBookmark",
126
        "title": "Switch Bookmark\u2026",
127
        "category": "Oxygen",
128
        "icon": "$(bookmark)"
129
      },
130
      {
131
        "command": "oxygen.createBookmark",
132
        "title": "Create Bookmark\u2026",
133
        "category": "Oxygen"
134
      },
135
      {
136
        "command": "oxygen.mergeBookmark",
137
        "title": "Merge Bookmark\u2026",
138
        "category": "Oxygen"
139
      },
140
      {
141
        "command": "oxygen.deleteBookmark",
142
        "title": "Delete Bookmark\u2026",
143
        "category": "Oxygen"
144
      },
145
      {
146
        "command": "oxygen.fetch",
147
        "title": "Fetch",
148
        "category": "Oxygen"
149
      },
150
      {
151
        "command": "oxygen.pull",
152
        "title": "Pull",
153
        "category": "Oxygen"
154
      },
155
      {
156
        "command": "oxygen.push",
157
        "title": "Push",
158
        "category": "Oxygen"
159
      },
160
      {
161
        "command": "oxygen.pushBookmark",
162
        "title": "Push Bookmark\u2026",
163
        "category": "Oxygen"
164
      },
165
      {
166
        "command": "oxygen.sync",
167
        "title": "Sync",
168
        "category": "Oxygen",
169
        "icon": "$(sync)"
170
      },
171
      {
172
        "command": "oxygen.showHistory",
173
        "title": "Show History",
174
        "category": "Oxygen",
175
        "icon": "$(git-commit)"
176
      },
177
      {
178
        "command": "oxygen.fileHistory",
179
        "title": "File History\u2026",
180
        "category": "Oxygen",
181
        "icon": "$(history)"
182
      },
183
      {
184
        "command": "oxygen.toggleBlame",
185
        "title": "Toggle Inline Blame",
186
        "category": "Oxygen"
187
      },
188
      {
189
        "command": "oxygen.showChange",
190
        "title": "Show Change",
191
        "category": "Oxygen"
192
      },
193
      {
194
        "command": "oxygen.acceptSides",
195
        "title": "Accept Conflict Sides",
196
        "category": "Oxygen"
197
      },
198
      {
199
        "command": "oxygen.keepCandidate",
200
        "title": "Keep This Candidate",
201
        "category": "Oxygen",
202
        "icon": "$(check)"
203
      },
204
      {
205
        "command": "oxygen.markResolved",
206
        "title": "Mark Resolved",
207
        "category": "Oxygen",
208
        "icon": "$(check-all)"
209
      },
210
      {
211
        "command": "oxygen.openConflict",
212
        "title": "Open Conflict",
213
        "category": "Oxygen"
214
      },
215
      {
216
        "command": "oxygen.openSubrepo",
217
        "title": "Open Subrepo",
218
        "category": "Oxygen"
219
      },
220
      {
221
        "command": "oxygen.updateSubrepo",
222
        "title": "Update to Pin",
223
        "category": "Oxygen",
224
        "icon": "$(cloud-download)"
225
      },
226
      {
227
        "command": "oxygen.updateSubrepos",
228
        "title": "Update Subrepos",
229
        "category": "Oxygen"
230
      },
231
      {
232
        "command": "oxygen.bisectStart",
233
        "title": "Bisect: Start",
234
        "category": "Oxygen"
235
      },
236
      {
237
        "command": "oxygen.bisectGood",
238
        "title": "Bisect: Good",
239
        "category": "Oxygen"
240
      },
241
      {
242
        "command": "oxygen.bisectBad",
243
        "title": "Bisect: Bad",
244
        "category": "Oxygen"
245
      },
246
      {
247
        "command": "oxygen.bisectSkip",
248
        "title": "Bisect: Skip",
249
        "category": "Oxygen"
250
      },
251
      {
252
        "command": "oxygen.bisectRun",
253
        "title": "Bisect: Run\u2026",
254
        "category": "Oxygen"
255
      },
256
      {
257
        "command": "oxygen.bisectReset",
258
        "title": "Bisect: Reset",
259
        "category": "Oxygen"
260
      },
261
      {
262
        "command": "oxygen.refreshBisect",
263
        "title": "Refresh",
264
        "category": "Oxygen",
265
        "icon": "$(refresh)"
266
      },
267
      {
268
        "command": "oxygen.refreshTrust",
269
        "title": "Refresh",
270
        "category": "Oxygen",
271
        "icon": "$(refresh)"
272
      },
273
      {
274
        "command": "oxygen.verify",
275
        "title": "Verify Signatures",
276
        "category": "Oxygen"
277
      },
278
      {
279
        "command": "oxygen.tags",
280
        "title": "Tags\u2026",
281
        "category": "Oxygen"
282
      },
283
      {
284
        "command": "oxygen.createTag",
285
        "title": "Create Tag\u2026",
286
        "category": "Oxygen"
287
      },
288
      {
289
        "command": "oxygen.addWorkspace",
290
        "title": "Add Workspace\u2026",
291
        "category": "Oxygen"
292
      },
293
      {
294
        "command": "oxygen.clone",
295
        "title": "Clone Repository\u2026",
296
        "category": "Oxygen"
297
      },
298
      {
299
        "command": "oxygen.openOnRemote",
300
        "title": "Open on Remote",
301
        "category": "Oxygen",
302
        "icon": "$(link-external)"
303
      },
304
      {
305
        "command": "oxygen.openChangeOnRemote",
306
        "title": "Open Change on Remote",
307
        "category": "Oxygen"
b4626290 Andy McCall ↶ 308
      },
309
      {
310
        "command": "oxygen.history.split",
311
        "title": "Split\u2026",
312
        "category": "Oxygen",
313
        "icon": "$(split-horizontal)"
314
      },
315
      {
316
        "command": "oxygen.history.squash",
317
        "title": "Squash into a Dependency\u2026",
318
        "category": "Oxygen",
319
        "icon": "$(fold)"
320
      },
321
      {
322
        "command": "oxygen.history.rebase",
323
        "title": "Rebase onto\u2026",
324
        "category": "Oxygen",
325
        "icon": "$(git-pull-request-go-to-changes)"
44bfd5ad Andy McCall ↶ 326
      },
327
      {
328
        "command": "oxygen.amendMode",
329
        "title": "Amend Mode",
330
        "category": "Oxygen",
331
        "icon": "$(edit)"
332
      },
333
      {
334
        "command": "oxygen.leaveAmendMode",
335
        "title": "Leave Amend Mode",
336
        "category": "Oxygen",
337
        "icon": "$(close)"
338
      },
339
      {
340
        "command": "oxygen.messageHistory",
341
        "title": "Previous Commit Messages\u2026",
342
        "category": "Oxygen",
343
        "icon": "$(history)"
1f7fc1e3 Andy McCall ↶ 344
      },
345
      {
346
        "command": "oxygen.copyRemoteLink",
347
        "title": "Copy Remote Link",
348
        "category": "Oxygen",
349
        "icon": "$(link)"
350
      },
351
      {
352
        "command": "oxygen.copyPermalink",
353
        "title": "Copy Permalink",
354
        "category": "Oxygen",
355
        "icon": "$(pinned)"
013fefef Andy McCall ↶ 356
      },
357
      {
358
        "command": "oxygen.createIdentity",
359
        "title": "Create Identity\u2026",
360
        "category": "Oxygen"
f6bda77e Andy McCall ↶ 361
      }
810a1c53 Andy McCall ↶ 362
    ],
35d56b58 Andy McCall ↶ 363
    "views": {
364
      "scm": [
f6bda77e Andy McCall ↶ 365
        {
366
          "id": "oxygen.operations",
367
          "name": "Oxygen Operations",
368
          "when": "oxygen.hasRepository",
369
          "icon": "assets/images/oxygen.svg",
370
          "visibility": "collapsed"
371
        },
372
        {
373
          "id": "oxygen.bisect",
374
          "name": "Oxygen Bisect",
375
          "when": "oxygen.hasRepository",
376
          "icon": "assets/images/oxygen.svg",
377
          "visibility": "collapsed"
378
        },
379
        {
380
          "id": "oxygen.trust",
381
          "name": "Oxygen Trust",
382
          "when": "oxygen.hasRepository",
383
          "icon": "assets/images/oxygen.svg",
384
          "visibility": "collapsed"
385
        }
35d56b58 Andy McCall ↶ 386
      ]
387
    },
810a1c53 Andy McCall ↶ 388
    "viewsWelcome": [
389
      {
390
        "view": "scm",
391
        "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)",
392
        "when": "workbenchState != empty && !oxygen.hasRepository"
393
      }
bed495a9 Andy McCall ↶ 394
    ],
395
    "menus": {
396
      "scm/title": [
f6bda77e Andy McCall ↶ 397
        {
398
          "command": "oxygen.commit",
399
          "group": "navigation@1",
400
          "when": "scmProvider == oxygen"
401
        },
402
        {
403
          "command": "oxygen.sync",
404
          "group": "navigation@2",
405
          "when": "scmProvider == oxygen"
406
        },
407
        {
408
          "command": "oxygen.refresh",
409
          "group": "navigation@3",
410
          "when": "scmProvider == oxygen"
411
        },
412
        {
413
          "command": "oxygen.pull",
414
          "group": "4_sync@1",
415
          "when": "scmProvider == oxygen"
416
        },
417
        {
418
          "command": "oxygen.push",
419
          "group": "4_sync@2",
420
          "when": "scmProvider == oxygen"
421
        },
422
        {
423
          "command": "oxygen.pushBookmark",
424
          "group": "4_sync@3",
425
          "when": "scmProvider == oxygen"
426
        },
427
        {
428
          "command": "oxygen.fetch",
429
          "group": "4_sync@4",
430
          "when": "scmProvider == oxygen"
431
        },
432
        {
433
          "command": "oxygen.switchBookmark",
434
          "group": "5_bookmarks@1",
435
          "when": "scmProvider == oxygen"
436
        },
437
        {
438
          "command": "oxygen.createBookmark",
439
          "group": "5_bookmarks@2",
440
          "when": "scmProvider == oxygen"
441
        },
442
        {
443
          "command": "oxygen.mergeBookmark",
444
          "group": "5_bookmarks@3",
445
          "when": "scmProvider == oxygen"
446
        },
447
        {
448
          "command": "oxygen.deleteBookmark",
449
          "group": "5_bookmarks@4",
450
          "when": "scmProvider == oxygen"
451
        },
452
        {
453
          "command": "oxygen.tags",
454
          "group": "6_more@1",
455
          "when": "scmProvider == oxygen"
456
        },
457
        {
458
          "command": "oxygen.createTag",
459
          "group": "6_more@2",
460
          "when": "scmProvider == oxygen"
461
        },
462
        {
463
          "command": "oxygen.addWorkspace",
464
          "group": "6_more@3",
465
          "when": "scmProvider == oxygen"
466
        },
467
        {
468
          "command": "oxygen.updateSubrepos",
469
          "group": "6_more@4",
470
          "when": "scmProvider == oxygen"
471
        },
472
        {
473
          "command": "oxygen.verify",
474
          "group": "6_more@5",
475
          "when": "scmProvider == oxygen"
476
        },
477
        {
478
          "command": "oxygen.commitHunks",
479
          "group": "2_commit@1",
480
          "when": "scmProvider == oxygen"
481
        },
482
        {
483
          "command": "oxygen.amend",
484
          "group": "2_commit@2",
485
          "when": "scmProvider == oxygen"
486
        },
487
        {
488
          "command": "oxygen.undo",
489
          "group": "3_undo",
490
          "when": "scmProvider == oxygen"
491
        },
492
        {
493
          "command": "oxygen.markResolved",
494
          "group": "2_commit@3",
495
          "when": "scmProvider == oxygen"
496
        },
497
        {
498
          "command": "oxygen.showHistory",
499
          "group": "1_view@1",
500
          "when": "scmProvider == oxygen"
501
        },
502
        {
503
          "command": "oxygen.showLog",
504
          "group": "1_view@2",
505
          "when": "scmProvider == oxygen"
506
        },
507
        {
508
          "command": "oxygen.showOutput",
509
          "group": "1_view@3",
510
          "when": "scmProvider == oxygen"
511
        },
512
        {
513
          "command": "oxygen.openOnRemote",
514
          "when": "scmProvider == oxygen",
515
          "group": "navigation@9"
44bfd5ad Andy McCall ↶ 516
        },
517
        {
518
          "command": "oxygen.amendMode",
519
          "group": "navigation@4",
520
          "when": "scmProvider == oxygen && !oxygen.amending"
521
        },
522
        {
523
          "command": "oxygen.leaveAmendMode",
524
          "group": "navigation@4",
525
          "when": "scmProvider == oxygen && oxygen.amending"
526
        },
527
        {
528
          "command": "oxygen.messageHistory",
529
          "group": "2_commit@4",
530
          "when": "scmProvider == oxygen"
f6bda77e Andy McCall ↶ 531
        }
ab81294a Andy McCall ↶ 532
      ],
533
      "editor/title": [
f6bda77e Andy McCall ↶ 534
        {
535
          "command": "oxygen.fileHistory",
536
          "group": "navigation@9",
537
          "when": "oxygen.hasRepository && resourceScheme == file"
538
        }
bed495a9 Andy McCall ↶ 539
      ],
ab81294a Andy McCall ↶ 540
      "editor/context": [
f6bda77e Andy McCall ↶ 541
        {
542
          "command": "oxygen.toggleBlame",
543
          "group": "oxygen@1",
544
          "when": "oxygen.hasRepository && resourceScheme == file"
545
        },
546
        {
547
          "command": "oxygen.fileHistory",
548
          "group": "oxygen@2",
549
          "when": "oxygen.hasRepository && resourceScheme == file"
1f7fc1e3 Andy McCall ↶ 550
        },
551
        {
552
          "command": "oxygen.openOnRemote",
553
          "when": "oxygen.hasRemoteProvider && resourceScheme == file",
554
          "group": "9_oxygen@1"
555
        },
556
        {
557
          "command": "oxygen.copyRemoteLink",
558
          "when": "oxygen.hasRemoteProvider && resourceScheme == file",
559
          "group": "9_oxygen@2"
560
        },
561
        {
562
          "command": "oxygen.copyPermalink",
563
          "when": "oxygen.hasRemoteProvider && resourceScheme == file",
564
          "group": "9_oxygen@3"
f6bda77e Andy McCall ↶ 565
        }
ab81294a Andy McCall ↶ 566
      ],
567
      "explorer/context": [
f6bda77e Andy McCall ↶ 568
        {
569
          "command": "oxygen.fileHistory",
570
          "group": "7_modification@9",
571
          "when": "oxygen.hasRepository && !explorerResourceIsFolder"
572
        }
ab81294a Andy McCall ↶ 573
      ],
bed495a9 Andy McCall ↶ 574
      "scm/resourceState/context": [
f6bda77e Andy McCall ↶ 575
        {
576
          "command": "oxygen.openFile",
577
          "group": "inline@1",
578
          "when": "scmProvider == oxygen"
579
        },
580
        {
581
          "command": "oxygen.discard",
582
          "group": "inline@2",
583
          "when": "scmProvider == oxygen"
584
        },
585
        {
586
          "command": "oxygen.openChanges",
587
          "group": "navigation",
588
          "when": "scmProvider == oxygen"
589
        },
590
        {
591
          "command": "oxygen.openBaseVersion",
592
          "group": "navigation",
593
          "when": "scmProvider == oxygen"
594
        },
595
        {
596
          "command": "oxygen.commitSelected",
597
          "group": "1_modification@1",
598
          "when": "scmProvider == oxygen"
599
        },
600
        {
601
          "command": "oxygen.discard",
602
          "group": "1_modification@2",
603
          "when": "scmProvider == oxygen"
604
        },
605
        {
606
          "command": "oxygen.keepCandidate",
607
          "group": "inline@0",
608
          "when": "scmProvider == oxygen && scmResourceState == candidate"
609
        },
610
        {
611
          "command": "oxygen.updateSubrepo",
612
          "group": "inline@0",
613
          "when": "scmProvider == oxygen && scmResourceState == subrepo"
614
        },
615
        {
616
          "command": "oxygen.keepCandidate",
617
          "group": "0_conflict",
618
          "when": "scmProvider == oxygen && scmResourceState == candidate"
619
        }
25103ddd Andy McCall ↶ 620
      ],
621
      "scm/resourceGroup/context": [
f6bda77e Andy McCall ↶ 622
        {
623
          "command": "oxygen.markResolved",
624
          "group": "inline",
625
          "when": "scmProvider == oxygen && scmResourceGroup == conflicts"
626
        }
bed495a9 Andy McCall ↶ 627
      ],
35d56b58 Andy McCall ↶ 628
      "view/title": [
f6bda77e Andy McCall ↶ 629
        {
630
          "command": "oxygen.refreshOperations",
631
          "group": "navigation",
632
          "when": "view == oxygen.operations"
633
        },
634
        {
635
          "command": "oxygen.refreshBisect",
636
          "group": "navigation",
637
          "when": "view == oxygen.bisect"
638
        },
639
        {
640
          "command": "oxygen.refreshTrust",
641
          "group": "navigation",
642
          "when": "view == oxygen.trust"
643
        }
35d56b58 Andy McCall ↶ 644
      ],
645
      "view/item/context": [
f6bda77e Andy McCall ↶ 646
        {
647
          "command": "oxygen.undoTo",
648
          "group": "inline",
649
          "when": "view == oxygen.operations && viewItem == operation"
650
        }
35d56b58 Andy McCall ↶ 651
      ],
bed495a9 Andy McCall ↶ 652
      "commandPalette": [
f6bda77e Andy McCall ↶ 653
        {
654
          "command": "oxygen.openFile",
655
          "when": "false"
656
        },
657
        {
658
          "command": "oxygen.openChanges",
659
          "when": "false"
660
        },
661
        {
662
          "command": "oxygen.openBaseVersion",
663
          "when": "false"
664
        },
665
        {
666
          "command": "oxygen.discard",
667
          "when": "false"
668
        },
669
        {
670
          "command": "oxygen.commitSelected",
671
          "when": "false"
672
        },
673
        {
674
          "command": "oxygen.undoTo",
675
          "when": "false"
676
        },
677
        {
678
          "command": "oxygen.refreshOperations",
679
          "when": "false"
680
        },
681
        {
682
          "command": "oxygen.showChange",
683
          "when": "false"
684
        },
685
        {
686
          "command": "oxygen.acceptSides",
687
          "when": "false"
688
        },
689
        {
690
          "command": "oxygen.keepCandidate",
691
          "when": "false"
692
        },
693
        {
694
          "command": "oxygen.openConflict",
695
          "when": "false"
696
        },
697
        {
698
          "command": "oxygen.openSubrepo",
699
          "when": "false"
700
        },
701
        {
702
          "command": "oxygen.updateSubrepo",
703
          "when": "false"
704
        },
705
        {
706
          "command": "oxygen.refreshBisect",
707
          "when": "false"
708
        },
709
        {
710
          "command": "oxygen.refreshTrust",
b4626290 Andy McCall ↶ 711
          "when": "false"
712
        },
713
        {
714
          "command": "oxygen.history.split",
f6bda77e Andy McCall ↶ 715
          "when": "false"
b4626290 Andy McCall ↶ 716
        },
717
        {
718
          "command": "oxygen.history.squash",
719
          "when": "false"
720
        },
721
        {
722
          "command": "oxygen.history.rebase",
723
          "when": "false"
f6bda77e Andy McCall ↶ 724
        }
725
      ],
726
      "editor/title/context": [
727
        {
728
          "command": "oxygen.openOnRemote",
729
          "when": "oxygen.hasRemoteProvider",
1f7fc1e3 Andy McCall ↶ 730
          "group": "oxygen@1"
731
        },
732
        {
733
          "command": "oxygen.copyPermalink",
734
          "when": "oxygen.hasRemoteProvider",
735
          "group": "oxygen@2"
b4626290 Andy McCall ↶ 736
        }
737
      ],
738
      "webview/context": [
739
        {
740
          "command": "oxygen.history.split",
741
          "when": "webviewId == 'oxygen.history' && webviewSection == 'change' && oxygenHead",
742
          "group": "oxygen@1"
743
        },
744
        {
745
          "command": "oxygen.history.squash",
746
          "when": "webviewId == 'oxygen.history' && webviewSection == 'change' && oxygenHasDeps",
747
          "group": "oxygen@2"
748
        },
749
        {
750
          "command": "oxygen.history.rebase",
751
          "when": "webviewId == 'oxygen.history' && webviewSection == 'change'",
1f7fc1e3 Andy McCall ↶ 752
          "group": "oxygen@3"
753
        }
754
      ],
755
      "editor/lineNumber/context": [
756
        {
757
          "command": "oxygen.openOnRemote",
758
          "when": "oxygen.hasRemoteProvider && resourceScheme == file",
759
          "group": "oxygen@1"
760
        },
761
        {
762
          "command": "oxygen.copyRemoteLink",
763
          "when": "oxygen.hasRemoteProvider && resourceScheme == file",
764
          "group": "oxygen@2"
765
        },
766
        {
767
          "command": "oxygen.copyPermalink",
768
          "when": "oxygen.hasRemoteProvider && resourceScheme == file",
b4626290 Andy McCall ↶ 769
          "group": "oxygen@3"
f6bda77e Andy McCall ↶ 770
        }
bed495a9 Andy McCall ↶ 771
      ]
772
    },
773
    "configuration": {
774
      "title": "Oxygen",
775
      "properties": {
776
        "oxygen.path": {
777
          "type": "string",
778
          "default": "",
779
          "description": "Path to the oxy binary. Empty means oxy on PATH, then ~/.local/bin/oxy."
780
        },
781
        "oxygen.autoRefresh": {
782
          "type": "boolean",
783
          "default": true,
784
          "description": "Refresh the source control view when files in the workspace change."
785
        },
786
        "oxygen.decorations.enabled": {
787
          "type": "boolean",
788
          "default": true,
789
          "description": "Show status decorations in the explorer and on editor tabs."
790
        },
ab81294a Andy McCall ↶ 791
        "oxygen.inlineBlame": {
792
          "type": "boolean",
793
          "default": false,
794
          "description": "Show each line's introducing change, author and age at the end of the line."
795
        },
c8f95589 Andy McCall ↶ 796
        "oxygen.confirmSync": {
797
          "type": "boolean",
798
          "default": true,
799
          "description": "Ask before pushing."
800
        },
35d56b58 Andy McCall ↶ 801
        "oxygen.showSnapshotOperations": {
802
          "type": "boolean",
803
          "default": false,
804
          "description": "List snapshot operations in the Oxygen Operations view."
805
        },
bed495a9 Andy McCall ↶ 806
        "oxygen.statusBar.enabled": {
807
          "type": "boolean",
808
          "default": true,
809
          "description": "Show the bookmark, working copy and state in the status bar."
013fefef Andy McCall ↶ 810
        }
811
      }
812
    },
813
    "colors": [
814
      {
b55e0d00 Andy McCall ↶ 815
        "id": "oxygen.accent",
816
        "description": "The Oxygen accent: the current operation, repositories, the status bar.",
817
        "defaults": {
818
          "dark": "#35C7FF",
819
          "light": "#0A74B8",
820
          "highContrast": "#35C7FF",
821
          "highContrastLight": "#0A74B8"
822
        }
823
      },
824
      {
825
        "id": "oxygen.commit",
826
        "description": "Commits, amends and splits in the Operations view.",
827
        "defaults": {
828
          "dark": "#5FE3A1",
829
          "light": "#1A7850",
830
          "highContrast": "#5FE3A1",
831
          "highContrastLight": "#1A7850"
832
        }
833
      },
834
      {
835
        "id": "oxygen.push",
836
        "description": "Pushes.",
837
        "defaults": {
838
          "dark": "#3D7BFF",
839
          "light": "#2553C9",
840
          "highContrast": "#3D7BFF",
841
          "highContrastLight": "#2553C9"
842
        }
843
      },
844
      {
845
        "id": "oxygen.pull",
846
        "description": "Pulls, fetches and clones.",
847
        "defaults": {
848
          "dark": "#2BD9B3",
849
          "light": "#0E8A70",
850
          "highContrast": "#2BD9B3",
851
          "highContrastLight": "#0E8A70"
852
        }
853
      },
854
      {
855
        "id": "oxygen.merge",
856
        "description": "Merges, rebases and resolutions.",
857
        "defaults": {
858
          "dark": "#8E7CFF",
859
          "light": "#5B45D6",
860
          "highContrast": "#8E7CFF",
861
          "highContrastLight": "#5B45D6"
862
        }
863
      },
864
      {
865
        "id": "oxygen.bookmark",
866
        "description": "Bookmarks and tags.",
867
        "defaults": {
868
          "dark": "#FFD166",
869
          "light": "#A36A00",
870
          "highContrast": "#FFD166",
871
          "highContrastLight": "#A36A00"
872
        }
873
      },
874
      {
875
        "id": "oxygen.switch",
876
        "description": "Checkouts and bookmark switches.",
877
        "defaults": {
878
          "dark": "#56A8FF",
879
          "light": "#1F6FC2",
880
          "highContrast": "#56A8FF",
881
          "highContrastLight": "#1F6FC2"
882
        }
883
      },
884
      {
885
        "id": "oxygen.undo",
886
        "description": "Undo, discard and abandon.",
887
        "defaults": {
888
          "dark": "#FFB454",
889
          "light": "#B35900",
890
          "highContrast": "#FFB454",
891
          "highContrastLight": "#B35900"
892
        }
893
      },
894
      {
895
        "id": "oxygen.good",
896
        "description": "Good: passing, verified, signed.",
897
        "defaults": {
898
          "dark": "#5FE3A1",
899
          "light": "#1A7850",
900
          "highContrast": "#5FE3A1",
901
          "highContrastLight": "#1A7850"
902
        }
903
      },
904
      {
905
        "id": "oxygen.bad",
906
        "description": "Bad: failing, invalid, expired.",
907
        "defaults": {
908
          "dark": "#FF5E7A",
909
          "light": "#C62D47",
910
          "highContrast": "#FF5E7A",
911
          "highContrastLight": "#C62D47"
912
        }
913
      },
914
      {
915
        "id": "oxygen.warning",
916
        "description": "Warnings and dirty working copies.",
917
        "defaults": {
918
          "dark": "#FFB454",
919
          "light": "#B35900",
920
          "highContrast": "#FFB454",
921
          "highContrastLight": "#B35900"
922
        }
923
      },
924
      {
925
        "id": "oxygen.key",
926
        "description": "Keys and roots in the Trust view.",
927
        "defaults": {
928
          "dark": "#FFD166",
929
          "light": "#A36A00",
930
          "highContrast": "#FFD166",
931
          "highContrastLight": "#A36A00"
932
        }
933
      },
934
      {
935
        "id": "oxygen.subrepo",
936
        "description": "Subrepos.",
937
        "defaults": {
938
          "dark": "#1FB6D6",
939
          "light": "#0B7C93",
940
          "highContrast": "#1FB6D6",
941
          "highContrastLight": "#0B7C93"
942
        }
943
      },
944
      {
013fefef Andy McCall ↶ 945
        "id": "oxygen.lane1",
946
        "description": "History graph: lane 1 (the Oxygen mark's palette).",
947
        "defaults": {
948
          "dark": "#35C7FF",
949
          "light": "#0A74B8",
950
          "highContrast": "#35C7FF",
951
          "highContrastLight": "#0A74B8"
952
        }
953
      },
954
      {
955
        "id": "oxygen.lane2",
956
        "description": "History graph: lane 2 (the Oxygen mark's palette).",
957
        "defaults": {
958
          "dark": "#3D7BFF",
959
          "light": "#2553C9",
960
          "highContrast": "#3D7BFF",
961
          "highContrastLight": "#2553C9"
962
        }
963
      },
964
      {
965
        "id": "oxygen.lane3",
966
        "description": "History graph: lane 3 (the Oxygen mark's palette).",
967
        "defaults": {
968
          "dark": "#2BD9B3",
969
          "light": "#0E8A70",
970
          "highContrast": "#2BD9B3",
971
          "highContrastLight": "#0E8A70"
972
        }
973
      },
974
      {
975
        "id": "oxygen.lane4",
976
        "description": "History graph: lane 4 (the Oxygen mark's palette).",
977
        "defaults": {
978
          "dark": "#8E7CFF",
979
          "light": "#5B45D6",
980
          "highContrast": "#8E7CFF",
981
          "highContrastLight": "#5B45D6"
982
        }
983
      },
984
      {
985
        "id": "oxygen.lane5",
986
        "description": "History graph: lane 5 (the Oxygen mark's palette).",
987
        "defaults": {
988
          "dark": "#56A8FF",
989
          "light": "#1F6FC2",
990
          "highContrast": "#56A8FF",
991
          "highContrastLight": "#1F6FC2"
992
        }
993
      },
994
      {
995
        "id": "oxygen.lane6",
996
        "description": "History graph: lane 6 (the Oxygen mark's palette).",
997
        "defaults": {
998
          "dark": "#5FE3A1",
999
          "light": "#1A7850",
1000
          "highContrast": "#5FE3A1",
1001
          "highContrastLight": "#1A7850"
1002
        }
1003
      },
1004
      {
1005
        "id": "oxygen.lane7",
1006
        "description": "History graph: lane 7 (the Oxygen mark's palette).",
1007
        "defaults": {
1008
          "dark": "#5B6CFF",
1009
          "light": "#3440B8",
1010
          "highContrast": "#5B6CFF",
1011
          "highContrastLight": "#3440B8"
1012
        }
1013
      },
1014
      {
1015
        "id": "oxygen.lane8",
1016
        "description": "History graph: lane 8 (the Oxygen mark's palette).",
1017
        "defaults": {
1018
          "dark": "#1FB6D6",
1019
          "light": "#0B7C93",
1020
          "highContrast": "#1FB6D6",
1021
          "highContrastLight": "#0B7C93"
1022
        }
1023
      },
1024
      {
1025
        "id": "oxygen.head",
1026
        "description": "A bookmark head in the history graph.",
1027
        "defaults": {
1028
          "dark": "#5FE3A1",
1029
          "light": "#1A7850",
1030
          "highContrast": "#5FE3A1",
1031
          "highContrastLight": "#1A7850"
1032
        }
1033
      },
1034
      {
1035
        "id": "oxygen.workingCopy",
1036
        "description": "The working copy in the history graph.",
1037
        "defaults": {
1038
          "dark": "#35C7FF",
1039
          "light": "#0A74B8",
1040
          "highContrast": "#35C7FF",
1041
          "highContrastLight": "#0A74B8"
1042
        }
1043
      },
1044
      {
1045
        "id": "oxygen.signed",
1046
        "description": "A change signed by its author.",
1047
        "defaults": {
1048
          "dark": "#5FE3A1",
1049
          "light": "#1A7850",
1050
          "highContrast": "#5FE3A1",
1051
          "highContrastLight": "#1A7850"
1052
        }
1053
      },
1054
      {
1055
        "id": "oxygen.sealed",
1056
        "description": "A change authenticated by a seal (one signature over a push).",
1057
        "defaults": {
1058
          "dark": "#8E7CFF",
1059
          "light": "#6B3FD1",
1060
          "highContrast": "#8E7CFF",
1061
          "highContrastLight": "#6B3FD1"
1062
        }
1063
      },
1064
      {
1065
        "id": "oxygen.invalid",
1066
        "description": "A signature that does not verify.",
1067
        "defaults": {
1068
          "dark": "#FF5E7A",
1069
          "light": "#C62D47",
1070
          "highContrast": "#FF5E7A",
1071
          "highContrastLight": "#C62D47"
1072
        }
1073
      },
1074
      {
1075
        "id": "oxygen.added",
1076
        "description": "A file the working copy adds. Defaults to Git's colour; themes can set Oxygen's apart.",
1077
        "defaults": {
1078
          "dark": "gitDecoration.addedResourceForeground",
1079
          "light": "gitDecoration.addedResourceForeground",
1080
          "highContrast": "gitDecoration.addedResourceForeground",
1081
          "highContrastLight": "gitDecoration.addedResourceForeground"
bed495a9 Andy McCall ↶ 1082
        }
013fefef Andy McCall ↶ 1083
      },
1084
      {
1085
        "id": "oxygen.modified",
1086
        "description": "A file the working copy changes. Defaults to Git's colour; themes can set Oxygen's apart.",
1087
        "defaults": {
1088
          "dark": "gitDecoration.modifiedResourceForeground",
1089
          "light": "gitDecoration.modifiedResourceForeground",
1090
          "highContrast": "gitDecoration.modifiedResourceForeground",
1091
          "highContrastLight": "gitDecoration.modifiedResourceForeground"
1092
        }
1093
      },
1094
      {
1095
        "id": "oxygen.removed",
1096
        "description": "A file the working copy removes. Defaults to Git's colour; themes can set Oxygen's apart.",
1097
        "defaults": {
1098
          "dark": "gitDecoration.deletedResourceForeground",
1099
          "light": "gitDecoration.deletedResourceForeground",
1100
          "highContrast": "gitDecoration.deletedResourceForeground",
1101
          "highContrastLight": "gitDecoration.deletedResourceForeground"
1102
        }
1103
      },
1104
      {
1105
        "id": "oxygen.renamed",
1106
        "description": "A file the working copy moves. Defaults to Git's colour; themes can set Oxygen's apart.",
1107
        "defaults": {
1108
          "dark": "gitDecoration.renamedResourceForeground",
1109
          "light": "gitDecoration.renamedResourceForeground",
1110
          "highContrast": "gitDecoration.renamedResourceForeground",
1111
          "highContrastLight": "gitDecoration.renamedResourceForeground"
1112
        }
1113
      },
1114
      {
1115
        "id": "oxygen.conflict",
1116
        "description": "A file with a conflict, or conflict markers left in it. Defaults to Git's colour; themes can set Oxygen's apart.",
1117
        "defaults": {
1118
          "dark": "gitDecoration.conflictingResourceForeground",
1119
          "light": "gitDecoration.conflictingResourceForeground",
1120
          "highContrast": "gitDecoration.conflictingResourceForeground",
1121
          "highContrastLight": "gitDecoration.conflictingResourceForeground"
1122
        }
1123
      },
1124
      {
1125
        "id": "oxygen.resolved",
1126
        "description": "A conflict marked resolved. Defaults to Git's colour; themes can set Oxygen's apart.",
1127
        "defaults": {
1128
          "dark": "gitDecoration.stageModifiedResourceForeground",
1129
          "light": "gitDecoration.stageModifiedResourceForeground",
1130
          "highContrast": "gitDecoration.stageModifiedResourceForeground",
1131
          "highContrastLight": "gitDecoration.stageModifiedResourceForeground"
1132
        }
1133
      }
1134
    ],
1135
    "walkthroughs": [
1136
      {
1137
        "id": "oxygen.gettingStarted",
1138
        "title": "Get started with Oxygen",
1139
        "description": "Sign, commit, branch without merges, push and see the history of an Oxygen repository.",
1140
        "steps": [
1141
          {
1142
            "id": "oxygen.identity",
1143
            "title": "Create your identity",
1144
            "description": "Every change you make is signed with a composite key (Ed25519 and ML-DSA-65) that names you. Make it once; every repository uses it.\n[Create Identity](command:oxygen.createIdentity)",
1145
            "media": {
1146
              "markdown": "walkthrough/identity.md"
1147
            },
1148
            "completionEvents": [
1149
              "onCommand:oxygen.createIdentity"
1150
            ]
1151
          },
1152
          {
1153
            "id": "oxygen.repository",
1154
            "title": "Open or clone a repository",
1155
            "description": "Clone one from your hub, start a new one here, or open a folder that already is one.\n[Clone Repository](command:oxygen.clone)\n[Initialize Repository](command:oxygen.init)",
1156
            "media": {
1157
              "markdown": "walkthrough/repository.md"
1158
            },
1159
            "completionEvents": [
1160
              "onContext:oxygen.hasRepository"
1161
            ]
1162
          },
1163
          {
1164
            "id": "oxygen.commit",
1165
            "title": "Commit a change",
1166
            "description": "Edit a file, write a message in the Source Control box and press Ctrl+Enter. There is no staging area: the change is what you see.\n[Open Source Control](command:workbench.view.scm)",
1167
            "media": {
1168
              "markdown": "walkthrough/commit.md"
1169
            },
1170
            "completionEvents": [
1171
              "onCommand:oxygen.commit"
1172
            ]
1173
          },
1174
          {
1175
            "id": "oxygen.bookmarks",
1176
            "title": "Bookmarks: branches without merges",
1177
            "description": "A bookmark names a state. Switch to a new one for a piece of work (take your edits along with *carry*), and merge it back: a merge is just the union of both, with no merge change.\n[Create Bookmark](command:oxygen.createBookmark)",
1178
            "media": {
1179
              "markdown": "walkthrough/bookmarks.md"
1180
            },
1181
            "completionEvents": [
1182
              "onCommand:oxygen.createBookmark"
1183
            ]
1184
          },
1185
          {
1186
            "id": "oxygen.push",
1187
            "title": "Push to your hub",
1188
            "description": "Publish your bookmark. The push seals your new changes with one signature and moves the bookmark on the hub, which runs its OxygenFlow pipeline.\n[Push](command:oxygen.push)",
1189
            "media": {
1190
              "markdown": "walkthrough/push.md"
1191
            },
1192
            "completionEvents": [
1193
              "onCommand:oxygen.push"
1194
            ]
1195
          },
1196
          {
1197
            "id": "oxygen.history",
1198
            "title": "See the history",
1199
            "description": "Changes form a graph, not a line: independent work runs in its own lane, in the Oxygen colours.\n[Show History](command:oxygen.showHistory)",
1200
            "media": {
1201
              "markdown": "walkthrough/history.md"
1202
            },
1203
            "completionEvents": [
1204
              "onCommand:oxygen.showHistory"
1205
            ]
1206
          }
1207
        ]
bed495a9 Andy McCall ↶ 1208
      }
013fefef Andy McCall ↶ 1209
    ]
bed495a9 Andy McCall ↶ 1210
  },
1211
  "scripts": {
1212
    "build": "esbuild src/extension.ts --bundle --platform=node --format=cjs --external:vscode --outfile=dist/extension.js --sourcemap",
1213
    "watch": "npm run build -- --watch",
1214
    "typecheck": "tsc --noEmit -p .",
b55e0d00 Andy McCall ↶ 1215
    "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 && esbuild src/commitbox.ts --bundle --platform=node --format=esm --outfile=out/commitbox.mjs && esbuild src/handoff.ts --bundle --platform=node --format=esm --outfile=out/handoff.mjs && esbuild src/paths.ts --bundle --platform=node --format=esm --outfile=out/paths.mjs && esbuild src/looks.ts --bundle --platform=node --format=esm --outfile=out/looks.mjs",
bed495a9 Andy McCall ↶ 1216
    "test": "node --test \"test/**/*.test.mjs\"",
1217
    "check": "npm run typecheck && npm run build && npm test",
1218
    "package": "vsce package --no-dependencies"
1219
  },
1220
  "devDependencies": {
1221
    "@types/node": "^24.0.0",
1222
    "@types/vscode": "^1.137.0",
1223
    "@vscode/vsce": "^4.0.0",
1224
    "esbuild": "^0.28.0",
1225
    "typescript": "^5.9.0"
1226
  }
1227
}