@akiojin/gwt 2.6.1 → 2.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +1 -1
- package/README.md +2 -2
- package/dist/cli/ui/hooks/useGitData.d.ts.map +1 -1
- package/dist/cli/ui/hooks/useGitData.js +11 -3
- package/dist/cli/ui/hooks/useGitData.js.map +1 -1
- package/dist/web/server/services/branches.d.ts.map +1 -1
- package/dist/web/server/services/branches.js +9 -2
- package/dist/web/server/services/branches.js.map +1 -1
- package/package.json +1 -8
- package/src/cli/ui/__tests__/integration/navigation.test.tsx +5 -0
- package/src/cli/ui/hooks/useGitData.ts +12 -3
- package/src/web/server/services/branches.ts +13 -2
package/README.ja.md
CHANGED
|
@@ -114,7 +114,7 @@ gwt -v
|
|
|
114
114
|
2. CIワークフロー(Test、Lint)が自動実行
|
|
115
115
|
3. すべてのCIチェックが成功し、競合がない場合、PRが自動的に`develop`にマージされる
|
|
116
116
|
4. 変更は`develop`に蓄積され、リリース準備ができるまで待機
|
|
117
|
-
5. `/release
|
|
117
|
+
5. `/release`コマンドを使用してRelease PRを作成し、release-pleaseをトリガー
|
|
118
118
|
|
|
119
119
|
**自動マージの無効化:**
|
|
120
120
|
|
package/README.md
CHANGED
|
@@ -139,7 +139,7 @@ The repository includes an automated PR merge workflow that streamlines the deve
|
|
|
139
139
|
2. CI workflows (Test, Lint) run automatically
|
|
140
140
|
3. When all CI checks pass and no conflicts exist, the PR is automatically merged to `develop`
|
|
141
141
|
4. Changes accumulate on `develop` until ready for release
|
|
142
|
-
5. Use `/release` command to
|
|
142
|
+
5. Use `/release` command to create Release PR and trigger release-please
|
|
143
143
|
|
|
144
144
|
**Disabling auto-merge:**
|
|
145
145
|
|
|
@@ -305,7 +305,7 @@ bun run start
|
|
|
305
305
|
|
|
306
306
|
## Release Process
|
|
307
307
|
|
|
308
|
-
We ship releases through
|
|
308
|
+
We ship releases through release-please. End users can simply install the latest published package (via npm or the GitHub Releases tab) and rely on versioned artifacts. Maintainers who need the full workflow should read [docs/release-guide.md](./docs/release-guide.md) (日本語版: [docs/release-guide.ja.md](./docs/release-guide.ja.md)) and the in-depth specs under `specs/SPEC-57fde06f/`.
|
|
309
309
|
|
|
310
310
|
## Troubleshooting
|
|
311
311
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGitData.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/hooks/useGitData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGitData.d.ts","sourceRoot":"","sources":["../../../../src/cli/ui/hooks/useGitData.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAuIxE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState, useEffect, useCallback } from "react";
|
|
2
|
-
import { getAllBranches, hasUnpushedCommitsInRepo, getRepositoryRoot, } from "../../../git.js";
|
|
2
|
+
import { getAllBranches, hasUnpushedCommitsInRepo, getRepositoryRoot, fetchAllRemotes, } from "../../../git.js";
|
|
3
3
|
import { listAdditionalWorktrees } from "../../../worktree.js";
|
|
4
4
|
import { getPullRequestByBranch } from "../../../github.js";
|
|
5
5
|
/**
|
|
@@ -17,6 +17,16 @@ export function useGitData(options) {
|
|
|
17
17
|
setLoading(true);
|
|
18
18
|
setError(null);
|
|
19
19
|
try {
|
|
20
|
+
const repoRoot = await getRepositoryRoot();
|
|
21
|
+
// リモートブランチの最新情報を取得(失敗してもローカル表示は継続)
|
|
22
|
+
try {
|
|
23
|
+
await fetchAllRemotes({ cwd: repoRoot });
|
|
24
|
+
}
|
|
25
|
+
catch (fetchError) {
|
|
26
|
+
if (process.env.DEBUG) {
|
|
27
|
+
console.warn("Failed to fetch remote branches", fetchError);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
20
30
|
const [branchesData, worktreesData] = await Promise.all([
|
|
21
31
|
getAllBranches(),
|
|
22
32
|
listAdditionalWorktrees(),
|
|
@@ -35,8 +45,6 @@ export function useGitData(options) {
|
|
|
35
45
|
};
|
|
36
46
|
worktreeMap.set(worktree.branch, uiWorktreeInfo);
|
|
37
47
|
}
|
|
38
|
-
// Get repository root for unpushed commits check
|
|
39
|
-
const repoRoot = await getRepositoryRoot();
|
|
40
48
|
// Attach worktree info and check unpushed/PR status for local branches
|
|
41
49
|
const enrichedBranches = await Promise.all(branchesData.map(async (branch) => {
|
|
42
50
|
const worktreeInfo = worktreeMap.get(branch.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGitData.js","sourceRoot":"","sources":["../../../../src/cli/ui/hooks/useGitData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useGitData.js","sourceRoot":"","sources":["../../../../src/cli/ui/hooks/useGitData.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branches.d.ts","sourceRoot":"","sources":["../../../../src/web/server/services/branches.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAkBtE;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"branches.d.ts","sourceRoot":"","sources":["../../../../src/web/server/services/branches.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAkBtE;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAqFtD;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAiD3B;AAsCD;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
|
|
@@ -22,10 +22,17 @@ function mapPullRequestState(state) {
|
|
|
22
22
|
* すべてのブランチ一覧を取得(マージステータスとWorktree情報付き)
|
|
23
23
|
*/
|
|
24
24
|
export async function listBranches() {
|
|
25
|
-
const
|
|
25
|
+
const repoRoot = await getRepositoryRoot();
|
|
26
|
+
// リモートブランチの最新情報を取得(失敗してもローカル情報にはフォールバック)
|
|
27
|
+
try {
|
|
28
|
+
await fetchAllRemotes({ cwd: repoRoot });
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.warn("Failed to fetch remote branches for Web UI; falling back to local branches", error);
|
|
32
|
+
}
|
|
33
|
+
const [branches, worktrees] = await Promise.all([
|
|
26
34
|
getAllBranches(),
|
|
27
35
|
listAdditionalWorktrees(),
|
|
28
|
-
getRepositoryRoot(),
|
|
29
36
|
]);
|
|
30
37
|
const divergenceMap = await buildDivergenceMap(branches, repoRoot);
|
|
31
38
|
const upstreamMap = await collectUpstreamMap(repoRoot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../../src/web/server/services/branches.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAO/D,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAEnE,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,CAAC,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../../../src/web/server/services/branches.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akiojin/gwt",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"description": "Interactive Git worktree manager for Claude Code with graphical branch selection",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -79,12 +79,6 @@
|
|
|
79
79
|
"@commitlint/cli": "^20.1.0",
|
|
80
80
|
"@commitlint/config-conventional": "^20.0.0",
|
|
81
81
|
"@playwright/test": "^1.51.0",
|
|
82
|
-
"@semantic-release/changelog": "^6.0.3",
|
|
83
|
-
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
84
|
-
"@semantic-release/git": "^10.0.1",
|
|
85
|
-
"@semantic-release/github": "^12.0.0",
|
|
86
|
-
"@semantic-release/npm": "^13.1.1",
|
|
87
|
-
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
88
82
|
"@testing-library/jest-dom": "^6.9.1",
|
|
89
83
|
"@testing-library/react": "^16.3.0",
|
|
90
84
|
"@types/node": "^24.10.1",
|
|
@@ -106,7 +100,6 @@
|
|
|
106
100
|
"lint-staged": "^16.2.7",
|
|
107
101
|
"prettier": "^3.6.2",
|
|
108
102
|
"rimraf": "^6.0.1",
|
|
109
|
-
"semantic-release": "^25.0.1",
|
|
110
103
|
"typescript": "^5.8.3",
|
|
111
104
|
"vite": "^7.2.4",
|
|
112
105
|
"vitest": "^4.0.8"
|
|
@@ -25,6 +25,7 @@ vi.mock("../../../../git.ts", () => ({
|
|
|
25
25
|
getAllBranches: vi.fn(),
|
|
26
26
|
getRepositoryRoot: vi.fn(async () => "/repo"),
|
|
27
27
|
deleteBranch: vi.fn(async () => undefined),
|
|
28
|
+
fetchAllRemotes: vi.fn(async () => undefined),
|
|
28
29
|
}));
|
|
29
30
|
|
|
30
31
|
const { mockIsProtectedBranchName, mockSwitchToProtectedBranch } = vi.hoisted(
|
|
@@ -60,6 +61,7 @@ import {
|
|
|
60
61
|
getAllBranches,
|
|
61
62
|
getRepositoryRoot,
|
|
62
63
|
deleteBranch,
|
|
64
|
+
fetchAllRemotes,
|
|
63
65
|
} from "../../../../git.ts";
|
|
64
66
|
import {
|
|
65
67
|
listAdditionalWorktrees,
|
|
@@ -72,6 +74,7 @@ import {
|
|
|
72
74
|
const mockedGetAllBranches = getAllBranches as Mock;
|
|
73
75
|
const mockedGetRepositoryRoot = getRepositoryRoot as Mock;
|
|
74
76
|
const mockedDeleteBranch = deleteBranch as Mock;
|
|
77
|
+
const mockedFetchAllRemotes = fetchAllRemotes as Mock;
|
|
75
78
|
const mockedListAdditionalWorktrees = listAdditionalWorktrees as Mock;
|
|
76
79
|
const mockedCreateWorktree = createWorktree as Mock;
|
|
77
80
|
const mockedGenerateWorktreePath = generateWorktreePath as Mock;
|
|
@@ -95,6 +98,7 @@ describe("Navigation Integration Tests", () => {
|
|
|
95
98
|
mockedListAdditionalWorktrees.mockReset();
|
|
96
99
|
mockedGetRepositoryRoot.mockReset();
|
|
97
100
|
mockedDeleteBranch.mockReset();
|
|
101
|
+
mockedFetchAllRemotes.mockReset();
|
|
98
102
|
mockedCreateWorktree.mockReset();
|
|
99
103
|
mockedGenerateWorktreePath.mockReset();
|
|
100
104
|
mockedGetMergedPRWorktrees.mockReset();
|
|
@@ -267,6 +271,7 @@ describe("Protected Branch Navigation (T103)", () => {
|
|
|
267
271
|
mockedListAdditionalWorktrees.mockReset();
|
|
268
272
|
mockedGetRepositoryRoot.mockReset();
|
|
269
273
|
mockedDeleteBranch.mockReset();
|
|
274
|
+
mockedFetchAllRemotes.mockReset();
|
|
270
275
|
mockedCreateWorktree.mockReset();
|
|
271
276
|
mockedGenerateWorktreePath.mockReset();
|
|
272
277
|
mockedGetMergedPRWorktrees.mockReset();
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
getAllBranches,
|
|
4
4
|
hasUnpushedCommitsInRepo,
|
|
5
5
|
getRepositoryRoot,
|
|
6
|
+
fetchAllRemotes,
|
|
6
7
|
} from "../../../git.js";
|
|
7
8
|
import { listAdditionalWorktrees } from "../../../worktree.js";
|
|
8
9
|
import { getPullRequestByBranch } from "../../../github.js";
|
|
@@ -40,6 +41,17 @@ export function useGitData(options?: UseGitDataOptions): UseGitDataResult {
|
|
|
40
41
|
setError(null);
|
|
41
42
|
|
|
42
43
|
try {
|
|
44
|
+
const repoRoot = await getRepositoryRoot();
|
|
45
|
+
|
|
46
|
+
// リモートブランチの最新情報を取得(失敗してもローカル表示は継続)
|
|
47
|
+
try {
|
|
48
|
+
await fetchAllRemotes({ cwd: repoRoot });
|
|
49
|
+
} catch (fetchError) {
|
|
50
|
+
if (process.env.DEBUG) {
|
|
51
|
+
console.warn("Failed to fetch remote branches", fetchError);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
43
55
|
const [branchesData, worktreesData] = await Promise.all([
|
|
44
56
|
getAllBranches(),
|
|
45
57
|
listAdditionalWorktrees(),
|
|
@@ -61,9 +73,6 @@ export function useGitData(options?: UseGitDataOptions): UseGitDataResult {
|
|
|
61
73
|
worktreeMap.set(worktree.branch, uiWorktreeInfo);
|
|
62
74
|
}
|
|
63
75
|
|
|
64
|
-
// Get repository root for unpushed commits check
|
|
65
|
-
const repoRoot = await getRepositoryRoot();
|
|
66
|
-
|
|
67
76
|
// Attach worktree info and check unpushed/PR status for local branches
|
|
68
77
|
const enrichedBranches = await Promise.all(
|
|
69
78
|
branchesData.map(async (branch) => {
|
|
@@ -37,10 +37,21 @@ function mapPullRequestState(state: string): "open" | "merged" | "closed" {
|
|
|
37
37
|
* すべてのブランチ一覧を取得(マージステータスとWorktree情報付き)
|
|
38
38
|
*/
|
|
39
39
|
export async function listBranches(): Promise<Branch[]> {
|
|
40
|
-
const
|
|
40
|
+
const repoRoot = await getRepositoryRoot();
|
|
41
|
+
|
|
42
|
+
// リモートブランチの最新情報を取得(失敗してもローカル情報にはフォールバック)
|
|
43
|
+
try {
|
|
44
|
+
await fetchAllRemotes({ cwd: repoRoot });
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.warn(
|
|
47
|
+
"Failed to fetch remote branches for Web UI; falling back to local branches",
|
|
48
|
+
error,
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const [branches, worktrees] = await Promise.all([
|
|
41
53
|
getAllBranches(),
|
|
42
54
|
listAdditionalWorktrees(),
|
|
43
|
-
getRepositoryRoot(),
|
|
44
55
|
]);
|
|
45
56
|
const divergenceMap = await buildDivergenceMap(branches, repoRoot);
|
|
46
57
|
const upstreamMap = await collectUpstreamMap(repoRoot);
|