OXYGENHUB
# ab81294a9ba9 oxygen-vscode / package.json
9.7 KiB · JSON · last changed Milestone 0.4: history graph webview with per-change actions, file history diffs between versions, inline blame aligned to unsaved edits with a Myers line diff 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",
ab81294a Andy McCall ↶ 5
  "version": "0.4.0",
bed495a9 Andy McCall ↶ 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": [
71d8bf97 Andy McCall ↶ 22
    "workspaceContains:.oxy/format",
23
    "workspaceContains:.oxy",
24
    "onStartupFinished"
bed495a9 Andy McCall ↶ 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" },
810a1c53 Andy McCall ↶ 35
      { "command": "oxygen.showLog", "title": "Show Log", "category": "Oxygen" },
35d56b58 Andy McCall ↶ 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)" },
c8f95589 Andy McCall ↶ 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" },
ab81294a Andy McCall ↶ 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" }
810a1c53 Andy McCall ↶ 57
    ],
35d56b58 Andy McCall ↶ 58
    "views": {
59
      "scm": [
60
        { "id": "oxygen.operations", "name": "Oxygen Operations", "when": "oxygen.hasRepository", "icon": "assets/images/oxygen.svg", "visibility": "collapsed" }
61
      ]
62
    },
810a1c53 Andy McCall ↶ 63
    "viewsWelcome": [
64
      {
65
        "view": "scm",
66
        "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)",
67
        "when": "workbenchState != empty && !oxygen.hasRepository"
68
      }
bed495a9 Andy McCall ↶ 69
    ],
70
    "menus": {
71
      "scm/title": [
72
        { "command": "oxygen.commit", "group": "navigation@1", "when": "scmProvider == oxygen" },
c8f95589 Andy McCall ↶ 73
        { "command": "oxygen.sync", "group": "navigation@2", "when": "scmProvider == oxygen" },
74
        { "command": "oxygen.refresh", "group": "navigation@3", "when": "scmProvider == oxygen" },
75
        { "command": "oxygen.pull", "group": "4_sync@1", "when": "scmProvider == oxygen" },
76
        { "command": "oxygen.push", "group": "4_sync@2", "when": "scmProvider == oxygen" },
77
        { "command": "oxygen.pushBookmark", "group": "4_sync@3", "when": "scmProvider == oxygen" },
78
        { "command": "oxygen.fetch", "group": "4_sync@4", "when": "scmProvider == oxygen" },
79
        { "command": "oxygen.switchBookmark", "group": "5_bookmarks@1", "when": "scmProvider == oxygen" },
80
        { "command": "oxygen.createBookmark", "group": "5_bookmarks@2", "when": "scmProvider == oxygen" },
81
        { "command": "oxygen.mergeBookmark", "group": "5_bookmarks@3", "when": "scmProvider == oxygen" },
82
        { "command": "oxygen.deleteBookmark", "group": "5_bookmarks@4", "when": "scmProvider == oxygen" },
35d56b58 Andy McCall ↶ 83
        { "command": "oxygen.commitHunks", "group": "2_commit@1", "when": "scmProvider == oxygen" },
84
        { "command": "oxygen.amend", "group": "2_commit@2", "when": "scmProvider == oxygen" },
85
        { "command": "oxygen.undo", "group": "3_undo", "when": "scmProvider == oxygen" },
ab81294a Andy McCall ↶ 86
        { "command": "oxygen.showHistory", "group": "1_view@1", "when": "scmProvider == oxygen" },
87
        { "command": "oxygen.showLog", "group": "1_view@2", "when": "scmProvider == oxygen" },
88
        { "command": "oxygen.showOutput", "group": "1_view@3", "when": "scmProvider == oxygen" }
89
      ],
90
      "editor/title": [
91
        { "command": "oxygen.fileHistory", "group": "navigation@9", "when": "oxygen.hasRepository && resourceScheme == file" }
bed495a9 Andy McCall ↶ 92
      ],
ab81294a Andy McCall ↶ 93
      "editor/context": [
94
        { "command": "oxygen.toggleBlame", "group": "oxygen@1", "when": "oxygen.hasRepository && resourceScheme == file" },
95
        { "command": "oxygen.fileHistory", "group": "oxygen@2", "when": "oxygen.hasRepository && resourceScheme == file" }
96
      ],
97
      "explorer/context": [
98
        { "command": "oxygen.fileHistory", "group": "7_modification@9", "when": "oxygen.hasRepository && !explorerResourceIsFolder" }
99
      ],
bed495a9 Andy McCall ↶ 100
      "scm/resourceState/context": [
35d56b58 Andy McCall ↶ 101
        { "command": "oxygen.openFile", "group": "inline@1", "when": "scmProvider == oxygen" },
102
        { "command": "oxygen.discard", "group": "inline@2", "when": "scmProvider == oxygen" },
bed495a9 Andy McCall ↶ 103
        { "command": "oxygen.openChanges", "group": "navigation", "when": "scmProvider == oxygen" },
35d56b58 Andy McCall ↶ 104
        { "command": "oxygen.openBaseVersion", "group": "navigation", "when": "scmProvider == oxygen" },
105
        { "command": "oxygen.commitSelected", "group": "1_modification@1", "when": "scmProvider == oxygen" },
106
        { "command": "oxygen.discard", "group": "1_modification@2", "when": "scmProvider == oxygen" }
bed495a9 Andy McCall ↶ 107
      ],
35d56b58 Andy McCall ↶ 108
      "view/title": [
109
        { "command": "oxygen.refreshOperations", "group": "navigation", "when": "view == oxygen.operations" }
110
      ],
111
      "view/item/context": [
112
        { "command": "oxygen.undoTo", "group": "inline", "when": "view == oxygen.operations && viewItem == operation" }
113
      ],
bed495a9 Andy McCall ↶ 114
      "commandPalette": [
115
        { "command": "oxygen.openFile", "when": "false" },
116
        { "command": "oxygen.openChanges", "when": "false" },
35d56b58 Andy McCall ↶ 117
        { "command": "oxygen.openBaseVersion", "when": "false" },
118
        { "command": "oxygen.discard", "when": "false" },
119
        { "command": "oxygen.commitSelected", "when": "false" },
120
        { "command": "oxygen.undoTo", "when": "false" },
ab81294a Andy McCall ↶ 121
        { "command": "oxygen.refreshOperations", "when": "false" },
122
        { "command": "oxygen.showChange", "when": "false" }
bed495a9 Andy McCall ↶ 123
      ]
124
    },
125
    "configuration": {
126
      "title": "Oxygen",
127
      "properties": {
128
        "oxygen.path": {
129
          "type": "string",
130
          "default": "",
131
          "description": "Path to the oxy binary. Empty means oxy on PATH, then ~/.local/bin/oxy."
132
        },
133
        "oxygen.autoRefresh": {
134
          "type": "boolean",
135
          "default": true,
136
          "description": "Refresh the source control view when files in the workspace change."
137
        },
138
        "oxygen.decorations.enabled": {
139
          "type": "boolean",
140
          "default": true,
141
          "description": "Show status decorations in the explorer and on editor tabs."
142
        },
ab81294a Andy McCall ↶ 143
        "oxygen.inlineBlame": {
144
          "type": "boolean",
145
          "default": false,
146
          "description": "Show each line's introducing change, author and age at the end of the line."
147
        },
c8f95589 Andy McCall ↶ 148
        "oxygen.confirmSync": {
149
          "type": "boolean",
150
          "default": true,
151
          "description": "Ask before pushing."
152
        },
35d56b58 Andy McCall ↶ 153
        "oxygen.showSnapshotOperations": {
154
          "type": "boolean",
155
          "default": false,
156
          "description": "List snapshot operations in the Oxygen Operations view."
157
        },
bed495a9 Andy McCall ↶ 158
        "oxygen.statusBar.enabled": {
159
          "type": "boolean",
160
          "default": true,
161
          "description": "Show the bookmark, working copy and state in the status bar."
162
        }
163
      }
164
    }
165
  },
166
  "scripts": {
167
    "build": "esbuild src/extension.ts --bundle --platform=node --format=cjs --external:vscode --outfile=dist/extension.js --sourcemap",
168
    "watch": "npm run build -- --watch",
169
    "typecheck": "tsc --noEmit -p .",
ab81294a Andy McCall ↶ 170
    "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",
bed495a9 Andy McCall ↶ 171
    "test": "node --test \"test/**/*.test.mjs\"",
172
    "check": "npm run typecheck && npm run build && npm test",
173
    "package": "vsce package --no-dependencies"
174
  },
175
  "devDependencies": {
176
    "@types/node": "^24.0.0",
177
    "@types/vscode": "^1.137.0",
178
    "@vscode/vsce": "^4.0.0",
179
    "esbuild": "^0.28.0",
180
    "typescript": "^5.9.0"
181
  }
182
}