OXYGENHUB
# 25103dddd993 oxygen-vscode / package.json
10.9 KiB · JSON · last changed Milestone 0.5: conflict editor CodeLens over oxy markers, keep-this-candidate for tree conflicts, mark resolved, commit resolution label 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.5.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
      { "command": "oxygen.refresh", "title": "Refresh", "category": "Oxygen", "icon": "$(refresh)" },
30
      { "command": "oxygen.commit", "title": "Commit", "category": "Oxygen", "icon": "$(check)" },
31
      { "command": "oxygen.openFile", "title": "Open File", "category": "Oxygen", "icon": "$(go-to-file)" },
32
      { "command": "oxygen.openChanges", "title": "Open Changes", "category": "Oxygen" },
33
      { "command": "oxygen.openBaseVersion", "title": "Open Base Version", "category": "Oxygen" },
34
      { "command": "oxygen.showOutput", "title": "Show Output", "category": "Oxygen" },
35
      { "command": "oxygen.showLog", "title": "Show Log", "category": "Oxygen" },
36
      { "command": "oxygen.init", "title": "Initialize Repository", "category": "Oxygen" },
37
      { "command": "oxygen.discard", "title": "Discard Changes", "category": "Oxygen", "icon": "$(discard)" },
38
      { "command": "oxygen.commitSelected", "title": "Commit Selected Paths", "category": "Oxygen" },
39
      { "command": "oxygen.commitHunks", "title": "Commit Hunks…", "category": "Oxygen" },
40
      { "command": "oxygen.amend", "title": "Amend", "category": "Oxygen" },
41
      { "command": "oxygen.undo", "title": "Undo Last Operation", "category": "Oxygen", "icon": "$(discard)" },
42
      { "command": "oxygen.undoTo", "title": "Undo to Here", "category": "Oxygen", "icon": "$(discard)" },
43
      { "command": "oxygen.refreshOperations", "title": "Refresh Operations", "category": "Oxygen", "icon": "$(refresh)" },
44
      { "command": "oxygen.switchBookmark", "title": "Switch Bookmark…", "category": "Oxygen", "icon": "$(bookmark)" },
45
      { "command": "oxygen.createBookmark", "title": "Create Bookmark…", "category": "Oxygen" },
46
      { "command": "oxygen.mergeBookmark", "title": "Merge Bookmark…", "category": "Oxygen" },
47
      { "command": "oxygen.deleteBookmark", "title": "Delete Bookmark…", "category": "Oxygen" },
48
      { "command": "oxygen.fetch", "title": "Fetch", "category": "Oxygen" },
49
      { "command": "oxygen.pull", "title": "Pull", "category": "Oxygen" },
50
      { "command": "oxygen.push", "title": "Push", "category": "Oxygen" },
51
      { "command": "oxygen.pushBookmark", "title": "Push Bookmark…", "category": "Oxygen" },
52
      { "command": "oxygen.sync", "title": "Sync", "category": "Oxygen", "icon": "$(sync)" },
53
      { "command": "oxygen.showHistory", "title": "Show History", "category": "Oxygen", "icon": "$(git-commit)" },
54
      { "command": "oxygen.fileHistory", "title": "File History…", "category": "Oxygen", "icon": "$(history)" },
55
      { "command": "oxygen.toggleBlame", "title": "Toggle Inline Blame", "category": "Oxygen" },
56
      { "command": "oxygen.showChange", "title": "Show Change", "category": "Oxygen" },
57
      { "command": "oxygen.acceptSides", "title": "Accept Conflict Sides", "category": "Oxygen" },
58
      { "command": "oxygen.keepCandidate", "title": "Keep This Candidate", "category": "Oxygen", "icon": "$(check)" },
59
      { "command": "oxygen.markResolved", "title": "Mark Resolved", "category": "Oxygen", "icon": "$(check-all)" },
60
      { "command": "oxygen.openConflict", "title": "Open Conflict", "category": "Oxygen" }
61
    ],
62
    "views": {
63
      "scm": [
64
        { "id": "oxygen.operations", "name": "Oxygen Operations", "when": "oxygen.hasRepository", "icon": "assets/images/oxygen.svg", "visibility": "collapsed" }
65
      ]
66
    },
67
    "viewsWelcome": [
68
      {
69
        "view": "scm",
70
        "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)",
71
        "when": "workbenchState != empty && !oxygen.hasRepository"
72
      }
73
    ],
74
    "menus": {
75
      "scm/title": [
76
        { "command": "oxygen.commit", "group": "navigation@1", "when": "scmProvider == oxygen" },
77
        { "command": "oxygen.sync", "group": "navigation@2", "when": "scmProvider == oxygen" },
78
        { "command": "oxygen.refresh", "group": "navigation@3", "when": "scmProvider == oxygen" },
79
        { "command": "oxygen.pull", "group": "4_sync@1", "when": "scmProvider == oxygen" },
80
        { "command": "oxygen.push", "group": "4_sync@2", "when": "scmProvider == oxygen" },
81
        { "command": "oxygen.pushBookmark", "group": "4_sync@3", "when": "scmProvider == oxygen" },
82
        { "command": "oxygen.fetch", "group": "4_sync@4", "when": "scmProvider == oxygen" },
83
        { "command": "oxygen.switchBookmark", "group": "5_bookmarks@1", "when": "scmProvider == oxygen" },
84
        { "command": "oxygen.createBookmark", "group": "5_bookmarks@2", "when": "scmProvider == oxygen" },
85
        { "command": "oxygen.mergeBookmark", "group": "5_bookmarks@3", "when": "scmProvider == oxygen" },
86
        { "command": "oxygen.deleteBookmark", "group": "5_bookmarks@4", "when": "scmProvider == oxygen" },
87
        { "command": "oxygen.commitHunks", "group": "2_commit@1", "when": "scmProvider == oxygen" },
88
        { "command": "oxygen.amend", "group": "2_commit@2", "when": "scmProvider == oxygen" },
89
        { "command": "oxygen.undo", "group": "3_undo", "when": "scmProvider == oxygen" },
90
        { "command": "oxygen.markResolved", "group": "2_commit@3", "when": "scmProvider == oxygen" },
91
        { "command": "oxygen.showHistory", "group": "1_view@1", "when": "scmProvider == oxygen" },
92
        { "command": "oxygen.showLog", "group": "1_view@2", "when": "scmProvider == oxygen" },
93
        { "command": "oxygen.showOutput", "group": "1_view@3", "when": "scmProvider == oxygen" }
94
      ],
95
      "editor/title": [
96
        { "command": "oxygen.fileHistory", "group": "navigation@9", "when": "oxygen.hasRepository && resourceScheme == file" }
97
      ],
98
      "editor/context": [
99
        { "command": "oxygen.toggleBlame", "group": "oxygen@1", "when": "oxygen.hasRepository && resourceScheme == file" },
100
        { "command": "oxygen.fileHistory", "group": "oxygen@2", "when": "oxygen.hasRepository && resourceScheme == file" }
101
      ],
102
      "explorer/context": [
103
        { "command": "oxygen.fileHistory", "group": "7_modification@9", "when": "oxygen.hasRepository && !explorerResourceIsFolder" }
104
      ],
105
      "scm/resourceState/context": [
106
        { "command": "oxygen.openFile", "group": "inline@1", "when": "scmProvider == oxygen" },
107
        { "command": "oxygen.discard", "group": "inline@2", "when": "scmProvider == oxygen" },
108
        { "command": "oxygen.openChanges", "group": "navigation", "when": "scmProvider == oxygen" },
109
        { "command": "oxygen.openBaseVersion", "group": "navigation", "when": "scmProvider == oxygen" },
110
        { "command": "oxygen.commitSelected", "group": "1_modification@1", "when": "scmProvider == oxygen" },
111
        { "command": "oxygen.discard", "group": "1_modification@2", "when": "scmProvider == oxygen" },
112
        { "command": "oxygen.keepCandidate", "group": "inline@0", "when": "scmProvider == oxygen && scmResourceState == candidate" },
113
        { "command": "oxygen.keepCandidate", "group": "0_conflict", "when": "scmProvider == oxygen && scmResourceState == candidate" }
114
      ],
115
      "scm/resourceGroup/context": [
116
        { "command": "oxygen.markResolved", "group": "inline", "when": "scmProvider == oxygen && scmResourceGroup == conflicts" }
117
      ],
118
      "view/title": [
119
        { "command": "oxygen.refreshOperations", "group": "navigation", "when": "view == oxygen.operations" }
120
      ],
121
      "view/item/context": [
122
        { "command": "oxygen.undoTo", "group": "inline", "when": "view == oxygen.operations && viewItem == operation" }
123
      ],
124
      "commandPalette": [
125
        { "command": "oxygen.openFile", "when": "false" },
126
        { "command": "oxygen.openChanges", "when": "false" },
127
        { "command": "oxygen.openBaseVersion", "when": "false" },
128
        { "command": "oxygen.discard", "when": "false" },
129
        { "command": "oxygen.commitSelected", "when": "false" },
130
        { "command": "oxygen.undoTo", "when": "false" },
131
        { "command": "oxygen.refreshOperations", "when": "false" },
132
        { "command": "oxygen.showChange", "when": "false" },
133
        { "command": "oxygen.acceptSides", "when": "false" },
134
        { "command": "oxygen.keepCandidate", "when": "false" },
135
        { "command": "oxygen.openConflict", "when": "false" }
136
      ]
137
    },
138
    "configuration": {
139
      "title": "Oxygen",
140
      "properties": {
141
        "oxygen.path": {
142
          "type": "string",
143
          "default": "",
144
          "description": "Path to the oxy binary. Empty means oxy on PATH, then ~/.local/bin/oxy."
145
        },
146
        "oxygen.autoRefresh": {
147
          "type": "boolean",
148
          "default": true,
149
          "description": "Refresh the source control view when files in the workspace change."
150
        },
151
        "oxygen.decorations.enabled": {
152
          "type": "boolean",
153
          "default": true,
154
          "description": "Show status decorations in the explorer and on editor tabs."
155
        },
156
        "oxygen.inlineBlame": {
157
          "type": "boolean",
158
          "default": false,
159
          "description": "Show each line's introducing change, author and age at the end of the line."
160
        },
161
        "oxygen.confirmSync": {
162
          "type": "boolean",
163
          "default": true,
164
          "description": "Ask before pushing."
165
        },
166
        "oxygen.showSnapshotOperations": {
167
          "type": "boolean",
168
          "default": false,
169
          "description": "List snapshot operations in the Oxygen Operations view."
170
        },
171
        "oxygen.statusBar.enabled": {
172
          "type": "boolean",
173
          "default": true,
174
          "description": "Show the bookmark, working copy and state in the status bar."
175
        }
176
      }
177
    }
178
  },
179
  "scripts": {
180
    "build": "esbuild src/extension.ts --bundle --platform=node --format=cjs --external:vscode --outfile=dist/extension.js --sourcemap",
181
    "watch": "npm run build -- --watch",
182
    "typecheck": "tsc --noEmit -p .",
183
    "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",
184
    "test": "node --test \"test/**/*.test.mjs\"",
185
    "check": "npm run typecheck && npm run build && npm test",
186
    "package": "vsce package --no-dependencies"
187
  },
188
  "devDependencies": {
189
    "@types/node": "^24.0.0",
190
    "@types/vscode": "^1.137.0",
191
    "@vscode/vsce": "^4.0.0",
192
    "esbuild": "^0.28.0",
193
    "typescript": "^5.9.0"
194
  }
195
}