[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-85180":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},85180,"GitCharm","RioNoir\u002FGitCharm","RioNoir","Jetbrains-style Git management for VS Code — Commit panel, Multi-repo, Shelf, Stash, Git Log with graph, multi-repo and more.","https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=RioNoir.gitcharm",null,"TypeScript",51,3,1,0,37.81,"GNU General Public License v3.0",false,"main",true,[],"2026-06-15 10:05:19","\u003Cp align=\"center\">\n  \u003Cimg src=\"media\u002Ficons\u002Fgitcharm.png\" alt=\"GitCharm\" width=\"160\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">GitCharm\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  JetBrains-like Git management for VS Code.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fbuymeacoffee.com\u002Frionoir\" target=\"_blank\">\u003Cimg alt=\"Buy Me a Coffee\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBuy%20Me%20A-Coffee-FFDD00?logo=buymeacoffee&logoColor=#FFDD00\">\u003C\u002Fa>\n  \u003Cimg alt=\"VS Code\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVS%20Code-1.85%2B-007ACC\">\n  \u003Cimg alt=\"Node\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode-18%2B-339933\">\n  \u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPL--3.0-red\">\n  \u003Cimg alt=\"GitHub forks\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FRioNoir\u002FGitCharm?style=flat&logo=github&label=Forks&color=orange\">\n  \u003Cimg alt=\"GitHub Repo stars\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FRioNoir\u002FGitCharm?style=flat&logo=GitHub&label=Stars&color=yellow\">\n\u003C\u002Fp>\n\nGitCharm brings a JetBrains-like Git workflow to Visual Studio Code: a focused Commit panel, a Git Log panel with graph and branch operations, multi-repository awareness, shelving\u002Fstashing tools, push helpers, and a 3-way merge editor for conflict resolution.\n\nIt activates automatically when the opened workspace contains a Git repository.\n\n\u003Cimg src=\"media\u002Fscreenshots\u002Ffull.png\" alt=\"GitCharm\">\n\n## ✨ Features\n\n### 📝 Commit Panel\n\n- Staged\u002Funstaged file list with tree and flat views (persisted across reloads).\n- Per-file diff preview directly in the panel.\n- Per-file actions: open, rollback, delete, add to `.gitignore`.\n- Commit selected files only, or all staged changes.\n- **Commit** and **Commit & Push** unified dropdown button; **Amend** and **Amend & Push** via the dropdown.\n- AI commit-message generation with multi-provider support: Anthropic API, OpenAI API, Claude CLI, Codex CLI, Gemini CLI, Gemini API, Ollama, and LM Studio. API keys and models configurable per provider.\n- Commit message pre-filled automatically with `Merge branch 'X' into 'Y'` when merge conflicts are detected.\n- New and modified files are **not** automatically selected — only files that were already selected before the change are preserved.\n\n#### View Modes\n\nOn first install, a QuickPick lets you choose your preferred view mode. You can change it at any time via `gitcharm.changesViewMode` in Settings.\n\n| Mode | Description |\n|:--|:--|\n| **Simplified** | Staged and Unstaged sections grouped per repository (default) |\n| **Changelists** | PhpStorm-style named changelists; files can be moved between lists |\n| **VS Code** | Native-style Staged Changes \u002F Changes sections with inline stage\u002Funstage buttons |\n\n\u003Cimg src=\"media\u002Fscreenshots\u002Fview_mode.png\" alt=\"GitCharm view modes\">\n\n#### Changelists\n\n- Create, rename, and delete named changelists from the context menu.\n- Drag files between changelists or use the context menu to reassign them.\n- Default changelist and Unversioned Files list are always present.\n\n#### Repository pills & commit targeting\n\n- The commit message area shows a pill for each repository with staged\u002Fselected files.\n- Click the **×** on a pill to quickly deselect that repository from the commit.\n- In VS Code mode, a per-repository checkbox in the Staged Changes section controls which repositories are included.\n\n### 🚀 Push Tab\n\n- Lists unpushed commits for every repository, including branches without an upstream tracking branch.\n- Commit count badge on the tab label, auto-updated after each commit, undo, or push.\n- Branch info header with sync state: \"Up to date\", \"N commits to pull from `\u003Cupstream>`\", or \"Local branch — not published\" with matching badges (↑ ahead, ↓ behind, Unpublished).\n- Per-commit stats showing files changed, additions, and deletions.\n- Push button label adapts to context: \"Push\", \"Publish Branch\", \"Publish Branches\", or \"Push & Publish\" for mixed upstream\u002Fno-upstream selections.\n- **Undo** the HEAD commit (with confirmation) directly from the push list.\n- **Explain with AI** context menu action on commits: opens the detail panel with an auto-generated explanation of the changes.\n- **Open Full Detail** context menu action on commits.\n- Click any row to jump to that commit in the Git Log panel.\n- **Publish** button for branches that have never been pushed.\n- Silent refresh: existing commits stay visible while reloading (no flicker).\n\n### 🗄️ Shelve & Stash\n\n- **Shelve** with patch-based shelves: create, apply (full or partial), delete, and inspect per-file diffs.\n- Binary-file handling and conflict detection on unshelve.\n- **Native stash** support: list, apply, pop, drop, and file diff preview.\n\n\u003Cimg src=\"media\u002Fscreenshots\u002Fshelf_stash_push.png\" alt=\"GitCharm commit panel\">\n\n### 📜 Git Log Panel\n\n- Commit graph with branch visualization.\n- Branch sidebar: local branches, remote branches, tags; single-repo workspaces hide the repository list.\n- Filters by text, author, branch, date, and repository.\n- Commit detail with changed-file list and per-file diffs.\n- Smart diff resolution for added, deleted, renamed, copied, merge, and root commits.\n- **Show Combined Diff** context menu entry in the commit file list.\n- Close button in the commit detail panel; clicking any commit re-opens it.\n- Bold commit message for the HEAD commit in the list.\n- Author name shown in commit rows when panel width > 500 px.\n- Click a commit title to expand\u002Fcollapse the message; if the commit has a body, it opens as a Markdown document in a VS Code tab.\n- Author avatars in commit rows and commit detail: resolves GitHub noreply emails to GitHub avatars, other emails to Gravatar, with a colored-initials fallback.\n- **Explain with AI** and **Open Full Detail** context menu actions; AI actions hidden when AI is disabled.\n- Branch operations from the sidebar: checkout, fetch, pull, push, merge, rebase, delete, rename, compare, and create new branch.\n- **Tags section** in the sidebar: collapsible list with multi-repo dot indicators; tags with the same name across repos are merged into a single row; active tag highlighted when in detached HEAD state.\n- Tag context menu: checkout, merge into current, push to remote, and delete (local, remote, or both).\n- Commit context menu: **New Tag…** when the commit has no tags; **Manage Tags…** (QuickPick with merge\u002Fdelete actions) when it does.\n- **Checkout…** in the commit context menu: QuickPick lets you choose between checking out the branch or the revision (detached HEAD); works for remote-only branches too.\n- **Branch options…** in the commit context menu: opens the Git Menu focused on that branch.\n- Log Panel auto-refreshes in the background after a commit or push, with a loading skeleton during the fetch.\n- Hides `origin\u002FHEAD` from the remote branches list.\n\n\u003Cbr>\n\u003Cimg src=\"media\u002Fscreenshots\u002Flog_options.png\" alt=\"GitCharm log panel\">\n\n### 🌿 Branch Status Bar\n\n- Shows the current branch name (truncated with ellipsis if long) with dirty, ahead, behind, and diverged states; shows the short commit hash when in detached HEAD state without a tag, or the tag name when checked out on a tag.\n- **Branch menu** with quick access to: update project, push, commit, branch operations, and log.\n- **Tags section** in the per-repository menu: checkout, merge, push to remote, and delete tags; delete dialog offers three options (local, remote, or both).\n- **Per-repository sub-menu** with full remote management: add, rename, change URL, and remove remotes.\n- Tracks the active editor to reflect the correct repository in multi-repo workspaces.\n\n\u003Cbr>\n\u003Cimg src=\"media\u002Fscreenshots\u002Fbranches_menu.png\" alt=\"GitCharm branches menu\">\n\n### 👤 Git Profiles\n\n- Named identity profiles (display name, `git user.name`, `git user.email`) stored in workspace settings.\n- Status bar item showing the active profile; click to switch, create, edit, delete, or set a default.\n- Fallback chain: active GitCharm profile → Local (repo `.git\u002Fconfig`) → Global (`git config --global`).\n- Set **Local** or **Global** as the default source per workspace without creating a named profile.\n- Reserved names `Local` and `Global` are displayed as implicit entries with source tooltip.\n- Active profile applied automatically to the local repo config before every commit.\n- Each workspace\u002Frepository can use a different identity.\n\n\u003Cbr>\n\u003Cimg src=\"media\u002Fscreenshots\u002Fgit_profiles.png\" alt=\"GitCharm git profiles\">\n\n### 🔍 Git Annotations (Blame)\n\n- Inline blame columns in the editor showing commit author, relative date, and summary.\n- Ghost text with the same information rendered at the end of the current line.\n- Hover actions link directly to the commit in the Git Log panel.\n- Accessible via editor context menu and Command Palette; toggled with dedicated commands.\n- Layout adapts around edits, tabs, CodeLens, and editor alignment.\n\n\u003Cbr>\n\u003Cimg src=\"media\u002Fscreenshots\u002Fgit_annotations.png\" alt=\"GitCharm annotations\">\n\n### 🗂️ Multi-Repository Workspaces\n\n- Per-project colors in the commit graph and commit panel.\n- Grouped changes and a shared commit flow across repositories.\n- Common branch actions applied across all repositories in one step.\n- Activity bar badge showing the total number of changed files across all repositories.\n- Nested repository scanning: automatically discovers Git repositories inside workspace subfolders up to a configurable depth, skipping ignored folders (e.g. `node_modules`). Files belonging to nested repos are filtered out from their parent repository's change list, matching VS Code's built-in behavior.\n- Repository context menu in the Commit Panel header (all view modes): quick access to branch operations, fetch, push, and settings for each repository.\n\n### ⚔️ Merge Editor\n\n- 3-way conflict editor for files containing Git conflict markers.\n- Side-by-side conflict panes with editable result.\n- Conflict navigation, save, and automatic staging on completion.\n\n## 📋 Requirements\n\n- Visual Studio Code `1.85.0` or newer.\n- Git installed and available in the workspace.\n- Node.js `18` or newer and npm for development or packaging.\n\nGitCharm uses VS Code's built-in Git extension when available and falls back to direct Git operations through `simple-git`.\n\n## 📦 Installation\n\n### From a VSIX\n\nBuild and package the extension:\n\n```bash\nnpm install\nnpm run build\nnpm run package\n```\n\nThen install the generated `.vsix`:\n\n```bash\ncode --install-extension gitcharm-0.3.5.vsix\n```\n\n### Development Host\n\nInstall dependencies, build once, then launch the extension host from VS Code:\n\n```bash\nnpm install\nnpm run build\n```\n\nOpen this repository in VS Code and run **Run Extension** from the Debug panel.\n\nFor iterative development:\n\n```bash\nnpm run watch\n```\n\n## 🛠️ Usage\n\nOpen a workspace that contains one or more Git repositories. GitCharm adds:\n\n- **GitCharm Commit** in the Activity Bar.\n- **GitCharm Log** in the bottom Panel.\n- A **branch item** and a **profile item** in the Status Bar.\n- Commands in the Command Palette.\n\nUse the Commit panel to select files, inspect diffs, write a commit message, commit, commit and push, shelve changes, manage stashes, or review unpushed commits.\n\nUse the Log panel to browse history, filter commits, inspect changed files, open diffs, and run branch or commit operations.\n\nUse the Status Bar branch menu for fast project-wide actions such as updating all repositories, pushing, creating branches, switching branches, managing remotes, or handling merge\u002Frebase states.\n\n## ⌨️ Commands\n\n| Command | Description |\n|:--|:--|\n| `GitCharm: Focus Git Log` | Focuses the Git Log panel. |\n| `GitCharm: Fetch All Remotes` | Fetches and prunes all remotes. |\n| `GitCharm: Open Merge Editor` | Opens the merge editor for the active file when conflict markers are present. |\n| `GitCharm: Refresh Commit Panel` | Refreshes the Commit panel state. |\n| `GitCharm: Branch Menu` | Opens the Status Bar branch menu. |\n| `GitCharm: Update Project` | Pulls all repositories using merge or rebase. |\n| `GitCharm: Settings` | Opens GitCharm settings. |\n| `GitCharm: Manage Git Profiles` | Opens the Git profile manager. |\n| `GitCharm: Switch Git Profile` | Switches the active Git profile for the current workspace. |\n| `GitCharm: Open Git Annotations` | Shows inline blame annotations in the active editor. |\n| `GitCharm: Close Git Annotations` | Hides inline blame annotations in the active editor. |\n| `GitCharm: Navigate to Commit` | Navigates to the commit linked from a blame annotation. |\n| `GitCharm: Select AI Provider` | Opens a QuickPick to choose and configure the AI provider and model. |\n| `GitCharm: Generate Commit Message` | Generates an AI commit message from the current staged diff. |\n| `GitCharm: Explain Commit` | Opens the commit detail panel with an AI-generated explanation of the selected commit. |\n\n## ⌨️ Keybindings\n\n| Keybinding | macOS | Command |\n|:--|:--|:--|\n| `Ctrl+Alt+L` | `Cmd+Alt+L` | `GitCharm: Focus Git Log` |\n| `Ctrl+Alt+K` | `Cmd+Alt+K` | `GitCharm: Commit` |\n\n## ⚙️ Settings\n\n| Setting | Default | Description |\n|:--|:--|:--|\n| `gitcharm.graphMaxCommits` | `1000` | Maximum number of commits loaded into the Git Log graph. |\n| `gitcharm.fetchOnStartup` | `false` | Fetches all remotes when GitCharm activates. |\n| `gitcharm.projectColors` | `{}` | Maps workspace folder\u002Frepository names to hex colors for multi-repo views. |\n| `gitcharm.repositoryScanMaxDepth` | `1` | Maximum depth of workspace subfolders to scan for Git repositories. `0` only checks workspace folders. |\n| `gitcharm.repositoryScanIgnoredFolders` | `[\"node_modules\"]` | Folder names or workspace-relative paths skipped while scanning for nested Git repositories. |\n| `gitcharm.autoRefreshInterval` | `0` | Auto-refresh interval in seconds. `0` disables interval refresh and uses file watchers only. |\n| `gitcharm.changesViewMode` | `\"simplified\"` | How to display changed files: `simplified`, `changelists`, or `vscode`. Chosen via QuickPick on first install. |\n| `gitcharm.gitAnnotations.enabled` | `true` | Enable inline Git blame annotations in the editor. |\n| `gitcharm.gitGhostText.enabled` | `true` | Enable inline Git ghost text in the editor. |\n| `gitcharm.gitProfiles` | `[]` | Named Git identity profiles (name, email) managed by GitCharm. |\n| `gitcharm.activeGitProfileId` | `\"\"` | ID of the currently active Git profile for this workspace. |\n| `gitcharm.suppressDivergedWarning` | `false` | Suppress the \"diverged\" warning in the status bar when local and remote have diverged. |\n| `gitcharm.ai.enabled` | `false` | Enable AI-powered features (commit message generation, commit explanation). |\n| `gitcharm.ai.provider` | `\"copilot\"` | AI provider: `copilot`, `anthropic`, `openai`, `claude-cli`, `codex-cli`, `gemini-cli`, `gemini-api`, `ollama`, or `lmstudio`. |\n| `gitcharm.ai.model` | `\"\"` | Model identifier for the selected provider (leave empty to use the provider default). |\n| `gitcharm.ai.language` | `\"\"` | Language for AI-generated text (e.g. `en`, `it`). Defaults to English when empty. |\n| `gitcharm.ai.anthropicApiKey` | `\"\"` | API key for the Anthropic provider. |\n| `gitcharm.ai.openaiApiKey` | `\"\"` | API key for the OpenAI provider. |\n| `gitcharm.ai.geminiApiKey` | `\"\"` | API key for the Gemini API provider. |\n\nExample:\n\n```json\n{\n  \"gitcharm.fetchOnStartup\": true,\n  \"gitcharm.graphMaxCommits\": 2000,\n  \"gitcharm.projectColors\": {\n    \"api\": \"#ff6b6b\",\n    \"web\": \"#4ec9b0\"\n  },\n  \"gitcharm.gitAnnotations.enabled\": true\n}\n```\n\n## 🏗️ Project Structure\n\n```text\nsrc\u002Fhost\u002F                 VS Code extension host code\nsrc\u002Fhost\u002Fgit\u002F             Git, diff, conflict, blame, workspace, and shelve services\nsrc\u002Fhost\u002Fpanels\u002F          Webview providers for Commit, Log, and Merge Editor\nsrc\u002Fhost\u002Fui\u002F              Status bar controllers, badge controller, and annotation controller\nsrc\u002Fwebview\u002FcommitPanel\u002F  React Commit panel\nsrc\u002Fwebview\u002FgitLog\u002F       React Git Log panel\nsrc\u002Fwebview\u002FmergeEditor\u002F  React 3-way merge editor\nsrc\u002Fwebview\u002Fshared\u002F       Shared webview components, hooks, and message types\nmedia\u002F                    Extension icons, codicons, and assets\nout\u002F                      Built extension and webview bundles\n```\n\n## 🔧 Development Scripts\n\n| Script | Description |\n|:--|:--|\n| `npm run build` | Builds both extension host and webview bundles. |\n| `npm run build:host` | Builds the extension host bundle with esbuild. |\n| `npm run build:webview` | Builds all React webview bundles. |\n| `npm run watch` | Watches host and webview sources in parallel. |\n| `npm run lint` | Runs ESLint on TypeScript and TSX sources. |\n| `npm run typecheck` | Type-checks the main TypeScript project. |\n| `npm run typecheck:webview` | Type-checks the webview TypeScript project. |\n| `npm run package` | Creates a VSIX package with `vsce`. |\n| `npm run publish` | Publishes the extension with `vsce publish`. |\n\n## 📌 Notes\n\n- GitCharm is designed for Git workspaces and multi-root workspaces where each folder may be its own repository.\n- Destructive operations (rollback, delete, branch delete, reset, stash drop, shelve drop, commit undo) ask for confirmation.\n- AI commit-message generation requires an available VS Code language model such as GitHub Copilot.\n- The merge editor works on files that contain Git conflict markers.\n- Git Annotations require the file to be tracked in a Git repository with at least one commit.\n\n## 🤝 Contributing\n\nContributions are welcome! To contribute:\n\n1. **Fork** the repository\n2. **Create** a branch for changes (`git checkout -b feature\u002Fyour-feature`)\n3. **Commit** the changes (`git commit -m 'Added your-feature'`)\n4. **Push** to the branch (`git push origin feature\u002Fyour-feature`)\n5. **Open** a Pull Request\n\n### 🐛 Bug Reporting\n\nTo report bugs, open an issue including:\n- Extension version\n- VSCode version\n- Operating system\n- What is the problem\n- Full error log\n\n### 💡 Feature Requests\n\nFor new features, open an issue describing:\n- Desired functionality\n- Specific use case\n- Priority (low\u002Fmedium\u002Fhigh)\n\n## 📄 License\n\nThis project is distributed under the GNU General Public License v3.0.\n",2,"2026-06-15 02:30:14","CREATED_QUERY"]