@akiojin/gwt 2.0.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 (132) hide show
  1. package/README.ja.md +323 -0
  2. package/README.md +347 -0
  3. package/bin/gwt.js +5 -0
  4. package/package.json +125 -0
  5. package/src/claude-history.ts +717 -0
  6. package/src/claude.ts +292 -0
  7. package/src/cli/ui/__tests__/SKIPPED_TESTS.md +119 -0
  8. package/src/cli/ui/__tests__/acceptance/branchList.acceptance.test.tsx.skip +239 -0
  9. package/src/cli/ui/__tests__/acceptance/navigation.acceptance.test.tsx +214 -0
  10. package/src/cli/ui/__tests__/acceptance/realtimeUpdate.acceptance.test.tsx.skip +219 -0
  11. package/src/cli/ui/__tests__/components/App.protected-branch.test.tsx +183 -0
  12. package/src/cli/ui/__tests__/components/App.shortcuts.test.tsx +313 -0
  13. package/src/cli/ui/__tests__/components/App.test.tsx +270 -0
  14. package/src/cli/ui/__tests__/components/common/Confirm.test.tsx +66 -0
  15. package/src/cli/ui/__tests__/components/common/ErrorBoundary.test.tsx +103 -0
  16. package/src/cli/ui/__tests__/components/common/Input.test.tsx +92 -0
  17. package/src/cli/ui/__tests__/components/common/LoadingIndicator.test.tsx +127 -0
  18. package/src/cli/ui/__tests__/components/common/Select.memo.test.tsx +264 -0
  19. package/src/cli/ui/__tests__/components/common/Select.test.tsx +246 -0
  20. package/src/cli/ui/__tests__/components/parts/Footer.test.tsx +62 -0
  21. package/src/cli/ui/__tests__/components/parts/Header.test.tsx +54 -0
  22. package/src/cli/ui/__tests__/components/parts/ScrollableList.test.tsx +68 -0
  23. package/src/cli/ui/__tests__/components/parts/Stats.test.tsx +135 -0
  24. package/src/cli/ui/__tests__/components/screens/AIToolSelectorScreen.test.tsx +153 -0
  25. package/src/cli/ui/__tests__/components/screens/BranchCreatorScreen.test.tsx +215 -0
  26. package/src/cli/ui/__tests__/components/screens/BranchListScreen.test.tsx +293 -0
  27. package/src/cli/ui/__tests__/components/screens/ExecutionModeSelectorScreen.test.tsx +161 -0
  28. package/src/cli/ui/__tests__/components/screens/PRCleanupScreen.test.tsx +215 -0
  29. package/src/cli/ui/__tests__/components/screens/SessionSelectorScreen.test.tsx +99 -0
  30. package/src/cli/ui/__tests__/components/screens/WorktreeManagerScreen.test.tsx +127 -0
  31. package/src/cli/ui/__tests__/hooks/useGitData.test.ts.skip +228 -0
  32. package/src/cli/ui/__tests__/hooks/useScreenState.test.ts +146 -0
  33. package/src/cli/ui/__tests__/hooks/useTerminalSize.test.ts +98 -0
  34. package/src/cli/ui/__tests__/integration/branchList.test.tsx.skip +253 -0
  35. package/src/cli/ui/__tests__/integration/edgeCases.test.tsx +306 -0
  36. package/src/cli/ui/__tests__/integration/navigation.test.tsx +405 -0
  37. package/src/cli/ui/__tests__/integration/realtimeUpdate.test.tsx +505 -0
  38. package/src/cli/ui/__tests__/integration/realtimeUpdate.test.tsx.skip +216 -0
  39. package/src/cli/ui/__tests__/performance/branchList.performance.test.tsx +180 -0
  40. package/src/cli/ui/__tests__/performance/useMemoOptimization.test.tsx +237 -0
  41. package/src/cli/ui/__tests__/utils/branchFormatter.test.ts +775 -0
  42. package/src/cli/ui/__tests__/utils/statisticsCalculator.test.ts +243 -0
  43. package/src/cli/ui/components/App.tsx +793 -0
  44. package/src/cli/ui/components/common/Confirm.tsx +40 -0
  45. package/src/cli/ui/components/common/ErrorBoundary.tsx +57 -0
  46. package/src/cli/ui/components/common/Input.tsx +36 -0
  47. package/src/cli/ui/components/common/LoadingIndicator.tsx +95 -0
  48. package/src/cli/ui/components/common/Select.tsx +216 -0
  49. package/src/cli/ui/components/parts/Footer.tsx +41 -0
  50. package/src/cli/ui/components/parts/Header.test.tsx +85 -0
  51. package/src/cli/ui/components/parts/Header.tsx +63 -0
  52. package/src/cli/ui/components/parts/MergeStatusList.tsx +75 -0
  53. package/src/cli/ui/components/parts/ProgressBar.tsx +73 -0
  54. package/src/cli/ui/components/parts/ScrollableList.tsx +24 -0
  55. package/src/cli/ui/components/parts/Stats.tsx +67 -0
  56. package/src/cli/ui/components/screens/AIToolSelectorScreen.tsx +116 -0
  57. package/src/cli/ui/components/screens/BatchMergeProgressScreen.tsx +70 -0
  58. package/src/cli/ui/components/screens/BatchMergeResultScreen.tsx +104 -0
  59. package/src/cli/ui/components/screens/BranchCreatorScreen.tsx +213 -0
  60. package/src/cli/ui/components/screens/BranchListScreen.tsx +299 -0
  61. package/src/cli/ui/components/screens/ExecutionModeSelectorScreen.tsx +149 -0
  62. package/src/cli/ui/components/screens/PRCleanupScreen.tsx +167 -0
  63. package/src/cli/ui/components/screens/SessionSelectorScreen.tsx +100 -0
  64. package/src/cli/ui/components/screens/WorktreeManagerScreen.tsx +117 -0
  65. package/src/cli/ui/hooks/useBatchMerge.ts +96 -0
  66. package/src/cli/ui/hooks/useGitData.ts +157 -0
  67. package/src/cli/ui/hooks/useScreenState.ts +44 -0
  68. package/src/cli/ui/hooks/useTerminalSize.ts +33 -0
  69. package/src/cli/ui/screens/BranchActionSelectorScreen.tsx +102 -0
  70. package/src/cli/ui/screens/__tests__/BranchActionSelectorScreen.test.tsx +151 -0
  71. package/src/cli/ui/types.ts +295 -0
  72. package/src/cli/ui/utils/baseBranch.ts +34 -0
  73. package/src/cli/ui/utils/branchFormatter.ts +222 -0
  74. package/src/cli/ui/utils/statisticsCalculator.ts +44 -0
  75. package/src/codex.ts +139 -0
  76. package/src/config/builtin-tools.ts +44 -0
  77. package/src/config/constants.ts +100 -0
  78. package/src/config/env-history.ts +45 -0
  79. package/src/config/index.ts +204 -0
  80. package/src/config/tools.ts +293 -0
  81. package/src/git.ts +1102 -0
  82. package/src/github.ts +158 -0
  83. package/src/index.test.ts +87 -0
  84. package/src/index.ts +684 -0
  85. package/src/index.ts.backup +1543 -0
  86. package/src/launcher.ts +142 -0
  87. package/src/repositories/git.repository.ts +129 -0
  88. package/src/repositories/github.repository.ts +83 -0
  89. package/src/repositories/worktree.repository.ts +69 -0
  90. package/src/services/BatchMergeService.ts +251 -0
  91. package/src/services/WorktreeOrchestrator.ts +115 -0
  92. package/src/services/__tests__/BatchMergeService.test.ts +518 -0
  93. package/src/services/__tests__/WorktreeOrchestrator.test.ts +258 -0
  94. package/src/services/dependency-installer.ts +199 -0
  95. package/src/services/git.service.ts +113 -0
  96. package/src/services/github.service.ts +61 -0
  97. package/src/services/worktree.service.ts +66 -0
  98. package/src/types/api.ts +241 -0
  99. package/src/types/tools.ts +235 -0
  100. package/src/utils/spinner.ts +54 -0
  101. package/src/utils/terminal.ts +272 -0
  102. package/src/utils.test.ts +43 -0
  103. package/src/utils.ts +60 -0
  104. package/src/web/client/index.html +12 -0
  105. package/src/web/client/src/components/BranchGraph.tsx +231 -0
  106. package/src/web/client/src/components/EnvEditor.tsx +145 -0
  107. package/src/web/client/src/components/Terminal.tsx +137 -0
  108. package/src/web/client/src/hooks/useBranches.ts +41 -0
  109. package/src/web/client/src/hooks/useConfig.ts +31 -0
  110. package/src/web/client/src/hooks/useSessions.ts +59 -0
  111. package/src/web/client/src/hooks/useWorktrees.ts +47 -0
  112. package/src/web/client/src/index.css +834 -0
  113. package/src/web/client/src/lib/api.ts +184 -0
  114. package/src/web/client/src/lib/websocket.ts +174 -0
  115. package/src/web/client/src/main.tsx +29 -0
  116. package/src/web/client/src/pages/BranchDetailPage.tsx +847 -0
  117. package/src/web/client/src/pages/BranchListPage.tsx +264 -0
  118. package/src/web/client/src/pages/ConfigManagementPage.tsx +203 -0
  119. package/src/web/client/src/router.tsx +27 -0
  120. package/src/web/client/vite.config.ts +21 -0
  121. package/src/web/server/env/importer.ts +54 -0
  122. package/src/web/server/index.ts +74 -0
  123. package/src/web/server/pty/manager.ts +189 -0
  124. package/src/web/server/routes/branches.ts +126 -0
  125. package/src/web/server/routes/config.ts +220 -0
  126. package/src/web/server/routes/index.ts +37 -0
  127. package/src/web/server/routes/sessions.ts +130 -0
  128. package/src/web/server/routes/worktrees.ts +108 -0
  129. package/src/web/server/services/branches.ts +368 -0
  130. package/src/web/server/services/worktrees.ts +85 -0
  131. package/src/web/server/websocket/handler.ts +180 -0
  132. package/src/worktree.ts +703 -0
package/package.json ADDED
@@ -0,0 +1,125 @@
1
+ {
2
+ "name": "@akiojin/gwt",
3
+ "version": "2.0.0",
4
+ "description": "Interactive Git worktree manager for Claude Code with graphical branch selection",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "gwt": "bin/gwt.js"
8
+ },
9
+ "type": "module",
10
+ "scripts": {
11
+ "build": "bun run build:cli && bun run build:web",
12
+ "build:cli": "tsc",
13
+ "build:server": "tsc",
14
+ "build:client": "vite build src/web/client",
15
+ "build:web": "bun run build:client",
16
+ "dev": "tsc --watch",
17
+ "dev:server": "bun run build:server && bun --watch src/web/server/index.ts",
18
+ "dev:client": "vite src/web/client",
19
+ "dev:web": "concurrently \"bun run dev:server\" \"bun run dev:client\"",
20
+ "start": "bun ./dist/index.js",
21
+ "start:web": "node ./dist/index.js serve",
22
+ "prepare": "husky",
23
+ "pretest": "bun run build:cli",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "test:ui": "vitest --ui",
27
+ "test:coverage": "vitest run --coverage",
28
+ "test:e2e": "playwright test",
29
+ "lint": "eslint src/**/*.ts src/**/*.tsx",
30
+ "format": "prettier --write \"src/**/*.ts\" \"src/**/*.tsx\" \"tests/**/*.ts\"",
31
+ "format:check": "prettier --check \"src/**/*.ts\" \"src/**/*.tsx\" \"tests/**/*.ts\"",
32
+ "type-check": "tsc --noEmit",
33
+ "clean": "rimraf dist"
34
+ },
35
+ "keywords": [
36
+ "git",
37
+ "worktree",
38
+ "claude",
39
+ "claude code",
40
+ "codex",
41
+ "gpt",
42
+ "cli",
43
+ "interactive",
44
+ "branch",
45
+ "development"
46
+ ],
47
+ "author": "akiojin",
48
+ "license": "MIT",
49
+ "engines": {
50
+ "bun": ">=1.0.0"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "dependencies": {
56
+ "@fastify/static": "^8.0.3",
57
+ "@fastify/websocket": "^11.2.0",
58
+ "@tanstack/react-query": "^5.66.1",
59
+ "chalk": "^5.4.1",
60
+ "execa": "^9.6.0",
61
+ "fastify": "^5.2.1",
62
+ "ink": "^6.3.1",
63
+ "ink-select-input": "^6.2.0",
64
+ "ink-text-input": "^6.0.0",
65
+ "node-pty": "1.1.0-beta9",
66
+ "react": "^19.2.0",
67
+ "react-dom": "^19.2.0",
68
+ "react-router": "^7.2.0",
69
+ "react-router-dom": "^7.2.0",
70
+ "string-width": "^7.2.0",
71
+ "ws": "^8.18.0",
72
+ "xterm": "^5.4.0-beta.37",
73
+ "xterm-addon-fit": "^0.9.0-beta.37",
74
+ "zustand": "^5.0.2"
75
+ },
76
+ "devDependencies": {
77
+ "@commitlint/cli": "^19.6.2",
78
+ "@commitlint/config-conventional": "^19.6.2",
79
+ "@playwright/test": "^1.51.0",
80
+ "@semantic-release/changelog": "^6.0.3",
81
+ "@semantic-release/commit-analyzer": "^13.0.1",
82
+ "@semantic-release/git": "^10.0.1",
83
+ "@semantic-release/github": "^12.0.0",
84
+ "@semantic-release/npm": "^13.1.1",
85
+ "@semantic-release/release-notes-generator": "^14.1.0",
86
+ "@testing-library/jest-dom": "^6.9.1",
87
+ "@testing-library/react": "^16.3.0",
88
+ "@types/node": "^22.16.5",
89
+ "@types/react": "^19.2.2",
90
+ "@types/react-dom": "^19.0.3",
91
+ "@types/ws": "^8.5.13",
92
+ "@typescript-eslint/eslint-plugin": "^8.38.0",
93
+ "@typescript-eslint/parser": "^8.38.0",
94
+ "@vitejs/plugin-react": "^4.3.4",
95
+ "@vitest/coverage-v8": "^4.0.8",
96
+ "@vitest/ui": "^4.0.8",
97
+ "concurrently": "^9.1.2",
98
+ "esbuild": "0.25.12",
99
+ "eslint": "^9.31.0",
100
+ "happy-dom": "^20.0.8",
101
+ "husky": "^9.1.7",
102
+ "ink-testing-library": "^4.0.0",
103
+ "jsdom": "^27.0.1",
104
+ "lint-staged": "^15.2.11",
105
+ "prettier": "^3.6.2",
106
+ "rimraf": "^6.0.1",
107
+ "semantic-release": "^25.0.1",
108
+ "typescript": "^5.8.3",
109
+ "vite": "^6.0.7",
110
+ "vitest": "^4.0.8"
111
+ },
112
+ "lint-staged": {
113
+ "*.md": "bunx --bun markdownlint-cli -c .markdownlint.json",
114
+ "*.{ts,tsx}": [
115
+ "bunx eslint --max-warnings=0",
116
+ "bunx prettier --check"
117
+ ]
118
+ },
119
+ "files": [
120
+ "dist/",
121
+ "src/",
122
+ "bin/",
123
+ "README.md"
124
+ ]
125
+ }