[tab] package.json (json)
{
  "name": "crowd-code",
  "displayName": "crowd-code",
  "description": "Record your code editing activity in VS Code",
  "version": "1.1.3",
  "publisher": "pdoom-org",
  "icon": "icon.png",
  "engines": {
    "vscode": "^1.89.0"
  },
  "main": "./out/extension.js",
  "categories": [
    "Other",
    "Education"
  ],
  "activationEvents": [
    "onStartupFinished"
  ],
  "contributes": {
    "commands": [
      {
        "command": "crowd-code.startRecording",
        "title": "Start Recording",
        "icon": "$(play)"
      },
      {
        "command": "crowd-code.stopRecording",
        "title": "Stop Recording",
        "icon": "$(stop)"
      },
      {
        "command": "crowd-code.panicButton",
        "title": "Panic Button",
        "icon": "$(refresh)"
      },
      {
        "command": "crowd-code.openSettings",
        "title": "Open Settings",
        "icon": "$(settings)"
      },
      {
        "command": "crowd-code.refreshRecordFiles",
        "title": "Refresh",
        "icon": "$(refresh)"
      },
      {
        "command": "crowd-code.deleteRecordFile",
        "title": "Delete",
        "icon": "$(trash)"
      },
      {
        "command": "crowd-code.revealInExplorer",
        "title": "Reveal in File Explorer",
        "icon": "$(folder-opened)"
      },
      {
        "command": "crowd-code.addToGitignore",
        "title": "Add to .gitignore",
        "icon": "$(git-ignore)"
      },
      {
        "command": "crowd-code.showUserId",
        "title": "Show User ID"
      },
      {
        "command": "crowd-code.consent",
        "title": "crowd-code: Manage Data Collection Consent"
      }
    ],
    "viewsContainers": {
      "activitybar": [
        {
          "id": "crowd-code",
          "title": "crowd-code",
          "icon": "icon.svg"
        }
      ]
    },
    "views": {
      "crowd-code": [
        {
          "id": "actions",
          "name": "Actions",
          "icon": "icon.svg",
          "contextualTitle": "Actions"
        },
        {
          "id": "recordFiles",
          "name": "Record Files",
          "icon": "icon.svg",
          "contextualTitle": "Record Files"
        }
      ]
    },
    "menus": {
      "view/title": [
        {
          "command": "crowd-code.refreshRecordFiles",
          "when": "view == recordFiles",
          "group": "navigation"
        },
        {
          "command": "crowd-code.addToGitignore",
          "when": "view == actions",
          "group": "navigation"
        },
        {
          "command": "crowd-code.consent",
          "when": "view == actions",
          "group": "navigation"
        }
      ],
      "view/item/context": [
        {
          "command": "crowd-code.deleteRecordFile",
          "when": "view == recordFiles",
          "group": "inline"
        },
        {
          "command": "crowd-code.revealInExplorer",
          "when": "view == recordFiles",
          "group": "inline"
        },
        {
          "command": "crowd-code.deleteRecordFile",
          "when": "view == recordFiles",
          "group": "1_modification"
        },
        {
          "command": "crowd-code.revealInExplorer",
          "when": "view == recordFiles",
          "group": "2_workspace"
        }
      ]
    },
    "configuration": {
      "title": "crowd-code Configuration",
      "properties": {
        "crowdCode.export.exportPath": {
          "type": "string",
          "default": "${TMPDIR}/crowd-code/",
          "markdownDescription": "Path where recordings will be exported. Use '${workspaceFolder}' to refer to the workspace folder.",
          "order": 0
        },
        "crowdCode.export.createPathOutsideWorkspace": {
          "type": "boolean",
          "default": true,
          "description": "Whether to create the export path if it doesn't exist, even if it's outside the workspace folder.",
          "order": 1
        },
        "crowdCode.export.addToGitignore": {
          "type": "boolean",
          "default": false,
          "description": "Whether to add the export path to .gitignore when creating it.",
          "order": 2
        },
        "crowdCode.export.exportFormats": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "JSON",
              "SRT"
            ]
          },
          "uniqueItems": true,
          "default": [
            "JSON",
            "SRT"
          ],
          "description": "Formats to export the recording in.",
          "order": 3
        },
        "crowdCode.recording.askFolderName": {
          "type": "boolean",
          "default": false,
          "description": "Ask for a custom folder name before starting a recording",
          "order": 4
        },
        "crowdCode.appearance.minimalMode": {
          "type": "boolean",
          "default": false,
          "description": "Whether to show only the icon in the status bar when recording is stopped.",
          "order": 5
        },
        "crowdCode.appearance.showTimer": {
          "type": "boolean",
          "default": true,
          "description": "Whether to show the timer in the status bar when recording.",
          "order": 6
        }
      }
    }
  },
  "repository": {
    "type": "git",
    "url": "git://github.com/p-doom/crowd-code.git"
  },
  "scripts": {
    "vscode:prepublish": "npm run package",
    "ovsx:publish": "ovsx publish",
    "vsce:package": "vsce package",
    "release": "npm run package && vsce package",
    "compile": "webpack",
    "watch": "webpack --watch",
    "package": "webpack --mode production --devtool hidden-source-map",
    "compile-tests": "tsc -p . --outDir out",
    "watch-tests": "tsc -p . -w --outDir out",
    "pretest": "npm run compile-tests && npm run compile && npm run lint",
    "lint": "eslint src --ext ts",
    "test": "vscode-test"
  },
  "devDependencies": {
    "@types/diff": "^5.2.0",
    "@types/mocha": "^10.0.6",
    "@types/node": "18.x",
    "@types/vscode": "^1.89.0",
    "@typescript-eslint/eslint-plugin": "^7.11.0",
    "@typescript-eslint/parser": "^7.11.0",
    "@vscode/l10n-dev": "^0.0.35",
    "@vscode/test-cli": "^0.0.9",
    "@vscode/test-electron": "^2.4.0",
    "@vscode/vsce": "^2.24.0",
    "eslint": "^8.57.0",
    "ts-loader": "^9.5.1",
    "typescript": "^5.4.5",
    "webpack": "^5.91.0",
    "webpack-cli": "^5.1.4"
  },
  "dependencies": {
    "axios": "^1.7.2",
    "diff": "^5.2.0",
    "ignore": "^5.3.0",
    "lru-cache": "^10.0.0"
  }
}