{ "name": "xboct-flow", "displayName": "XBOCT flow", "description": "Local-first task management for solo developers and small teams", "version": "0.0.1", "publisher": "", "license": "MIT", "engines": { "vscode": "^1.96.0" }, "categories": [ "Other" ], "keywords": [ "tasks", "todo", "issues", "kanban", "project-management" ], "activationEvents": [ "onStartupFinished" ], "main": "./out/extension.js", "contributes": { "commands": [ { "command": "xboctFlow.createTask", "title": "XBOCT flow: Create Task", "icon": "$(add)" }, { "command": "xboctFlow.openTask", "title": "XBOCT flow: Open Task", "icon": "$(go-to-file)" }, { "command": "xboctFlow.deleteTask", "title": "XBOCT flow: Delete Task", "icon": "$(trash)" }, { "command": "xboctFlow.changeStatus", "title": "XBOCT flow: Change Status", "icon": "$(sync)" }, { "command": "xboctFlow.openDashboard", "title": "XBOCT flow: Open Dashboard", "icon": "$(dashboard)" }, { "command": "xboctFlow.openInDashboard", "title": "XBOCT flow: Edit in Dashboard", "icon": "$(edit)" }, { "command": "xboctFlow.openKanban", "title": "XBOCT flow: Open Kanban", "icon": "$(layout)" } ], "configuration": { "title": "XBOCT flow", "properties": { "xboctFlow.projectPath": { "type": "string", "default": ".vscode/tasks", "description": "Path to project-level tasks folder (relative to workspace root)" }, "xboctFlow.globalPath": { "type": "string", "default": "", "description": "Path to global tasks folder (absolute path, shared across projects)" }, "xboctFlow.fileExtension": { "type": "string", "default": ".task.md", "enum": [ ".task.md", ".md", ".todo.md" ], "description": "File extension for task files" } } }, "viewsContainers": { "activitybar": [ { "id": "xboctFlow", "title": "XBOCT flow", "icon": "media/icon.svg" } ] }, "views": { "xboctFlow": [ { "type": "tree", "id": "xboctFlow.tasks", "name": "Tasks", "icon": "media/icon.svg" } ] }, "menus": { "view/title": [ { "command": "xboctFlow.createTask", "when": "view == xboctFlow.tasks", "group": "navigation@1" }, { "command": "xboctFlow.openDashboard", "when": "view == xboctFlow.tasks", "group": "navigation@2" }, { "command": "xboctFlow.openKanban", "when": "view == xboctFlow.tasks", "group": "navigation@3" } ], "view/item/context": [ { "command": "xboctFlow.openTask", "when": "view == xboctFlow.tasks && viewItem == task", "group": "inline@1" }, { "command": "xboctFlow.openInDashboard", "when": "view == xboctFlow.tasks && viewItem == task", "group": "inline@2" }, { "command": "xboctFlow.changeStatus", "when": "view == xboctFlow.tasks && viewItem == task", "group": "inline@3" }, { "command": "xboctFlow.deleteTask", "when": "view == xboctFlow.tasks && viewItem == task", "group": "inline@4" }, { "command": "xboctFlow.openTask", "when": "view == xboctFlow.tasks && viewItem == task", "group": "1_task@1" }, { "command": "xboctFlow.openInDashboard", "when": "view == xboctFlow.tasks && viewItem == task", "group": "1_task@2" }, { "command": "xboctFlow.changeStatus", "when": "view == xboctFlow.tasks && viewItem == task", "group": "1_task@3" }, { "command": "xboctFlow.deleteTask", "when": "view == xboctFlow.tasks && viewItem == task", "group": "1_task@4" } ] } }, "scripts": { "build": "vite build", "watch": "vite build --watch", "vscode:prepublish": "npm run build", "lint": "eslint .", "check": "npm run check:app && npm run check:test", "check:app": "tsc --noEmit -p tsconfig.app.json", "check:test": "tsc --noEmit -p tsconfig.test.json", "format": "prettier --write .", "test": "vitest", "test:run": "vitest run" }, "devDependencies": { "@eslint/compat": "^2.0.0", "@eslint/js": "^9.39.0", "@types/node": "^22.0.0", "@types/uuid": "^10.0.0", "@types/vscode": "^1.96.0", "@vitest/eslint-plugin": "^1.5.0", "eslint": "^9.39.0", "eslint-config-prettier": "^10.1.0", "globals": "^16.4.0", "typescript": "^5.7.0", "typescript-eslint": "^8.46.0", "vite": "^8.1.4", "vitest": "^4.1.10" }, "dependencies": { "front-matter": "^4.0.2", "js-yaml": "^5.2.1", "neverthrow": "^8.2.0", "prettier": "^3.9.5", "uuid": "^11.0.0" }, "repository": { "type": "git", "url": "" } }