Skip to content

Commit 67d69e9

Browse files
committed
chore: bump to 0.1.5, update CHANGELOG and README
1 parent 896360c commit 67d69e9

5 files changed

Lines changed: 66 additions & 17 deletions

File tree

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
# Changelog
22

3+
## 0.1.5 (2026-03-20)
4+
5+
### New Features
6+
- **Dim unmerged branch commits**: Commits not on the current branch are visually dimmed for clarity
7+
- **Search redesign**: Local filtering with result highlighting and Enter/Shift+Enter navigation
8+
- **Toolbar UI overhaul**: Compact repo selector, refined icon sizing, and improved refresh behavior
9+
- **Stash button**: Quick stash save from toolbar with SCM integration
10+
11+
### UI/UX Improvements
12+
- **Centralized modal system**: All modals managed via modalStore for consistent behavior
13+
- **Tree view caching and prefetch**: Sidebar tree views load instantly on first expand
14+
- **Row height and badge styling**: Refined graph row height, remote cloud badges, and fast-forward modal
15+
- **Modal icon consistency**: Unified icon usage across all modal dialogs
16+
- **Unified text styling**: Consistent text rendering across graph and log views
17+
18+
### Bug Fixes
19+
- Fix remote-ahead branches not connecting in graph
20+
- Fix race conditions in data loading and tree view reliability
21+
- Fix search debounce causing missed keystrokes
22+
- Fix checkout flow: simplified logic for local, remote, and detached HEAD cases
23+
- Fix delete branch from stash button and SCM integration issues
24+
25+
### Docs
26+
- Improve README with missing features (3 views, interactive rebase UI, reset modes, diff viewer, image diff, patch export, theme support)
27+
- Update CLAUDE.md with additional architecture details
28+
329
## 0.1.4 (2026-03-20)
430

531
### New Features

CLAUDE.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ npm run package # vsce package
3636

3737
### Communication Flow
3838

39-
Extension and webview communicate exclusively via `postMessage()`. All message types are defined in `src/utils/message-bus.ts` as TypeScript union types (`WebviewMessage` for webview→extension, `ExtensionMessage` for extension→webview).
39+
Extension and webview communicate exclusively via `postMessage()`. All message types are defined in `src/utils/message-bus.ts` as TypeScript union types (`WebviewMessage` for webview→extension, `ExtensionMessage` for extension→webview). Types are intentionally duplicated in `webview-ui/src/lib/types.ts` (no shared code package).
4040

4141
### Extension Side (`src/`)
4242

@@ -45,16 +45,16 @@ Extension and webview communicate exclusively via `postMessage()`. All message t
4545
- **`git/git-service.ts`**: All git operations via `child_process.spawn`. 80+ methods. Maintains activity log (last 200 commands). Caches remote names for 30s.
4646
- **`git/git-graph-builder.ts`**: Computes graph layout (paths, links, dots) from commit data for canvas rendering.
4747
- **`git/git-parser.ts`**: Parses raw git log output into structured commit objects.
48-
- **`services/file-watcher.ts`**: Watches `.git/HEAD`, `.git/refs/**`, `.git/index`. Debounces at 500ms with 1s cooldown.
48+
- **`services/file-watcher.ts`**: Watches `.git/HEAD`, `.git/MERGE_HEAD`, `.git/REBASE_HEAD`, `.git/refs/**`, `.git/refs/stash`, `.git/index`, plus working tree (excluding `node_modules`, `.git`, `dist`, etc.). Debounces at 500ms with 1s cooldown.
4949
- **`views/`**: Five `TreeDataProvider` implementations for Activity Bar sidebar (branches, remotes, tags, stashes, worktrees).
5050

5151
### Webview Side (`webview-ui/`)
5252

5353
- **Framework**: Svelte 5 with `$state`/`$derived` runes, built with Vite 6.
5454
- **`App.svelte`**: Root component. Handles all extension messages, keyboard shortcuts, layout.
55-
- **Stores** (`lib/stores/`): `commits.svelte.ts` (graph data), `branches.svelte.ts` (refs), `ui.svelte.ts` (selection, view mode, panel height). All use Svelte 5 class-based `$state`.
56-
- **`components/graph/CommitGraph.svelte`**: Canvas-based commit graph with interactive selection and context menus.
57-
- **`lib/i18n/`**: Custom store-based i18n. English (`en.ts`) and Korean (`ko.ts`). Git terms (commit, merge, rebase, push, pull, fetch, stash, tag, checkout, cherry-pick, revert, blame, reflog, bisect) stay untranslated in both languages.
55+
- **`components/graph/CommitGraph.svelte`**: Canvas-based commit graph with interactive selection and context menus. Uses `shiki` for syntax-highlighted diffs.
56+
- **`lib/i18n/`**: Custom class-based i18n using `$state`. English (`en.ts`) and Korean (`ko.ts`). `t()` supports parameter interpolation with `{paramName}` syntax. Git terms (commit, merge, rebase, push, pull, fetch, stash, tag, checkout, cherry-pick, revert, blame, reflog, bisect) stay untranslated in both languages.
57+
- **`lib/stores/`**: All stores use Svelte 5 class-based `$state` pattern — `CommitStore` (graph data + lookup methods), `BranchStore` (refs with computed getters), `UIStore` (selection, view mode, repos), `ModalStore` (8 modal types with dynamic payloads).
5858

5959
### Build Tooling
6060

@@ -78,4 +78,5 @@ Extension and webview communicate exclusively via `postMessage()`. All message t
7878
- **MainPanel singleton**: One instance per workspace. Uses `pendingModal` pattern to queue modals triggered before the panel is created.
7979
- **Activity log**: GitService logs every command (args, timestamp, success, duration) in a 200-entry ring buffer, viewable in the webview.
8080
- **No linter/formatter config**: No eslint or prettier. `npm run lint` runs `tsc --noEmit` only. Webview type checking: `cd webview-ui && npm run check` (runs `svelte-check`).
81-
- **Tests**: Only parser and graph builder have unit tests (`src/git/__tests__/`). Run with vitest.
81+
- **Tests**: Only parser and graph builder have unit tests (`src/git/__tests__/`). Run with vitest. Tests use `makeCommit()` helper to create test data. Parser tests cover `parseLog`, `parseRefs`, `parseBranches`, `parseTags`, `parseRemotes`, `parseStashList`, `parseDiff`.
82+
- **TypeScript targets**: Extension uses `ES2022`/`commonjs` (Node 18); webview uses `ESNext`/`bundler` module resolution.

README.ko.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,24 @@ VS Code를 위한 모던 Git GUI. 커밋 히스토리를 시각화하고, 브랜
1515
### 커밋 그래프
1616
- 브랜치/머지 시각화 및 색상 구분이 적용된 인터랙티브 커밋 그래프
1717
- Fork와 같은 위상순 커밋 정렬 (topo-order)
18+
- 세 가지 뷰: **그래프**, **로그**, **통계**
1819
- 커밋을 클릭하여 상세 정보, 변경된 파일, diff 확인
1920
- 우클릭 컨텍스트 메뉴: checkout, cherry-pick, revert, reset, merge, rebase 등
2021
- 두 커밋 비교: 기준 커밋 선택 후 다른 커밋 클릭으로 diff 확인
2122
- 커밋과 로컬 작업 변경사항 비교
22-
- 메시지, 작성자, 날짜 범위, 해시로 검색
23+
- 메시지, 작성자, 날짜 범위, 해시로 검색 — 결과 하이라이트 및 탐색
2324
- 작성자명 옆에 Gravatar 아바타 표시
2425
- 크기 조절 가능한 하단 패널 (Escape로 닫기)
2526
- 로컬 전용 커밋 표시 (파란 점 — push 안 됨)
2627
- 리모트 전용 커밋 표시 (회색 점 — 리모트가 앞서감)
28+
- 라이트, 다크, 고대비 테마 지원
2729

2830
### 브랜치 & 태그 관리
2931
- 브랜치 생성, 이름 변경, 삭제, checkout
3032
- Merge (default, no-ff, ff-only, squash) 및 rebase (interactive 포함)
31-
- Cherry-pick 및 revert
33+
- Interactive rebase UI: 드래그로 순서 변경, 액션 드롭다운 (pick, reword, edit, squash, fixup, drop), drop 경고
34+
- Cherry-pick 및 revert (--no-commit 옵션 포함)
35+
- 임의의 커밋으로 reset (soft, mixed, hard)
3236
- 경량 태그 및 주석 태그 생성
3337
- 리모트 태그 push, 삭제, 관리 (리모트에서도 삭제 옵션)
3438
- upstream 추적 기반 로컬/리모트 브랜치 매칭
@@ -45,12 +49,19 @@ VS Code를 위한 모던 Git GUI. 커밋 히스토리를 시각화하고, 브랜
4549
- Merge, rebase, cherry-pick, revert 시 자동 충돌 감지
4650
- 충돌 배너에 파일 목록 및 상태 표시
4751
- 충돌 파일 클릭으로 VS Code 에디터에서 열기 (3-way 병합 편집기 지원)
48-
- Continue 및 Abort 버튼 (해결된 파일 자동 스테이징)
52+
- 파일별 "해결 완료 표시" 및 자동 스테이징
53+
- Continue 및 Abort 버튼
4954

5055
### Stash & Worktree
51-
- Stash 저장, 적용, pop, 삭제
56+
- Stash 저장, 적용, pop, 삭제 (untracked 파일 및 keep-index 옵션 포함)
5257
- 커밋 그래프에 stash 배지 및 전용 컨텍스트 메뉴
53-
- Worktree 관리 (목록, 추가, 제거, 정리)
58+
- Worktree 관리 (목록, 추가, 제거, 정리) 및 연결된 브랜치 정리
59+
60+
### Diff 뷰어
61+
- 상태 표시가 있는 파일 트리 (Added, Modified, Deleted, Renamed, Copied)
62+
- Shiki 기반 구문 강조 diff
63+
- 이미지 diff 시각적 미리보기
64+
- 커밋을 `.patch` 파일로 저장
5465

5566
### 고급 기능
5667
- Git Flow 지원 (feature, release, hotfix)

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,24 @@ A modern, full-featured Git GUI for VS Code. Visualize your commit history, mana
1515
### Commit Graph
1616
- Interactive commit graph with branch/merge visualization and color-coded rails
1717
- Topological commit ordering like Fork
18+
- Three views: **Graph**, **Log**, and **Statistics**
1819
- Click any commit to view details, changed files, and diffs
1920
- Right-click context menus: checkout, cherry-pick, revert, reset, merge, rebase, and more
2021
- Compare two commits: select a base commit, then click another to see the diff
2122
- Compare any commit to local working tree changes
22-
- Search by message, author, date range, or hash
23+
- Search by message, author, date range, or hash — with result highlighting and navigation
2324
- Gravatar avatars next to author names
2425
- Resizable bottom panel for commit details (Escape to close)
2526
- Local-only commit indicator (blue dot — not pushed)
2627
- Remote-only commit indicator (gray dot — remote ahead)
28+
- Light, dark, and high-contrast theme support
2729

2830
### Branch & Tag Management
2931
- Create, rename, delete, and checkout branches
3032
- Merge (default, no-ff, ff-only, squash) and rebase (including interactive)
31-
- Cherry-pick and revert commits
33+
- Interactive rebase UI with drag-to-reorder, action dropdown (pick, reword, edit, squash, fixup, drop), and drop warning
34+
- Cherry-pick and revert commits (with --no-commit option)
35+
- Reset to any commit (soft, mixed, hard)
3236
- Create lightweight and annotated tags
3337
- Push, delete, and manage remote tags (delete from remote option)
3438
- Upstream tracking-based local/remote branch matching
@@ -45,12 +49,19 @@ A modern, full-featured Git GUI for VS Code. Visualize your commit history, mana
4549
- Automatic conflict detection on merge, rebase, cherry-pick, and revert
4650
- Conflict banner with file list and status indicators
4751
- Click conflict files to open in VS Code editor (supports 3-way merge editor)
48-
- Continue and Abort buttons with auto-staging of resolved files
52+
- Per-file "Mark as Resolved" with auto-staging
53+
- Continue and Abort buttons
4954

5055
### Stash & Worktree
51-
- Save, apply, pop, and drop stashes
56+
- Save, apply, pop, and drop stashes (with untracked files and keep-index options)
5257
- Stash badges in commit graph with dedicated context menu
53-
- Worktree management (list, add, remove, prune)
58+
- Worktree management (list, add, remove, prune) with linked branch cleanup
59+
60+
### Diff Viewer
61+
- File tree with status indicators (Added, Modified, Deleted, Renamed, Copied)
62+
- Syntax-highlighted diffs powered by Shiki
63+
- Image diff with visual preview
64+
- Save commits as `.patch` files
5465

5566
### Advanced
5667
- Git Flow support (feature, release, hotfix)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "git-graph-plus",
33
"displayName": "Git Graph Plus",
44
"description": "A modern, full-featured Git GUI for VS Code",
5-
"version": "0.1.4",
5+
"version": "0.1.5",
66
"publisher": "the0807",
77
"repository": {
88
"type": "git",

0 commit comments

Comments
 (0)