{ "name": "commitforge", "displayName": "CommitForge – AI Commit & PR Generator", "description": "Generate commit messages and PR descriptions with one click using Claude Code CLI or a local Ollama server. Supports Conventional Commits, custom formats, per-project configuration, and optional user hints.", "version": "1.3.6", "publisher": "doubleslash", "license": "MIT", "repository": { "type": "git", "url": "https://github.com/doubleSlashde/commitforge" }, "homepage": "https://github.com/doubleSlashde/commitforge#readme", "bugs": { "url": "https://github.com/doubleSlashde/commitforge/issues" }, "engines": { "vscode": "^1.85.0" }, "categories": [ "SCM Providers", "Other" ], "keywords": [ "claude", "commit", "ai", "conventional-commits", "git", "commit-message", "anthropic", "scm", "ollama", "on-premise", "pull-request", "merge-request" ], "icon": "images/icon.png", "galleryBanner": { "color": "#1a1a2e", "theme": "dark" }, "activationEvents": [], "main": "./out/extension.js", "contributes": { "commands": [ { "command": "commitGen.generate", "title": "Generate Commit Message", "icon": "$(sparkle)" }, { "command": "commitGen.generatePR", "title": "Generate PR Description", "icon": "$(git-pull-request)" } ], "menus": { "scm/title": [ { "command": "commitGen.generate", "group": "navigation@1", "when": "scmProvider == git", "enablement": "commitGen.providerAvailable" }, { "command": "commitGen.generatePR", "group": "navigation@2", "when": "scmProvider == git", "enablement": "commitGen.providerAvailable" } ] }, "configuration": { "title": "CommitForge", "properties": { "commitGen.provider": { "type": "string", "default": "claude", "enum": [ "claude", "ollama" ], "enumDescriptions": [ "Claude Code CLI (requires npm install -g @anthropic-ai/claude-code)", "Ollama server (OpenAI-compatible API)" ], "markdownDescription": "AI provider for commit message generation. `claude` uses the Claude Code CLI, `ollama` connects to a local or on-premise Ollama server." }, "commitGen.ollama.url": { "type": "string", "default": "", "markdownDescription": "Ollama server URL (e.g. `https://ollama.example.com`). Only used when `#commitGen.provider#` is `ollama`." }, "commitGen.ollama.model": { "type": "string", "default": "qwen3:32b", "markdownDescription": "Ollama model name (e.g. `qwen3-coder:latest`, `codellama:latest`). Only used when `#commitGen.provider#` is `ollama`." }, "commitGen.ollama.apiKey": { "type": "string", "default": "", "markdownDescription": "API key for the Ollama server (if required). Leave empty if no authentication is needed. Only used when `#commitGen.provider#` is `ollama`." }, "commitGen.format": { "type": "string", "default": "conventional", "enum": [ "conventional", "descriptive", "custom" ], "enumDescriptions": [ "Conventional Commits (feat:, fix:, chore:, ...)", "Descriptive multi-line summary", "Custom template from commitGen.customTemplate" ], "markdownDescription": "Commit message format. Use `custom` with `#commitGen.customTemplate#` for your own format." }, "commitGen.customTemplate": { "type": "string", "default": "", "markdownDescription": "Custom prompt for commit message format. Only used when `#commitGen.format#` is set to `custom`. Example: `Format: [JIRA-ID] short description`" }, "commitGen.language": { "type": "string", "default": "en", "enum": [ "en", "de" ], "enumDescriptions": [ "English", "Deutsch" ], "description": "Language for generated commit messages." }, "commitGen.maxDiffLines": { "type": "number", "default": 500, "description": "Maximum number of diff lines sent to the AI provider. Larger diffs are truncated." }, "commitGen.pr.targetBranch": { "type": "string", "default": "main", "markdownDescription": "Target branch for PR description generation. The diff and commits are compared against this branch. Common values: `main`, `develop`, `master`." } } } }, "scripts": { "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "package": "npx @vscode/vsce package --no-dependencies" }, "devDependencies": { "@types/vscode": "^1.85.0", "@types/node": "^20.0.0", "typescript": "^5.3.0" } }