{ "name": "oxygenhub", "displayName": "OxygenHub VCS", "description": "Proposals, reviews, issues and checks from an OxygenHub, in the editor. Builds on the Oxygen extension.", "version": "0.12.0", "publisher": "oxygenhub", "author": { "name": "OxygenHub.io", "url": "https://oxygenhub.io" }, "homepage": "https://oxygenhub.io/andymccall/oxygenhub-vscode", "repository": { "type": "oxygen", "url": "https://oxygenhub.io/andymccall/oxygenhub-vscode" }, "bugs": { "url": "https://oxygenhub.io/andymccall/oxygenhub-vscode/issues" }, "license": "MIT OR Apache-2.0", "icon": "assets/images/oxygenhub.png", "engines": { "vscode": "^1.137.0" }, "categories": [ "SCM Providers", "Other" ], "keywords": [ "oxygen", "oxygenhub", "review", "proposals", "issues" ], "extensionDependencies": [ "oxygenhub.oxygen-vscode" ], "activationEvents": [ "workspaceContains:.oxy/format", "onAuthenticationRequest:oxygenhub", "onStartupFinished" ], "main": "./dist/extension.js", "contributes": { "authentication": [ { "id": "oxygenhub", "label": "OxygenHub" } ], "configuration": { "title": "OxygenHub", "properties": { "oxygenhub.hubs": { "type": "array", "items": { "type": "string" }, "default": [], "description": "Base URLs of hubs you use (learnt from sign in too)." }, "oxygenhub.caFiles": { "type": "object", "additionalProperties": { "type": "string" }, "default": {}, "description": "CA certificate files for hubs with self-signed certificates, by base URL, e.g. {\"https://earth.example:7343\": \"~/.config/oxy/earth-ca.pem\"}. Checkouts whose remote names a CA (remote.NAME.ca) need no entry." }, "oxygenhub.proposalBookmarkPrefix": { "type": "string", "default": "proposal/", "description": "Prefix of the local bookmark created when checking out a proposal." }, "oxygenhub.autoRefresh": { "type": "number", "default": 60, "description": "Seconds between view refreshes; 0 disables." }, "oxygenhub.announceNotifications": { "type": "boolean", "default": true, "description": "Show a message when new notifications arrive (checked on the autoRefresh interval)." }, "oxygenhub.flowPollSeconds": { "type": "number", "default": 5, "minimum": 2, "description": "How often the Flow view and status bar look again while a run is queued or running (seconds); once a minute otherwise." }, "oxygenhub.flowNotifications": { "type": "boolean", "default": true, "description": "Say when an OxygenFlow run you can see finishes, with a way to its failed job's log." } } }, "viewsContainers": { "activitybar": [ { "id": "oxygenhub", "title": "OxygenHub", "icon": "assets/images/oxygenhub-activity.svg" } ] }, "views": { "oxygenhub": [ { "id": "oxygenhub.proposals", "name": "Proposals" }, { "id": "oxygenhub.issues", "name": "Issues" }, { "id": "oxygenhub.releases", "name": "Releases" }, { "id": "oxygenhub.flow", "name": "Flow" }, { "id": "oxygenhub.diffusion", "name": "Diffusion" } ] }, "viewsWelcome": [ { "view": "oxygenhub.proposals", "contents": "Sign in to an OxygenHub to see proposals.\n[Sign in](command:oxygenhub.signIn)" }, { "view": "oxygenhub.flow", "contents": "OxygenFlow runs of your hub repositories appear here: a push that moves a bookmark starts one.\n[Run Pipeline](command:oxygenhub.runPipeline)" } ], "commands": [ { "command": "oxygenhub.signIn", "title": "Sign in", "category": "OxygenHub" }, { "command": "oxygenhub.signOut", "title": "Sign out", "category": "OxygenHub" }, { "command": "oxygenhub.refresh", "title": "Refresh", "category": "OxygenHub", "icon": "$(refresh)" }, { "command": "oxygenhub.inbox", "title": "Open Inbox", "category": "OxygenHub", "icon": "$(bell)" }, { "command": "oxygenhub.openProposal", "title": "Open Proposal", "category": "OxygenHub" }, { "command": "oxygenhub.openOnHub", "title": "Open on Hub", "category": "OxygenHub", "icon": "$(link-external)" }, { "command": "oxygenhub.openProposalFile", "title": "Open Proposal File Diff", "category": "OxygenHub" }, { "command": "oxygenhub.openProposalChanges", "title": "View Changes", "category": "OxygenHub", "icon": "$(diff-multiple)" }, { "command": "oxygenhub.checkoutProposal", "title": "Check Out Proposal", "category": "OxygenHub", "icon": "$(git-branch)" }, { "command": "oxygenhub.review", "title": "Review\u2026", "category": "OxygenHub", "icon": "$(comment-discussion)" }, { "command": "oxygenhub.sealApproval", "title": "Seal My Approval (oxy seal --proposal)", "category": "OxygenHub" }, { "command": "oxygenhub.land", "title": "Land Proposal", "category": "OxygenHub" }, { "command": "oxygenhub.closeProposal", "title": "Close Proposal", "category": "OxygenHub" }, { "command": "oxygenhub.createProposal", "title": "Propose Current Bookmark\u2026", "category": "OxygenHub" }, { "command": "oxygenhub.newIssue", "title": "New Issue\u2026", "category": "OxygenHub", "icon": "$(add)" }, { "command": "oxygenhub.draftRelease", "title": "Draft Release\u2026", "category": "OxygenHub", "icon": "$(tag)" }, { "command": "oxygenhub.issueFromSelection", "title": "New Issue from Selection\u2026", "category": "OxygenHub" }, { "command": "oxygenhub.openIssue", "title": "Open Issue", "category": "OxygenHub" }, { "command": "oxygenhub.commentIssue", "title": "Comment on Issue\u2026", "category": "OxygenHub" }, { "command": "oxygenhub.closeIssue", "title": "Close Issue", "category": "OxygenHub" }, { "command": "oxygenhub.reopenIssue", "title": "Reopen Issue", "category": "OxygenHub" }, { "command": "oxygenhub.assignMe", "title": "Assign to Me", "category": "OxygenHub" }, { "command": "oxygenhub.newThread", "title": "Start Review Thread", "category": "OxygenHub" }, { "command": "oxygenhub.reply", "title": "Reply", "category": "OxygenHub" }, { "command": "oxygenhub.resolveThread", "title": "Resolve", "category": "OxygenHub" }, { "command": "oxygenhub.flowRefresh", "title": "Refresh Flow", "category": "OxygenHub", "icon": "$(refresh)" }, { "command": "oxygenhub.runPipeline", "title": "Run Pipeline\u2026", "category": "OxygenHub", "icon": "$(play)" }, { "command": "oxygenhub.rerunFlow", "title": "Re-run", "category": "OxygenHub", "icon": "$(debug-rerun)" }, { "command": "oxygenhub.flowLog", "title": "Show Job Log", "category": "OxygenHub", "icon": "$(output)" }, { "command": "oxygenhub.openFlowRun", "title": "Open Run on OxygenHub", "category": "OxygenHub", "icon": "$(link-external)" }, { "command": "oxygenhub.flowRecent", "title": "Recent Flow Runs\u2026", "category": "OxygenHub" }, { "command": "oxygenhub.openDiffusionPin", "title": "Open Bump or Repository", "category": "OxygenHub" }, { "command": "oxygenhub.openDiffusionOnHub", "title": "Open on OxygenHub", "category": "OxygenHub", "icon": "$(link-external)" } ], "menus": { "view/title": [ { "command": "oxygenhub.refresh", "when": "view == oxygenhub.proposals || view == oxygenhub.issues || view == oxygenhub.releases || view == oxygenhub.diffusion", "group": "navigation" }, { "command": "oxygenhub.createProposal", "when": "view == oxygenhub.proposals", "group": "navigation" }, { "command": "oxygenhub.newIssue", "when": "view == oxygenhub.issues", "group": "navigation" }, { "command": "oxygenhub.draftRelease", "when": "view == oxygenhub.releases", "group": "navigation" }, { "command": "oxygenhub.runPipeline", "when": "view == oxygenhub.flow", "group": "navigation@1" }, { "command": "oxygenhub.flowRefresh", "when": "view == oxygenhub.flow", "group": "navigation@2" } ], "view/item/context": [ { "command": "oxygenhub.openProposalChanges", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "inline" }, { "command": "oxygenhub.openOnHub", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "inline" }, { "command": "oxygenhub.checkoutProposal", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "inline" }, { "command": "oxygenhub.review", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "inline" }, { "command": "oxygenhub.sealApproval", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "actions@1" }, { "command": "oxygenhub.land", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "actions@2" }, { "command": "oxygenhub.closeProposal", "when": "view == oxygenhub.proposals && viewItem == proposal", "group": "actions@3" }, { "command": "oxygenhub.openOnHub", "when": "view == oxygenhub.issues && viewItem == issue", "group": "inline" }, { "command": "oxygenhub.commentIssue", "when": "view == oxygenhub.issues && viewItem == issue", "group": "actions@1" }, { "command": "oxygenhub.assignMe", "when": "view == oxygenhub.issues && viewItem == issue", "group": "actions@2" }, { "command": "oxygenhub.closeIssue", "when": "view == oxygenhub.issues && viewItem == issue", "group": "actions@3" }, { "command": "oxygenhub.reopenIssue", "when": "view == oxygenhub.issues && viewItem == issue", "group": "actions@3" }, { "command": "oxygenhub.draftRelease", "when": "view == oxygenhub.releases && viewItem == releaseRepo", "group": "inline" }, { "command": "oxygenhub.openDiffusionOnHub", "when": "view == oxygenhub.diffusion && viewItem =~ /^diffusion/", "group": "inline" }, { "command": "oxygenhub.runPipeline", "when": "view == oxygenhub.flow && viewItem == flowRepo", "group": "inline" }, { "command": "oxygenhub.rerunFlow", "when": "view == oxygenhub.flow && viewItem == flowRun", "group": "inline@1" }, { "command": "oxygenhub.openFlowRun", "when": "view == oxygenhub.flow && viewItem =~ /^flowRun/", "group": "inline@2" }, { "command": "oxygenhub.flowLog", "when": "view == oxygenhub.flow && viewItem == flowJob", "group": "inline" } ], "comments/commentThread/context": [ { "command": "oxygenhub.reply", "when": "commentController == oxygenhub", "group": "inline" }, { "command": "oxygenhub.newThread", "when": "commentController == oxygenhub && commentThreadIsEmpty", "group": "inline" } ], "comments/commentThread/title": [ { "command": "oxygenhub.resolveThread", "when": "commentController == oxygenhub", "group": "navigation" } ], "commandPalette": [ { "command": "oxygenhub.openDiffusionPin", "when": "false" }, { "command": "oxygenhub.openDiffusionOnHub", "when": "false" }, { "command": "oxygenhub.openProposalFile", "when": "false" }, { "command": "oxygenhub.rerunFlow", "when": "false" }, { "command": "oxygenhub.flowLog", "when": "false" }, { "command": "oxygenhub.openFlowRun", "when": "false" } ], "editor/context": [ { "command": "oxygenhub.issueFromSelection", "when": "resourceScheme == file", "group": "9_oxygenhub@1" } ] }, "colors": [ { "id": "oxygenhub.flowRunning", "description": "OxygenFlow: the icon of a run or job that is running.", "defaults": { "dark": "#35c7ff", "light": "#0a74b8", "highContrast": "#35c7ff", "highContrastLight": "#0a5a8f" } } ], "walkthroughs": [ { "id": "oxygenhub.gettingStarted", "title": "Get started with OxygenHub", "description": "Sign in, propose and review, and watch OxygenFlow from the editor.", "steps": [ { "id": "oxygenhub.signin", "title": "Sign in to your hub", "description": "A hub URL and a personal access token (Settings \u2192 Tokens on the hub). A self-signed hub works too: the extension uses the CA your checkout's remote names.\n[Sign In](command:oxygenhub.signIn)", "media": { "markdown": "walkthrough/signin.md" }, "completionEvents": [ "onCommand:oxygenhub.signIn" ] }, { "id": "oxygenhub.proposals", "title": "Proposals and issues", "description": "The OxygenHub sidebar lists your repositories' proposals and issues. Open a proposal to see its changes, review it, seal your approval with your key, and land it.\n[Open OxygenHub](command:workbench.view.extension.oxygenhub)", "media": { "markdown": "walkthrough/proposals.md" }, "completionEvents": [ "onView:oxygenhub.proposals" ] }, { "id": "oxygenhub.propose", "title": "Propose your bookmark", "description": "From a bookmark with work on it, propose it for the default bookmark. Issues its changes close are linked, and closed when it lands.\n[Create Proposal](command:oxygenhub.createProposal)", "media": { "markdown": "walkthrough/propose.md" }, "completionEvents": [ "onCommand:oxygenhub.createProposal" ] }, { "id": "oxygenhub.flow", "title": "Watch Flow", "description": "Every push runs the repository's OxygenFlow pipeline in microVMs. The Flow view shows runs and jobs as they go; click a job for its log, live. Run Pipeline starts one without a push.\n[Run Pipeline](command:oxygenhub.runPipeline)", "media": { "markdown": "walkthrough/flow.md" }, "completionEvents": [ "onCommand:oxygenhub.runPipeline" ] }, { "id": "oxygenhub.inbox", "title": "Your inbox", "description": "Mentions, reviews asked of you and activity on what you watch.\n[Open Inbox](command:oxygenhub.inbox)", "media": { "markdown": "walkthrough/inbox.md" }, "completionEvents": [ "onCommand:oxygenhub.inbox" ] } ] } ] }, "scripts": { "types": "cp ../oxygenhub/crates/hub-api/ts/index.d.ts src/hubapi.d.ts", "build": "esbuild src/extension.ts --bundle --platform=node --format=cjs --external:vscode --outfile=dist/extension.js --sourcemap", "watch": "npm run build -- --watch", "typecheck": "tsc --noEmit -p .", "pretest": "esbuild src/hub.ts --bundle --platform=node --format=esm --sourcemap --outfile=out/hub.mjs && esbuild src/provider.ts --bundle --platform=node --format=esm --sourcemap --outfile=out/provider.mjs && esbuild src/refs.ts --bundle --platform=node --format=esm --sourcemap --outfile=out/refs.mjs && esbuild src/flowview.ts --bundle --platform=node --format=esm --sourcemap --outfile=out/flowview.mjs && esbuild src/diffusionview.ts --bundle --platform=node --format=esm --sourcemap --outfile=out/diffusionview.mjs", "test": "node --enable-source-maps --test \"test/**/*.test.mjs\"", "pretest:ci": "npm run pretest", "test:ci": "node --enable-source-maps --test --experimental-test-coverage --test-coverage-exclude=\"test/**\" --test-reporter=spec --test-reporter-destination=stdout --test-reporter=junit --test-reporter-destination=out/junit.xml --test-reporter=lcov --test-reporter-destination=out/lcov.info \"test/**/*.test.mjs\"", "check": "npm run typecheck && npm run build && npm test", "package": "vsce package --no-dependencies" }, "devDependencies": { "@types/node": "^24.0.0", "@types/vscode": "^1.137.0", "@vscode/vsce": "^4.0.0", "esbuild": "^0.28.0", "typescript": "^5.9.0" } }