@akiojin/gwt 2.9.1 → 2.11.0

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.
Files changed (98) hide show
  1. package/README.md +6 -0
  2. package/dist/cli/ui/components/App.d.ts.map +1 -1
  3. package/dist/cli/ui/components/App.js +4 -37
  4. package/dist/cli/ui/components/App.js.map +1 -1
  5. package/dist/cli/ui/components/common/Input.d.ts +1 -1
  6. package/dist/cli/ui/components/screens/BranchListScreen.d.ts +1 -2
  7. package/dist/cli/ui/components/screens/BranchListScreen.d.ts.map +1 -1
  8. package/dist/cli/ui/components/screens/BranchListScreen.js +19 -14
  9. package/dist/cli/ui/components/screens/BranchListScreen.js.map +1 -1
  10. package/dist/cli/ui/components/screens/ModelSelectorScreen.d.ts.map +1 -1
  11. package/dist/cli/ui/components/screens/ModelSelectorScreen.js +6 -6
  12. package/dist/cli/ui/components/screens/ModelSelectorScreen.js.map +1 -1
  13. package/dist/cli/ui/components/screens/PRCleanupScreen.d.ts.map +1 -1
  14. package/dist/cli/ui/components/screens/PRCleanupScreen.js +0 -3
  15. package/dist/cli/ui/components/screens/PRCleanupScreen.js.map +1 -1
  16. package/dist/cli/ui/hooks/useGitData.d.ts.map +1 -1
  17. package/dist/cli/ui/hooks/useGitData.js +43 -2
  18. package/dist/cli/ui/hooks/useGitData.js.map +1 -1
  19. package/dist/cli/ui/types.d.ts +16 -4
  20. package/dist/cli/ui/types.d.ts.map +1 -1
  21. package/dist/cli/ui/utils/branchFormatter.d.ts.map +1 -1
  22. package/dist/cli/ui/utils/branchFormatter.js +124 -15
  23. package/dist/cli/ui/utils/branchFormatter.js.map +1 -1
  24. package/dist/cli/ui/utils/modelOptions.d.ts.map +1 -1
  25. package/dist/cli/ui/utils/modelOptions.js.map +1 -1
  26. package/dist/client/assets/{index-CNWntAlF.js → index-Dl798X5w.js} +1 -1
  27. package/dist/client/index.html +1 -1
  28. package/dist/config/index.d.ts.map +1 -1
  29. package/dist/config/index.js.map +1 -1
  30. package/dist/git.d.ts +6 -0
  31. package/dist/git.d.ts.map +1 -1
  32. package/dist/git.js +40 -5
  33. package/dist/git.js.map +1 -1
  34. package/dist/web/client/src/components/BranchGraph.js +1 -1
  35. package/dist/web/client/src/components/BranchGraph.js.map +1 -1
  36. package/dist/web/client/src/pages/BranchDetailPage.d.ts.map +1 -1
  37. package/dist/web/client/src/pages/BranchDetailPage.js +8 -3
  38. package/dist/web/client/src/pages/BranchDetailPage.js.map +1 -1
  39. package/dist/web/server/routes/sessions.d.ts.map +1 -1
  40. package/dist/web/server/routes/sessions.js +4 -2
  41. package/dist/web/server/routes/sessions.js.map +1 -1
  42. package/dist/worktree.d.ts.map +1 -1
  43. package/dist/worktree.js +69 -62
  44. package/dist/worktree.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/cli/ui/__tests__/acceptance/navigation.acceptance.test.tsx +9 -17
  47. package/src/cli/ui/__tests__/components/App.protected-branch.test.tsx +77 -83
  48. package/src/cli/ui/__tests__/components/App.shortcuts.test.tsx +107 -160
  49. package/src/cli/ui/__tests__/components/App.test.tsx +108 -84
  50. package/src/cli/ui/__tests__/components/ModelSelectorScreen.initial.test.tsx +12 -5
  51. package/src/cli/ui/__tests__/components/common/Confirm.test.tsx +3 -2
  52. package/src/cli/ui/__tests__/components/common/ErrorBoundary.test.tsx +3 -2
  53. package/src/cli/ui/__tests__/components/common/Input.test.tsx +3 -2
  54. package/src/cli/ui/__tests__/components/common/LoadingIndicator.test.tsx +15 -14
  55. package/src/cli/ui/__tests__/components/common/Select.memo.test.tsx +3 -3
  56. package/src/cli/ui/__tests__/components/common/Select.test.tsx +1 -4
  57. package/src/cli/ui/__tests__/components/parts/Footer.test.tsx +3 -2
  58. package/src/cli/ui/__tests__/components/parts/Header.test.tsx +3 -2
  59. package/src/cli/ui/__tests__/components/parts/ScrollableList.test.tsx +3 -2
  60. package/src/cli/ui/__tests__/components/parts/Stats.test.tsx +3 -2
  61. package/src/cli/ui/__tests__/components/screens/AIToolSelectorScreen.test.tsx +3 -2
  62. package/src/cli/ui/__tests__/components/screens/BranchCreatorScreen.test.tsx +3 -2
  63. package/src/cli/ui/__tests__/components/screens/BranchListScreen.test.tsx +31 -41
  64. package/src/cli/ui/__tests__/components/screens/ExecutionModeSelectorScreen.test.tsx +3 -2
  65. package/src/cli/ui/__tests__/components/screens/PRCleanupScreen.test.tsx +3 -2
  66. package/src/cli/ui/__tests__/components/screens/SessionSelectorScreen.test.tsx +3 -2
  67. package/src/cli/ui/__tests__/hooks/useScreenState.test.ts +18 -17
  68. package/src/cli/ui/__tests__/hooks/useTerminalSize.test.ts +3 -2
  69. package/src/cli/ui/__tests__/integration/edgeCases.test.tsx +61 -41
  70. package/src/cli/ui/__tests__/integration/navigation.test.tsx +15 -10
  71. package/src/cli/ui/__tests__/integration/realtimeUpdate.test.tsx +3 -2
  72. package/src/cli/ui/__tests__/performance/branchList.performance.test.tsx +0 -4
  73. package/src/cli/ui/__tests__/performance/useMemoOptimization.test.tsx +3 -5
  74. package/src/cli/ui/__tests__/utils/branchFormatter.test.ts +24 -22
  75. package/src/cli/ui/components/App.tsx +5 -63
  76. package/src/cli/ui/components/common/Input.tsx +1 -1
  77. package/src/cli/ui/components/screens/BranchListScreen.tsx +32 -22
  78. package/src/cli/ui/components/screens/ModelSelectorScreen.tsx +46 -49
  79. package/src/cli/ui/components/screens/PRCleanupScreen.tsx +0 -3
  80. package/src/cli/ui/hooks/useGitData.ts +59 -1
  81. package/src/cli/ui/screens/__tests__/BranchActionSelectorScreen.test.tsx +3 -2
  82. package/src/cli/ui/types.ts +24 -5
  83. package/src/cli/ui/utils/branchFormatter.ts +123 -15
  84. package/src/cli/ui/utils/modelOptions.test.ts +4 -6
  85. package/src/cli/ui/utils/modelOptions.ts +1 -2
  86. package/src/config/index.ts +2 -1
  87. package/src/git.ts +56 -16
  88. package/src/index.test.ts +1 -1
  89. package/src/web/client/src/components/BranchGraph.tsx +1 -1
  90. package/src/web/client/src/pages/BranchDetailPage.tsx +8 -3
  91. package/src/web/server/routes/sessions.ts +12 -5
  92. package/src/worktree.ts +80 -91
  93. package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts +0 -20
  94. package/dist/cli/ui/components/screens/WorktreeManagerScreen.d.ts.map +0 -1
  95. package/dist/cli/ui/components/screens/WorktreeManagerScreen.js +0 -65
  96. package/dist/cli/ui/components/screens/WorktreeManagerScreen.js.map +0 -1
  97. package/src/cli/ui/__tests__/components/screens/WorktreeManagerScreen.test.tsx +0 -151
  98. package/src/cli/ui/components/screens/WorktreeManagerScreen.tsx +0 -117
package/dist/worktree.js CHANGED
@@ -2,11 +2,27 @@ import { execa } from "execa";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
4
  import chalk from "chalk";
5
- import { getPullRequestByBranch, getMergedPullRequests } from "./github.js";
5
+ import { getPullRequestByBranch } from "./github.js";
6
6
  import { hasUncommittedChanges, hasUnpushedCommits, hasUnpushedCommitsInRepo, getLocalBranches, checkRemoteBranchExists, branchHasUniqueCommitsComparedToBase, getRepositoryRoot, getWorktreeRoot, ensureGitignoreEntry, branchExists, getCurrentBranch, } from "./git.js";
7
7
  import { getConfig } from "./config/index.js";
8
8
  import { GIT_CONFIG } from "./config/constants.js";
9
9
  import { startSpinner } from "./utils/spinner.js";
10
+ async function getUpstreamBranch(branch) {
11
+ try {
12
+ const result = await execa("git", [
13
+ "rev-parse",
14
+ "--abbrev-ref",
15
+ `${branch}@{upstream}`,
16
+ ]);
17
+ const stdout = typeof result?.stdout === "string"
18
+ ? result.stdout.trim()
19
+ : "";
20
+ return stdout.length ? stdout : null;
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
10
26
  // 保護対象のブランチ(クリーンアップから除外)
11
27
  export const PROTECTED_BRANCHES = ["main", "master", "develop"];
12
28
  export function isProtectedBranchName(branchName) {
@@ -50,7 +66,9 @@ async function listWorktrees() {
50
66
  try {
51
67
  const { getRepositoryRoot } = await import("./git.js");
52
68
  const repoRoot = await getRepositoryRoot();
53
- const { stdout } = await execa("git", ["worktree", "list", "--porcelain"], { cwd: repoRoot });
69
+ const { stdout } = await execa("git", ["worktree", "list", "--porcelain"], {
70
+ cwd: repoRoot,
71
+ });
54
72
  const worktrees = [];
55
73
  const lines = stdout.split("\n");
56
74
  let currentWorktree = {};
@@ -297,10 +315,10 @@ async function getWorktreesWithPRStatus() {
297
315
  return worktreesWithPR;
298
316
  }
299
317
  /**
300
- * worktreeに存在しないローカルブランチの中でマージ済みPRに関連するクリーンアップ候補を取得
318
+ * worktreeに存在しないローカルブランチのクリーンアップ候補を取得
301
319
  * @returns {Promise<CleanupTarget[]>} クリーンアップ候補の配列
302
320
  */
303
- async function getOrphanedLocalBranches({ mergedPRs, baseBranch, repoRoot, }) {
321
+ async function getOrphanedLocalBranches({ baseBranch, repoRoot, }) {
304
322
  try {
305
323
  // 並列実行で高速化
306
324
  const [localBranches, worktrees] = await Promise.all([
@@ -324,7 +342,6 @@ async function getOrphanedLocalBranches({ mergedPRs, baseBranch, repoRoot, }) {
324
342
  }
325
343
  // worktreeに存在しないローカルブランチのみ対象
326
344
  if (!worktreeBranches.has(localBranch.name)) {
327
- const mergedPR = findMatchingPR(localBranch.name, mergedPRs);
328
345
  let hasUnpushed = false;
329
346
  try {
330
347
  hasUnpushed = await hasUnpushedCommitsInRepo(localBranch.name, repoRoot);
@@ -333,30 +350,30 @@ async function getOrphanedLocalBranches({ mergedPRs, baseBranch, repoRoot, }) {
333
350
  hasUnpushed = true;
334
351
  }
335
352
  const reasons = [];
336
- if (mergedPR) {
337
- reasons.push("merged-pr");
338
- }
339
- if (!hasUnpushed) {
340
- const hasUniqueCommits = await branchHasUniqueCommitsComparedToBase(localBranch.name, baseBranch, repoRoot);
341
- if (!hasUniqueCommits) {
342
- reasons.push("no-diff-with-base");
343
- }
353
+ const upstreamBranch = await getUpstreamBranch(localBranch.name);
354
+ const comparisonBase = upstreamBranch ?? baseBranch;
355
+ const hasUniqueCommits = await branchHasUniqueCommitsComparedToBase(localBranch.name, comparisonBase, repoRoot);
356
+ if (!hasUniqueCommits) {
357
+ reasons.push("no-diff-with-base");
344
358
  }
345
359
  if (process.env.DEBUG_CLEANUP) {
346
- console.log(chalk.gray(`Debug: Checking orphaned branch ${localBranch.name} -> PR: ${mergedPR ? "MATCH" : "NO MATCH"}, reasons: ${reasons.join(", ")}`));
360
+ console.log(chalk.gray(`Debug: Checking orphaned branch ${localBranch.name} -> reasons: ${reasons.join(", ")}`));
361
+ }
362
+ let hasRemoteBranch = false;
363
+ try {
364
+ hasRemoteBranch = await checkRemoteBranchExists(localBranch.name);
365
+ }
366
+ catch {
367
+ hasRemoteBranch = false;
368
+ }
369
+ if (!hasUnpushed && hasRemoteBranch && hasUniqueCommits) {
370
+ reasons.push("remote-synced");
347
371
  }
348
372
  if (reasons.length > 0) {
349
- let hasRemoteBranch = false;
350
- try {
351
- hasRemoteBranch = await checkRemoteBranchExists(localBranch.name);
352
- }
353
- catch {
354
- hasRemoteBranch = false;
355
- }
356
373
  cleanupTargets.push({
357
374
  worktreePath: null, // worktreeは存在しない
358
375
  branch: localBranch.name,
359
- pullRequest: mergedPR ?? null,
376
+ pullRequest: null,
360
377
  hasUncommittedChanges: false, // worktreeが存在しないため常にfalse
361
378
  hasUnpushedCommits: hasUnpushed,
362
379
  cleanupType: "branch-only",
@@ -379,40 +396,18 @@ async function getOrphanedLocalBranches({ mergedPRs, baseBranch, repoRoot, }) {
379
396
  return [];
380
397
  }
381
398
  }
382
- function normalizeBranchName(branchName) {
383
- return branchName
384
- .replace(/^origin\//, "")
385
- .replace(/^refs\/heads\//, "")
386
- .replace(/^refs\/remotes\/origin\//, "")
387
- .trim();
388
- }
389
- function findMatchingPR(worktreeBranch, mergedPRs) {
390
- const normalizedWorktreeBranch = normalizeBranchName(worktreeBranch);
391
- for (const pr of mergedPRs) {
392
- const normalizedPRBranch = normalizeBranchName(pr.branch);
393
- if (normalizedWorktreeBranch === normalizedPRBranch) {
394
- return pr;
395
- }
396
- }
397
- return null;
398
- }
399
399
  /**
400
400
  * マージ済みPRに関連するworktreeおよびローカルブランチのクリーンアップ候補を取得
401
401
  * @returns {Promise<CleanupTarget[]>} クリーンアップ候補の配列
402
402
  */
403
403
  export async function getMergedPRWorktrees() {
404
- const [config, repoRoot] = await Promise.all([
404
+ const [config, repoRoot, worktreesWithPR] = await Promise.all([
405
405
  getConfig(),
406
406
  getRepositoryRoot(),
407
- ]);
408
- const baseBranch = config.defaultBaseBranch || GIT_CONFIG.DEFAULT_BASE_BRANCH;
409
- // 並列実行で高速化 - worktreeとマージ済みPRの両方を取得
410
- const [mergedPRs, worktreesWithPR] = await Promise.all([
411
- getMergedPullRequests(),
412
407
  getWorktreesWithPRStatus(),
413
408
  ]);
409
+ const baseBranch = config.defaultBaseBranch || GIT_CONFIG.DEFAULT_BASE_BRANCH;
414
410
  const orphanedBranches = await getOrphanedLocalBranches({
415
- mergedPRs,
416
411
  baseBranch,
417
412
  repoRoot,
418
413
  });
@@ -420,8 +415,6 @@ export async function getMergedPRWorktrees() {
420
415
  if (process.env.DEBUG_CLEANUP) {
421
416
  console.log(chalk.cyan("Debug: Available worktrees:"));
422
417
  worktreesWithPR.forEach((w) => console.log(` ${w.branch} -> ${w.worktreePath}`));
423
- console.log(chalk.cyan("Debug: Merged PRs:"));
424
- mergedPRs.forEach((pr) => console.log(` ${pr.branch} (PR #${pr.number})`));
425
418
  }
426
419
  for (const worktree of worktreesWithPR) {
427
420
  // 保護対象ブランチはスキップ
@@ -431,18 +424,21 @@ export async function getMergedPRWorktrees() {
431
424
  }
432
425
  continue;
433
426
  }
434
- const mergedPR = findMatchingPR(worktree.branch, mergedPRs);
435
427
  if (process.env.DEBUG_CLEANUP) {
436
- const normalizedWorktree = normalizeBranchName(worktree.branch);
437
- console.log(chalk.gray(`Debug: Checking worktree ${worktree.branch} (normalized: ${normalizedWorktree}) -> ${mergedPR ? "MATCH" : "NO MATCH"}`));
428
+ console.log(chalk.gray(`Debug: Checking worktree ${worktree.branch}`));
438
429
  }
439
430
  const cleanupReasons = [];
440
- if (mergedPR) {
441
- cleanupReasons.push("merged-pr");
442
- }
443
431
  // worktreeパスの存在を確認
444
432
  const fs = await import("node:fs");
445
- const isAccessible = fs.existsSync(worktree.worktreePath);
433
+ // Some test environments mock node:fs without existsSync on the module root.
434
+ const existsSync = typeof fs.existsSync === "function"
435
+ ? fs.existsSync
436
+ : typeof fs.default
437
+ ?.existsSync === "function"
438
+ ? fs.default
439
+ .existsSync
440
+ : null;
441
+ const isAccessible = existsSync ? existsSync(worktree.worktreePath) : false;
446
442
  let hasUncommitted = false;
447
443
  let hasUnpushed = false;
448
444
  if (isAccessible) {
@@ -460,11 +456,23 @@ export async function getMergedPRWorktrees() {
460
456
  }
461
457
  }
462
458
  }
463
- if (!hasUnpushed) {
464
- const hasUniqueCommits = await branchHasUniqueCommitsComparedToBase(worktree.branch, baseBranch, repoRoot);
465
- if (!hasUniqueCommits) {
466
- cleanupReasons.push("no-diff-with-base");
467
- }
459
+ let hasRemoteBranch = false;
460
+ try {
461
+ hasRemoteBranch = await checkRemoteBranchExists(worktree.branch);
462
+ }
463
+ catch {
464
+ hasRemoteBranch = false;
465
+ }
466
+ const upstreamBranch = await getUpstreamBranch(worktree.branch);
467
+ const comparisonBase = upstreamBranch ?? baseBranch;
468
+ const hasUniqueCommits = await branchHasUniqueCommitsComparedToBase(worktree.branch, comparisonBase, repoRoot);
469
+ // 差分がない場合はベース同等としてクリーンアップ候補
470
+ if (!hasUniqueCommits) {
471
+ cleanupReasons.push("no-diff-with-base");
472
+ }
473
+ else if (!hasUncommitted && !hasUnpushed && hasRemoteBranch) {
474
+ // 未マージでも、ローカルに未コミット/未プッシュがなくリモートが最新ならローカルのみクリーンアップ許可
475
+ cleanupReasons.push("remote-synced");
468
476
  }
469
477
  if (process.env.DEBUG_CLEANUP) {
470
478
  console.log(chalk.gray(`Debug: Cleanup reasons for ${worktree.branch}: ${cleanupReasons.length > 0 ? cleanupReasons.join(", ") : "none"}`));
@@ -472,11 +480,10 @@ export async function getMergedPRWorktrees() {
472
480
  if (cleanupReasons.length === 0) {
473
481
  continue;
474
482
  }
475
- const hasRemoteBranch = await checkRemoteBranchExists(worktree.branch);
476
483
  const target = {
477
484
  worktreePath: worktree.worktreePath,
478
485
  branch: worktree.branch,
479
- pullRequest: mergedPR ?? null,
486
+ pullRequest: null,
480
487
  hasUncommittedChanges: hasUncommitted,
481
488
  hasUnpushedCommits: hasUnpushed,
482
489
  cleanupType: "worktree-and-branch",
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../src/worktree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../src/worktree.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.9.1",
3
+ "version": "2.11.0",
4
4
  "description": "Interactive Git worktree manager for Claude Code with graphical branch selection",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -63,8 +63,9 @@ describe("Acceptance: Navigation (User Story 2)", () => {
63
63
  beforeEach(() => {
64
64
  // Setup happy-dom
65
65
  const window = new Window();
66
- globalThis.window = window as any;
67
- globalThis.document = window.document as any;
66
+ globalThis.window = window as unknown as typeof globalThis.window;
67
+ globalThis.document =
68
+ window.document as unknown as typeof globalThis.document;
68
69
 
69
70
  // Reset mocks
70
71
  mockedGetAllBranches.mockReset();
@@ -153,9 +154,9 @@ describe("Acceptance: Navigation (User Story 2)", () => {
153
154
 
154
155
  /**
155
156
  * T076: Acceptance Scenario 3
156
- * Worktree管理でアクション実行後に適切に遷移
157
+ * ブランチリスト画面でフッターアクションが表示される
157
158
  */
158
- it("[AC3] should handle worktree management navigation", async () => {
159
+ it("[AC3] should display footer actions on branch list screen", async () => {
159
160
  (getAllBranches as ReturnType<typeof vi.fn>).mockResolvedValue(
160
161
  mockBranches,
161
162
  );
@@ -175,18 +176,9 @@ describe("Acceptance: Navigation (User Story 2)", () => {
175
176
  expect(getByText(/gwt - Branch Selection/i)).toBeDefined();
176
177
  });
177
178
 
178
- // Verify m key action is available for worktree management
179
- const mKeyElements = container.querySelectorAll("*");
180
- let hasMKey = false;
181
- mKeyElements.forEach((el) => {
182
- if (el.textContent?.toLowerCase().includes("manage worktrees")) {
183
- hasMKey = true;
184
- }
185
- });
186
-
187
- expect(hasMKey || container.textContent?.toLowerCase().includes("m")).toBe(
188
- true,
189
- );
179
+ // Verify footer actions are available
180
+ const footerText = container.textContent || "";
181
+ expect(footerText.toLowerCase()).toContain("enter");
190
182
  });
191
183
 
192
184
  it("[Integration] should support all navigation keys", async () => {
@@ -224,7 +216,7 @@ describe("Acceptance: Navigation (User Story 2)", () => {
224
216
  // Verify footer has multiple action keys (main screen doesn't have q key)
225
217
  const footerText = container.textContent || "";
226
218
  expect(footerText.toLowerCase()).toContain("enter");
227
- expect(footerText.toLowerCase()).toContain("m"); // Manage worktrees
219
+ expect(footerText.toLowerCase()).toContain("r"); // Refresh
228
220
  });
229
221
  });
230
222
 
@@ -1,59 +1,74 @@
1
1
  /**
2
2
  * @vitest-environment happy-dom
3
3
  */
4
- import {
5
- describe,
6
- it,
7
- expect,
8
- beforeEach,
9
- afterEach,
10
- afterAll,
11
- vi,
12
- } from "vitest";
4
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
13
5
  import { act, render } from "@testing-library/react";
14
6
  import React from "react";
15
7
  import { Window } from "happy-dom";
16
- import { App } from "../../components/App.js";
17
- import type { BranchInfo, BranchItem } from "../../types.js";
18
- import * as useGitDataModule from "../../hooks/useGitData.js";
19
- import * as useScreenStateModule from "../../hooks/useScreenState.js";
20
- import * as BranchListScreenModule from "../../components/screens/BranchListScreen.js";
21
- import * as BranchActionSelectorScreenModule from "../../screens/BranchActionSelectorScreen.js";
22
- import * as worktreeModule from "../../../../worktree.ts";
23
- import * as gitModule from "../../../../git.ts";
24
- import type { ScreenType } from "../../types.js";
8
+ import type { BranchInfo, BranchItem, ScreenType } from "../../types.js";
9
+ import type { BranchListScreenProps } from "../../components/screens/BranchListScreen.js";
10
+ import type { BranchActionSelectorScreenProps } from "../../screens/BranchActionSelectorScreen.js";
25
11
 
26
12
  const navigateToMock = vi.fn();
27
13
  const goBackMock = vi.fn();
28
14
  const resetMock = vi.fn();
29
15
 
30
- const originalUseGitData = useGitDataModule.useGitData;
31
- const originalUseScreenState = useScreenStateModule.useScreenState;
32
- const originalBranchListScreen = BranchListScreenModule.BranchListScreen;
33
- const originalBranchActionSelector =
34
- BranchActionSelectorScreenModule.BranchActionSelectorScreen;
35
- const originalGetRepositoryRoot = gitModule.getRepositoryRoot;
36
-
37
- const useGitDataSpy = vi.spyOn(useGitDataModule, "useGitData");
38
- const useScreenStateSpy = vi.spyOn(useScreenStateModule, "useScreenState");
39
- const branchListScreenSpy = vi.spyOn(
40
- BranchListScreenModule,
41
- "BranchListScreen",
42
- );
43
- const branchActionSelectorSpy = vi.spyOn(
44
- BranchActionSelectorScreenModule,
45
- "BranchActionSelectorScreen",
46
- );
47
- const switchToProtectedBranchSpy = vi.spyOn(
48
- worktreeModule,
49
- "switchToProtectedBranch",
50
- );
51
- const getRepositoryRootSpy = vi.spyOn(gitModule, "getRepositoryRoot");
52
-
53
- const branchListProps: any[] = [];
54
- const branchActionProps: any[] = [];
55
- const aiToolProps: any[] = [];
16
+ const branchListProps: BranchListScreenProps[] = [];
17
+ const branchActionProps: BranchActionSelectorScreenProps[] = [];
18
+ const aiToolProps: unknown[] = [];
56
19
  let currentScreenState: ScreenType;
20
+ let App: typeof import("../../components/App.js").App;
21
+ const useGitDataMock = vi.fn();
22
+ const useScreenStateMock = vi.fn();
23
+ const switchToProtectedBranchMock = vi.fn();
24
+ const getRepositoryRootMock = vi.fn();
25
+
26
+ vi.mock("../../hooks/useGitData.js", () => ({
27
+ useGitData: (...args: unknown[]) => useGitDataMock(...args),
28
+ }));
29
+
30
+ vi.mock("../../hooks/useScreenState.js", () => ({
31
+ useScreenState: (...args: unknown[]) => useScreenStateMock(...args),
32
+ }));
33
+
34
+ vi.mock("../../../../worktree.js", async () => {
35
+ const actual = await vi.importActual<
36
+ typeof import("../../../../worktree.js")
37
+ >("../../../../worktree.js");
38
+ return {
39
+ ...actual,
40
+ switchToProtectedBranch: switchToProtectedBranchMock,
41
+ };
42
+ });
43
+
44
+ vi.mock("../../../../git.js", async () => {
45
+ const actual =
46
+ await vi.importActual<typeof import("../../../../git.js")>(
47
+ "../../../../git.js",
48
+ );
49
+ return {
50
+ ...actual,
51
+ getRepositoryRoot: getRepositoryRootMock,
52
+ };
53
+ });
54
+
55
+ vi.mock("../../components/screens/BranchListScreen.js", () => {
56
+ return {
57
+ BranchListScreen: (props: BranchListScreenProps) => {
58
+ branchListProps.push(props);
59
+ return React.createElement("div", null, "BranchListScreenMock");
60
+ },
61
+ };
62
+ });
63
+
64
+ vi.mock("../../screens/BranchActionSelectorScreen.js", () => {
65
+ return {
66
+ BranchActionSelectorScreen: (props: BranchActionSelectorScreenProps) => {
67
+ branchActionProps.push(props);
68
+ return React.createElement("div", null, "BranchActionSelectorMock");
69
+ },
70
+ };
71
+ });
57
72
 
58
73
  vi.mock("../../components/screens/AIToolSelectorScreen.js", () => {
59
74
  return {
@@ -65,10 +80,11 @@ vi.mock("../../components/screens/AIToolSelectorScreen.js", () => {
65
80
  });
66
81
 
67
82
  describe("App protected branch handling", () => {
68
- beforeEach(() => {
83
+ beforeEach(async () => {
69
84
  const window = new Window();
70
- globalThis.window = window as any;
71
- globalThis.document = window.document as any;
85
+ globalThis.window = window as unknown as typeof globalThis.window;
86
+ globalThis.document =
87
+ window.document as unknown as typeof globalThis.document;
72
88
 
73
89
  currentScreenState = "branch-list";
74
90
  navigateToMock.mockReset();
@@ -78,11 +94,12 @@ describe("App protected branch handling", () => {
78
94
  branchActionProps.length = 0;
79
95
  aiToolProps.length = 0;
80
96
 
81
- useGitDataSpy.mockReset();
82
- switchToProtectedBranchSpy.mockReset();
83
- getRepositoryRootSpy.mockReset();
97
+ useGitDataMock.mockReset();
98
+ switchToProtectedBranchMock.mockReset();
99
+ getRepositoryRootMock.mockReset();
100
+ App = (await import("../../components/App.js")).App;
84
101
 
85
- useScreenStateSpy.mockImplementation(() => ({
102
+ useScreenStateMock.mockImplementation(() => ({
86
103
  currentScreen: currentScreenState,
87
104
  navigateTo: (screen: ScreenType) => {
88
105
  navigateToMock(screen);
@@ -95,41 +112,18 @@ describe("App protected branch handling", () => {
95
112
  },
96
113
  }));
97
114
 
98
- branchListScreenSpy.mockImplementation((props: any) => {
99
- branchListProps.push(props);
100
- return React.createElement(originalBranchListScreen, props);
101
- });
102
- branchActionSelectorSpy.mockImplementation((props: any) => {
103
- branchActionProps.push(props);
104
- return React.createElement(originalBranchActionSelector, props);
105
- });
106
- switchToProtectedBranchSpy.mockResolvedValue("local");
107
- getRepositoryRootSpy.mockResolvedValue("/repo");
115
+ switchToProtectedBranchMock.mockResolvedValue("local");
116
+ getRepositoryRootMock.mockResolvedValue("/repo");
108
117
  });
109
118
 
110
119
  afterEach(() => {
111
- useGitDataSpy.mockReset();
112
- useGitDataSpy.mockImplementation(originalUseGitData);
113
- useScreenStateSpy.mockReset();
114
- useScreenStateSpy.mockImplementation(originalUseScreenState);
115
- branchListScreenSpy.mockImplementation(originalBranchListScreen as any);
116
- branchActionSelectorSpy.mockImplementation(
117
- originalBranchActionSelector as any,
118
- );
119
- switchToProtectedBranchSpy.mockReset();
120
- getRepositoryRootSpy.mockReset();
120
+ useGitDataMock.mockReset();
121
+ useScreenStateMock.mockReset();
122
+ switchToProtectedBranchMock.mockReset();
123
+ getRepositoryRootMock.mockReset();
121
124
  branchActionProps.length = 0;
122
125
  });
123
126
 
124
- afterAll(() => {
125
- useGitDataSpy.mockRestore();
126
- useScreenStateSpy.mockRestore();
127
- branchListScreenSpy.mockRestore();
128
- branchActionSelectorSpy.mockRestore();
129
- switchToProtectedBranchSpy.mockRestore();
130
- getRepositoryRootSpy.mockRestore();
131
- });
132
-
133
127
  it("shows protected branch warning and switches root without launching AI tool", async () => {
134
128
  const branches: BranchInfo[] = [
135
129
  {
@@ -146,14 +140,14 @@ describe("App protected branch handling", () => {
146
140
  },
147
141
  ];
148
142
 
149
- useGitDataSpy.mockImplementation(() => ({
143
+ useGitDataMock.mockReturnValue({
150
144
  branches,
151
145
  worktrees: [],
152
146
  loading: false,
153
147
  error: null,
154
148
  refresh: vi.fn(),
155
149
  lastUpdated: null,
156
- }));
150
+ });
157
151
 
158
152
  render(<App onExit={vi.fn()} />);
159
153
 
@@ -193,7 +187,7 @@ describe("App protected branch handling", () => {
193
187
  await Promise.resolve();
194
188
  });
195
189
 
196
- expect(switchToProtectedBranchSpy).toHaveBeenCalledWith({
190
+ expect(switchToProtectedBranchMock).toHaveBeenCalledWith({
197
191
  branchName: "main",
198
192
  repoRoot: expect.any(String),
199
193
  remoteRef: null,