@akiojin/gwt 4.12.1 → 6.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 (860) hide show
  1. package/README.ja.md +173 -203
  2. package/README.md +170 -212
  3. package/bin/gwt +0 -0
  4. package/bin/gwt.js +42 -33
  5. package/package.json +20 -107
  6. package/scripts/postinstall.js +152 -0
  7. package/dist/claude-history.d.ts +0 -60
  8. package/dist/claude-history.d.ts.map +0 -1
  9. package/dist/claude-history.js +0 -606
  10. package/dist/claude-history.js.map +0 -1
  11. package/dist/claude.d.ts +0 -42
  12. package/dist/claude.d.ts.map +0 -1
  13. package/dist/claude.js +0 -429
  14. package/dist/claude.js.map +0 -1
  15. package/dist/cli/ui/App.solid.d.ts +0 -29
  16. package/dist/cli/ui/App.solid.d.ts.map +0 -1
  17. package/dist/cli/ui/App.solid.js +0 -1427
  18. package/dist/cli/ui/App.solid.js.map +0 -1
  19. package/dist/cli/ui/components/solid/Footer.d.ts +0 -10
  20. package/dist/cli/ui/components/solid/Footer.d.ts.map +0 -1
  21. package/dist/cli/ui/components/solid/Footer.js +0 -10
  22. package/dist/cli/ui/components/solid/Footer.js.map +0 -1
  23. package/dist/cli/ui/components/solid/Header.d.ts +0 -32
  24. package/dist/cli/ui/components/solid/Header.d.ts.map +0 -1
  25. package/dist/cli/ui/components/solid/Header.js +0 -13
  26. package/dist/cli/ui/components/solid/Header.js.map +0 -1
  27. package/dist/cli/ui/components/solid/HelpOverlay.d.ts +0 -8
  28. package/dist/cli/ui/components/solid/HelpOverlay.d.ts.map +0 -1
  29. package/dist/cli/ui/components/solid/HelpOverlay.js +0 -118
  30. package/dist/cli/ui/components/solid/HelpOverlay.js.map +0 -1
  31. package/dist/cli/ui/components/solid/QuickStartStep.d.ts +0 -17
  32. package/dist/cli/ui/components/solid/QuickStartStep.d.ts.map +0 -1
  33. package/dist/cli/ui/components/solid/QuickStartStep.js +0 -152
  34. package/dist/cli/ui/components/solid/QuickStartStep.js.map +0 -1
  35. package/dist/cli/ui/components/solid/SelectInput.d.ts +0 -22
  36. package/dist/cli/ui/components/solid/SelectInput.d.ts.map +0 -1
  37. package/dist/cli/ui/components/solid/SelectInput.js +0 -45
  38. package/dist/cli/ui/components/solid/SelectInput.js.map +0 -1
  39. package/dist/cli/ui/components/solid/TextInput.d.ts +0 -12
  40. package/dist/cli/ui/components/solid/TextInput.d.ts.map +0 -1
  41. package/dist/cli/ui/components/solid/TextInput.js +0 -9
  42. package/dist/cli/ui/components/solid/TextInput.js.map +0 -1
  43. package/dist/cli/ui/components/solid/WizardController.d.ts +0 -34
  44. package/dist/cli/ui/components/solid/WizardController.d.ts.map +0 -1
  45. package/dist/cli/ui/components/solid/WizardController.js +0 -269
  46. package/dist/cli/ui/components/solid/WizardController.js.map +0 -1
  47. package/dist/cli/ui/components/solid/WizardPopup.d.ts +0 -26
  48. package/dist/cli/ui/components/solid/WizardPopup.d.ts.map +0 -1
  49. package/dist/cli/ui/components/solid/WizardPopup.js +0 -68
  50. package/dist/cli/ui/components/solid/WizardPopup.js.map +0 -1
  51. package/dist/cli/ui/components/solid/WizardSteps.d.ts +0 -57
  52. package/dist/cli/ui/components/solid/WizardSteps.d.ts.map +0 -1
  53. package/dist/cli/ui/components/solid/WizardSteps.js +0 -442
  54. package/dist/cli/ui/components/solid/WizardSteps.js.map +0 -1
  55. package/dist/cli/ui/core/index.d.ts +0 -12
  56. package/dist/cli/ui/core/index.d.ts.map +0 -1
  57. package/dist/cli/ui/core/index.js +0 -15
  58. package/dist/cli/ui/core/index.js.map +0 -1
  59. package/dist/cli/ui/core/keybindings.d.ts +0 -106
  60. package/dist/cli/ui/core/keybindings.d.ts.map +0 -1
  61. package/dist/cli/ui/core/keybindings.js +0 -270
  62. package/dist/cli/ui/core/keybindings.js.map +0 -1
  63. package/dist/cli/ui/core/theme.d.ts +0 -123
  64. package/dist/cli/ui/core/theme.d.ts.map +0 -1
  65. package/dist/cli/ui/core/theme.js +0 -191
  66. package/dist/cli/ui/core/theme.js.map +0 -1
  67. package/dist/cli/ui/core/types.d.ts +0 -156
  68. package/dist/cli/ui/core/types.d.ts.map +0 -1
  69. package/dist/cli/ui/core/types.js +0 -10
  70. package/dist/cli/ui/core/types.js.map +0 -1
  71. package/dist/cli/ui/hooks/solid/useScrollableList.d.ts +0 -26
  72. package/dist/cli/ui/hooks/solid/useScrollableList.d.ts.map +0 -1
  73. package/dist/cli/ui/hooks/solid/useScrollableList.js +0 -89
  74. package/dist/cli/ui/hooks/solid/useScrollableList.js.map +0 -1
  75. package/dist/cli/ui/hooks/solid/useTerminalSize.d.ts +0 -10
  76. package/dist/cli/ui/hooks/solid/useTerminalSize.d.ts.map +0 -1
  77. package/dist/cli/ui/hooks/solid/useTerminalSize.js +0 -16
  78. package/dist/cli/ui/hooks/solid/useTerminalSize.js.map +0 -1
  79. package/dist/cli/ui/index.solid.d.ts +0 -5
  80. package/dist/cli/ui/index.solid.d.ts.map +0 -1
  81. package/dist/cli/ui/index.solid.js +0 -21
  82. package/dist/cli/ui/index.solid.js.map +0 -1
  83. package/dist/cli/ui/screens/solid/BranchListScreen.d.ts +0 -53
  84. package/dist/cli/ui/screens/solid/BranchListScreen.d.ts.map +0 -1
  85. package/dist/cli/ui/screens/solid/BranchListScreen.js +0 -829
  86. package/dist/cli/ui/screens/solid/BranchListScreen.js.map +0 -1
  87. package/dist/cli/ui/screens/solid/ConfirmScreen.d.ts +0 -11
  88. package/dist/cli/ui/screens/solid/ConfirmScreen.d.ts.map +0 -1
  89. package/dist/cli/ui/screens/solid/ConfirmScreen.js +0 -45
  90. package/dist/cli/ui/screens/solid/ConfirmScreen.js.map +0 -1
  91. package/dist/cli/ui/screens/solid/EnvironmentScreen.d.ts +0 -14
  92. package/dist/cli/ui/screens/solid/EnvironmentScreen.d.ts.map +0 -1
  93. package/dist/cli/ui/screens/solid/EnvironmentScreen.js +0 -90
  94. package/dist/cli/ui/screens/solid/EnvironmentScreen.js.map +0 -1
  95. package/dist/cli/ui/screens/solid/ErrorScreen.d.ts +0 -8
  96. package/dist/cli/ui/screens/solid/ErrorScreen.d.ts.map +0 -1
  97. package/dist/cli/ui/screens/solid/ErrorScreen.js +0 -18
  98. package/dist/cli/ui/screens/solid/ErrorScreen.js.map +0 -1
  99. package/dist/cli/ui/screens/solid/InputScreen.d.ts +0 -13
  100. package/dist/cli/ui/screens/solid/InputScreen.d.ts.map +0 -1
  101. package/dist/cli/ui/screens/solid/InputScreen.js +0 -17
  102. package/dist/cli/ui/screens/solid/InputScreen.js.map +0 -1
  103. package/dist/cli/ui/screens/solid/LoadingIndicator.d.ts +0 -9
  104. package/dist/cli/ui/screens/solid/LoadingIndicator.d.ts.map +0 -1
  105. package/dist/cli/ui/screens/solid/LoadingIndicator.js +0 -43
  106. package/dist/cli/ui/screens/solid/LoadingIndicator.js.map +0 -1
  107. package/dist/cli/ui/screens/solid/LogDetailScreen.d.ts +0 -14
  108. package/dist/cli/ui/screens/solid/LogDetailScreen.d.ts.map +0 -1
  109. package/dist/cli/ui/screens/solid/LogDetailScreen.js +0 -34
  110. package/dist/cli/ui/screens/solid/LogDetailScreen.js.map +0 -1
  111. package/dist/cli/ui/screens/solid/LogScreen.d.ts +0 -25
  112. package/dist/cli/ui/screens/solid/LogScreen.d.ts.map +0 -1
  113. package/dist/cli/ui/screens/solid/LogScreen.js +0 -333
  114. package/dist/cli/ui/screens/solid/LogScreen.js.map +0 -1
  115. package/dist/cli/ui/screens/solid/ProfileEnvScreen.d.ts +0 -17
  116. package/dist/cli/ui/screens/solid/ProfileEnvScreen.d.ts.map +0 -1
  117. package/dist/cli/ui/screens/solid/ProfileEnvScreen.js +0 -115
  118. package/dist/cli/ui/screens/solid/ProfileEnvScreen.js.map +0 -1
  119. package/dist/cli/ui/screens/solid/ProfileScreen.d.ts +0 -17
  120. package/dist/cli/ui/screens/solid/ProfileScreen.d.ts.map +0 -1
  121. package/dist/cli/ui/screens/solid/ProfileScreen.js +0 -50
  122. package/dist/cli/ui/screens/solid/ProfileScreen.js.map +0 -1
  123. package/dist/cli/ui/screens/solid/SelectorScreen.d.ts +0 -20
  124. package/dist/cli/ui/screens/solid/SelectorScreen.d.ts.map +0 -1
  125. package/dist/cli/ui/screens/solid/SelectorScreen.js +0 -98
  126. package/dist/cli/ui/screens/solid/SelectorScreen.js.map +0 -1
  127. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.d.ts +0 -13
  128. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.d.ts.map +0 -1
  129. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.js +0 -59
  130. package/dist/cli/ui/screens/solid/WorktreeCreateScreen.js.map +0 -1
  131. package/dist/cli/ui/stores/appStore.d.ts +0 -143
  132. package/dist/cli/ui/stores/appStore.d.ts.map +0 -1
  133. package/dist/cli/ui/stores/appStore.js +0 -158
  134. package/dist/cli/ui/stores/appStore.js.map +0 -1
  135. package/dist/cli/ui/stores/branchStore.d.ts +0 -159
  136. package/dist/cli/ui/stores/branchStore.d.ts.map +0 -1
  137. package/dist/cli/ui/stores/branchStore.js +0 -275
  138. package/dist/cli/ui/stores/branchStore.js.map +0 -1
  139. package/dist/cli/ui/stores/index.d.ts +0 -11
  140. package/dist/cli/ui/stores/index.d.ts.map +0 -1
  141. package/dist/cli/ui/stores/index.js +0 -14
  142. package/dist/cli/ui/stores/index.js.map +0 -1
  143. package/dist/cli/ui/stores/uiStore.d.ts +0 -146
  144. package/dist/cli/ui/stores/uiStore.d.ts.map +0 -1
  145. package/dist/cli/ui/stores/uiStore.js +0 -166
  146. package/dist/cli/ui/stores/uiStore.js.map +0 -1
  147. package/dist/cli/ui/types.d.ts +0 -293
  148. package/dist/cli/ui/types.d.ts.map +0 -1
  149. package/dist/cli/ui/types.js +0 -2
  150. package/dist/cli/ui/types.js.map +0 -1
  151. package/dist/cli/ui/utils/baseBranch.d.ts +0 -4
  152. package/dist/cli/ui/utils/baseBranch.d.ts.map +0 -1
  153. package/dist/cli/ui/utils/baseBranch.js +0 -17
  154. package/dist/cli/ui/utils/baseBranch.js.map +0 -1
  155. package/dist/cli/ui/utils/branchFormatter.d.ts +0 -19
  156. package/dist/cli/ui/utils/branchFormatter.d.ts.map +0 -1
  157. package/dist/cli/ui/utils/branchFormatter.js +0 -199
  158. package/dist/cli/ui/utils/branchFormatter.js.map +0 -1
  159. package/dist/cli/ui/utils/clipboard.d.ts +0 -7
  160. package/dist/cli/ui/utils/clipboard.d.ts.map +0 -1
  161. package/dist/cli/ui/utils/clipboard.js +0 -21
  162. package/dist/cli/ui/utils/clipboard.js.map +0 -1
  163. package/dist/cli/ui/utils/continueSession.d.ts +0 -36
  164. package/dist/cli/ui/utils/continueSession.d.ts.map +0 -1
  165. package/dist/cli/ui/utils/continueSession.js +0 -155
  166. package/dist/cli/ui/utils/continueSession.js.map +0 -1
  167. package/dist/cli/ui/utils/installedVersionCache.d.ts +0 -33
  168. package/dist/cli/ui/utils/installedVersionCache.d.ts.map +0 -1
  169. package/dist/cli/ui/utils/installedVersionCache.js +0 -59
  170. package/dist/cli/ui/utils/installedVersionCache.js.map +0 -1
  171. package/dist/cli/ui/utils/modelOptions.d.ts +0 -10
  172. package/dist/cli/ui/utils/modelOptions.d.ts.map +0 -1
  173. package/dist/cli/ui/utils/modelOptions.js +0 -155
  174. package/dist/cli/ui/utils/modelOptions.js.map +0 -1
  175. package/dist/cli/ui/utils/statisticsCalculator.d.ts +0 -9
  176. package/dist/cli/ui/utils/statisticsCalculator.d.ts.map +0 -1
  177. package/dist/cli/ui/utils/statisticsCalculator.js +0 -37
  178. package/dist/cli/ui/utils/statisticsCalculator.js.map +0 -1
  179. package/dist/cli/ui/utils/versionCache.d.ts +0 -37
  180. package/dist/cli/ui/utils/versionCache.d.ts.map +0 -1
  181. package/dist/cli/ui/utils/versionCache.js +0 -70
  182. package/dist/cli/ui/utils/versionCache.js.map +0 -1
  183. package/dist/cli/ui/utils/versionFetcher.d.ts +0 -41
  184. package/dist/cli/ui/utils/versionFetcher.d.ts.map +0 -1
  185. package/dist/cli/ui/utils/versionFetcher.js +0 -89
  186. package/dist/cli/ui/utils/versionFetcher.js.map +0 -1
  187. package/dist/client/assets/index-BbfV7Wuj.css +0 -1
  188. package/dist/client/assets/index-CoAyq5x1.js +0 -78
  189. package/dist/client/index.html +0 -13
  190. package/dist/codex.d.ts +0 -55
  191. package/dist/codex.d.ts.map +0 -1
  192. package/dist/codex.js +0 -329
  193. package/dist/codex.js.map +0 -1
  194. package/dist/config/builtin-coding-agents.d.ts +0 -27
  195. package/dist/config/builtin-coding-agents.d.ts.map +0 -1
  196. package/dist/config/builtin-coding-agents.js +0 -78
  197. package/dist/config/builtin-coding-agents.js.map +0 -1
  198. package/dist/config/constants.d.ts +0 -76
  199. package/dist/config/constants.d.ts.map +0 -1
  200. package/dist/config/constants.js +0 -92
  201. package/dist/config/constants.js.map +0 -1
  202. package/dist/config/env-history.d.ts +0 -4
  203. package/dist/config/env-history.d.ts.map +0 -1
  204. package/dist/config/env-history.js +0 -34
  205. package/dist/config/env-history.js.map +0 -1
  206. package/dist/config/index.d.ts +0 -51
  207. package/dist/config/index.d.ts.map +0 -1
  208. package/dist/config/index.js +0 -225
  209. package/dist/config/index.js.map +0 -1
  210. package/dist/config/profiles.d.ts +0 -94
  211. package/dist/config/profiles.d.ts.map +0 -1
  212. package/dist/config/profiles.js +0 -284
  213. package/dist/config/profiles.js.map +0 -1
  214. package/dist/config/shared-env.d.ts +0 -41
  215. package/dist/config/shared-env.d.ts.map +0 -1
  216. package/dist/config/shared-env.js +0 -114
  217. package/dist/config/shared-env.js.map +0 -1
  218. package/dist/config/tools.d.ts +0 -50
  219. package/dist/config/tools.d.ts.map +0 -1
  220. package/dist/config/tools.js +0 -239
  221. package/dist/config/tools.js.map +0 -1
  222. package/dist/gemini.d.ts +0 -35
  223. package/dist/gemini.d.ts.map +0 -1
  224. package/dist/gemini.js +0 -299
  225. package/dist/gemini.js.map +0 -1
  226. package/dist/git.d.ts +0 -154
  227. package/dist/git.d.ts.map +0 -1
  228. package/dist/git.js +0 -1012
  229. package/dist/git.js.map +0 -1
  230. package/dist/github.d.ts +0 -14
  231. package/dist/github.d.ts.map +0 -1
  232. package/dist/github.js +0 -123
  233. package/dist/github.js.map +0 -1
  234. package/dist/index.d.ts +0 -16
  235. package/dist/index.d.ts.map +0 -1
  236. package/dist/index.js +0 -782
  237. package/dist/index.js.map +0 -1
  238. package/dist/launcher.d.ts +0 -30
  239. package/dist/launcher.d.ts.map +0 -1
  240. package/dist/launcher.js +0 -185
  241. package/dist/launcher.js.map +0 -1
  242. package/dist/logging/agentOutput.d.ts +0 -21
  243. package/dist/logging/agentOutput.d.ts.map +0 -1
  244. package/dist/logging/agentOutput.js +0 -164
  245. package/dist/logging/agentOutput.js.map +0 -1
  246. package/dist/logging/formatter.d.ts +0 -15
  247. package/dist/logging/formatter.d.ts.map +0 -1
  248. package/dist/logging/formatter.js +0 -95
  249. package/dist/logging/formatter.js.map +0 -1
  250. package/dist/logging/logger.d.ts +0 -24
  251. package/dist/logging/logger.d.ts.map +0 -1
  252. package/dist/logging/logger.js +0 -79
  253. package/dist/logging/logger.js.map +0 -1
  254. package/dist/logging/reader.d.ts +0 -34
  255. package/dist/logging/reader.d.ts.map +0 -1
  256. package/dist/logging/reader.js +0 -178
  257. package/dist/logging/reader.js.map +0 -1
  258. package/dist/logging/rotation.d.ts +0 -6
  259. package/dist/logging/rotation.d.ts.map +0 -1
  260. package/dist/logging/rotation.js +0 -26
  261. package/dist/logging/rotation.js.map +0 -1
  262. package/dist/opentui/highlights-eq9cgrbb.scm +0 -604
  263. package/dist/opentui/highlights-ghv9g403.scm +0 -205
  264. package/dist/opentui/highlights-hk7bwhj4.scm +0 -284
  265. package/dist/opentui/highlights-r812a2qc.scm +0 -150
  266. package/dist/opentui/highlights-x6tmsnaa.scm +0 -115
  267. package/dist/opentui/index.solid.d.ts +0 -2
  268. package/dist/opentui/index.solid.d.ts.map +0 -1
  269. package/dist/opentui/index.solid.js +0 -53721
  270. package/dist/opentui/index.solid.js.map +0 -1
  271. package/dist/opentui/injections-73j83es3.scm +0 -27
  272. package/dist/opentui/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  273. package/dist/opentui/tree-sitter-markdown-411r6y9b.wasm +0 -0
  274. package/dist/opentui/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  275. package/dist/opentui/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  276. package/dist/opentui/tree-sitter-zig-e78zbjpm.wasm +0 -0
  277. package/dist/repositories/git.repository.d.ts +0 -38
  278. package/dist/repositories/git.repository.d.ts.map +0 -1
  279. package/dist/repositories/git.repository.js +0 -117
  280. package/dist/repositories/git.repository.js.map +0 -1
  281. package/dist/repositories/github.repository.d.ts +0 -16
  282. package/dist/repositories/github.repository.d.ts.map +0 -1
  283. package/dist/repositories/github.repository.js +0 -61
  284. package/dist/repositories/github.repository.js.map +0 -1
  285. package/dist/repositories/worktree.repository.d.ts +0 -19
  286. package/dist/repositories/worktree.repository.d.ts.map +0 -1
  287. package/dist/repositories/worktree.repository.js +0 -64
  288. package/dist/repositories/worktree.repository.js.map +0 -1
  289. package/dist/services/BatchMergeService.d.ts +0 -45
  290. package/dist/services/BatchMergeService.d.ts.map +0 -1
  291. package/dist/services/BatchMergeService.js +0 -197
  292. package/dist/services/BatchMergeService.js.map +0 -1
  293. package/dist/services/WorktreeOrchestrator.d.ts +0 -37
  294. package/dist/services/WorktreeOrchestrator.d.ts.map +0 -1
  295. package/dist/services/WorktreeOrchestrator.js +0 -74
  296. package/dist/services/WorktreeOrchestrator.js.map +0 -1
  297. package/dist/services/codingAgentCommandResolver.d.ts +0 -10
  298. package/dist/services/codingAgentCommandResolver.d.ts.map +0 -1
  299. package/dist/services/codingAgentCommandResolver.js +0 -81
  300. package/dist/services/codingAgentCommandResolver.js.map +0 -1
  301. package/dist/services/codingAgentResolver.d.ts +0 -43
  302. package/dist/services/codingAgentResolver.d.ts.map +0 -1
  303. package/dist/services/codingAgentResolver.js +0 -269
  304. package/dist/services/codingAgentResolver.js.map +0 -1
  305. package/dist/services/dependency-installer.d.ts +0 -26
  306. package/dist/services/dependency-installer.d.ts.map +0 -1
  307. package/dist/services/dependency-installer.js +0 -134
  308. package/dist/services/dependency-installer.js.map +0 -1
  309. package/dist/services/git.service.d.ts +0 -27
  310. package/dist/services/git.service.d.ts.map +0 -1
  311. package/dist/services/git.service.js +0 -97
  312. package/dist/services/git.service.js.map +0 -1
  313. package/dist/services/github.service.d.ts +0 -14
  314. package/dist/services/github.service.d.ts.map +0 -1
  315. package/dist/services/github.service.js +0 -52
  316. package/dist/services/github.service.js.map +0 -1
  317. package/dist/services/worktree.service.d.ts +0 -20
  318. package/dist/services/worktree.service.d.ts.map +0 -1
  319. package/dist/services/worktree.service.js +0 -52
  320. package/dist/services/worktree.service.js.map +0 -1
  321. package/dist/shared/codingAgentConstants.d.ts +0 -12
  322. package/dist/shared/codingAgentConstants.d.ts.map +0 -1
  323. package/dist/shared/codingAgentConstants.js +0 -95
  324. package/dist/shared/codingAgentConstants.js.map +0 -1
  325. package/dist/types/api.d.ts +0 -225
  326. package/dist/types/api.d.ts.map +0 -1
  327. package/dist/types/api.js +0 -8
  328. package/dist/types/api.js.map +0 -1
  329. package/dist/types/coding-agent.d.ts +0 -62
  330. package/dist/types/coding-agent.d.ts.map +0 -1
  331. package/dist/types/coding-agent.js +0 -29
  332. package/dist/types/coding-agent.js.map +0 -1
  333. package/dist/types/profiles.d.ts +0 -54
  334. package/dist/types/profiles.d.ts.map +0 -1
  335. package/dist/types/profiles.js +0 -33
  336. package/dist/types/profiles.js.map +0 -1
  337. package/dist/types/tools.d.ts +0 -230
  338. package/dist/types/tools.d.ts.map +0 -1
  339. package/dist/types/tools.js +0 -8
  340. package/dist/types/tools.js.map +0 -1
  341. package/dist/utils/bun-runtime.d.ts +0 -12
  342. package/dist/utils/bun-runtime.d.ts.map +0 -1
  343. package/dist/utils/bun-runtime.js +0 -13
  344. package/dist/utils/bun-runtime.js.map +0 -1
  345. package/dist/utils/coding-agent-colors.d.ts +0 -88
  346. package/dist/utils/coding-agent-colors.d.ts.map +0 -1
  347. package/dist/utils/coding-agent-colors.js +0 -137
  348. package/dist/utils/coding-agent-colors.js.map +0 -1
  349. package/dist/utils/command.d.ts +0 -62
  350. package/dist/utils/command.d.ts.map +0 -1
  351. package/dist/utils/command.js +0 -186
  352. package/dist/utils/command.js.map +0 -1
  353. package/dist/utils/error-utils.d.ts +0 -27
  354. package/dist/utils/error-utils.d.ts.map +0 -1
  355. package/dist/utils/error-utils.js +0 -98
  356. package/dist/utils/error-utils.js.map +0 -1
  357. package/dist/utils/npmRegistry.d.ts +0 -61
  358. package/dist/utils/npmRegistry.d.ts.map +0 -1
  359. package/dist/utils/npmRegistry.js +0 -180
  360. package/dist/utils/npmRegistry.js.map +0 -1
  361. package/dist/utils/prompt.d.ts +0 -18
  362. package/dist/utils/prompt.d.ts.map +0 -1
  363. package/dist/utils/prompt.js +0 -107
  364. package/dist/utils/prompt.js.map +0 -1
  365. package/dist/utils/session/common.d.ts +0 -108
  366. package/dist/utils/session/common.d.ts.map +0 -1
  367. package/dist/utils/session/common.js +0 -439
  368. package/dist/utils/session/common.js.map +0 -1
  369. package/dist/utils/session/index.d.ts +0 -16
  370. package/dist/utils/session/index.d.ts.map +0 -1
  371. package/dist/utils/session/index.js +0 -20
  372. package/dist/utils/session/index.js.map +0 -1
  373. package/dist/utils/session/parsers/claude.d.ts +0 -62
  374. package/dist/utils/session/parsers/claude.d.ts.map +0 -1
  375. package/dist/utils/session/parsers/claude.js +0 -224
  376. package/dist/utils/session/parsers/claude.js.map +0 -1
  377. package/dist/utils/session/parsers/codex.d.ts +0 -37
  378. package/dist/utils/session/parsers/codex.d.ts.map +0 -1
  379. package/dist/utils/session/parsers/codex.js +0 -139
  380. package/dist/utils/session/parsers/codex.js.map +0 -1
  381. package/dist/utils/session/parsers/gemini.d.ts +0 -22
  382. package/dist/utils/session/parsers/gemini.d.ts.map +0 -1
  383. package/dist/utils/session/parsers/gemini.js +0 -118
  384. package/dist/utils/session/parsers/gemini.js.map +0 -1
  385. package/dist/utils/session/parsers/index.d.ts +0 -8
  386. package/dist/utils/session/parsers/index.d.ts.map +0 -1
  387. package/dist/utils/session/parsers/index.js +0 -12
  388. package/dist/utils/session/parsers/index.js.map +0 -1
  389. package/dist/utils/session/parsers/opencode.d.ts +0 -23
  390. package/dist/utils/session/parsers/opencode.d.ts.map +0 -1
  391. package/dist/utils/session/parsers/opencode.js +0 -126
  392. package/dist/utils/session/parsers/opencode.js.map +0 -1
  393. package/dist/utils/session/types.d.ts +0 -49
  394. package/dist/utils/session/types.d.ts.map +0 -1
  395. package/dist/utils/session/types.js +0 -5
  396. package/dist/utils/session/types.js.map +0 -1
  397. package/dist/utils/session.d.ts +0 -16
  398. package/dist/utils/session.d.ts.map +0 -1
  399. package/dist/utils/session.js +0 -16
  400. package/dist/utils/session.js.map +0 -1
  401. package/dist/utils/spinner.d.ts +0 -6
  402. package/dist/utils/spinner.d.ts.map +0 -1
  403. package/dist/utils/spinner.js +0 -47
  404. package/dist/utils/spinner.js.map +0 -1
  405. package/dist/utils/terminal.d.ts +0 -64
  406. package/dist/utils/terminal.d.ts.map +0 -1
  407. package/dist/utils/terminal.js +0 -270
  408. package/dist/utils/terminal.js.map +0 -1
  409. package/dist/utils/webui.d.ts +0 -8
  410. package/dist/utils/webui.d.ts.map +0 -1
  411. package/dist/utils/webui.js +0 -35
  412. package/dist/utils/webui.js.map +0 -1
  413. package/dist/utils.d.ts +0 -18
  414. package/dist/utils.d.ts.map +0 -1
  415. package/dist/utils.js +0 -79
  416. package/dist/utils.js.map +0 -1
  417. package/dist/web/client/src/components/BranchGraph.d.ts +0 -13
  418. package/dist/web/client/src/components/BranchGraph.d.ts.map +0 -1
  419. package/dist/web/client/src/components/BranchGraph.js +0 -49
  420. package/dist/web/client/src/components/BranchGraph.js.map +0 -1
  421. package/dist/web/client/src/components/CodingAgentLaunchModal.d.ts +0 -9
  422. package/dist/web/client/src/components/CodingAgentLaunchModal.d.ts.map +0 -1
  423. package/dist/web/client/src/components/CodingAgentLaunchModal.js +0 -354
  424. package/dist/web/client/src/components/CodingAgentLaunchModal.js.map +0 -1
  425. package/dist/web/client/src/components/CustomCodingAgentForm.d.ts +0 -23
  426. package/dist/web/client/src/components/CustomCodingAgentForm.d.ts.map +0 -1
  427. package/dist/web/client/src/components/CustomCodingAgentForm.js +0 -209
  428. package/dist/web/client/src/components/CustomCodingAgentForm.js.map +0 -1
  429. package/dist/web/client/src/components/CustomCodingAgentList.d.ts +0 -10
  430. package/dist/web/client/src/components/CustomCodingAgentList.d.ts.map +0 -1
  431. package/dist/web/client/src/components/CustomCodingAgentList.js +0 -57
  432. package/dist/web/client/src/components/CustomCodingAgentList.js.map +0 -1
  433. package/dist/web/client/src/components/EnvEditor.d.ts +0 -20
  434. package/dist/web/client/src/components/EnvEditor.d.ts.map +0 -1
  435. package/dist/web/client/src/components/EnvEditor.js +0 -75
  436. package/dist/web/client/src/components/EnvEditor.js.map +0 -1
  437. package/dist/web/client/src/components/EnvironmentEditor.d.ts +0 -17
  438. package/dist/web/client/src/components/EnvironmentEditor.d.ts.map +0 -1
  439. package/dist/web/client/src/components/EnvironmentEditor.js +0 -22
  440. package/dist/web/client/src/components/EnvironmentEditor.js.map +0 -1
  441. package/dist/web/client/src/components/Terminal.d.ts +0 -15
  442. package/dist/web/client/src/components/Terminal.d.ts.map +0 -1
  443. package/dist/web/client/src/components/Terminal.js +0 -119
  444. package/dist/web/client/src/components/Terminal.js.map +0 -1
  445. package/dist/web/client/src/components/branch-detail/BranchInfoCards.d.ts +0 -10
  446. package/dist/web/client/src/components/branch-detail/BranchInfoCards.d.ts.map +0 -1
  447. package/dist/web/client/src/components/branch-detail/BranchInfoCards.js +0 -107
  448. package/dist/web/client/src/components/branch-detail/BranchInfoCards.js.map +0 -1
  449. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.d.ts +0 -22
  450. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.d.ts.map +0 -1
  451. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.js +0 -80
  452. package/dist/web/client/src/components/branch-detail/SessionHistoryTable.js.map +0 -1
  453. package/dist/web/client/src/components/branch-detail/TerminalPanel.d.ts +0 -11
  454. package/dist/web/client/src/components/branch-detail/TerminalPanel.d.ts.map +0 -1
  455. package/dist/web/client/src/components/branch-detail/TerminalPanel.js +0 -32
  456. package/dist/web/client/src/components/branch-detail/TerminalPanel.js.map +0 -1
  457. package/dist/web/client/src/components/branch-detail/ToolLauncher.d.ts +0 -40
  458. package/dist/web/client/src/components/branch-detail/ToolLauncher.d.ts.map +0 -1
  459. package/dist/web/client/src/components/branch-detail/ToolLauncher.js +0 -147
  460. package/dist/web/client/src/components/branch-detail/ToolLauncher.js.map +0 -1
  461. package/dist/web/client/src/components/branch-detail/index.d.ts +0 -5
  462. package/dist/web/client/src/components/branch-detail/index.d.ts.map +0 -1
  463. package/dist/web/client/src/components/branch-detail/index.js +0 -5
  464. package/dist/web/client/src/components/branch-detail/index.js.map +0 -1
  465. package/dist/web/client/src/components/common/BranchCard.d.ts +0 -17
  466. package/dist/web/client/src/components/common/BranchCard.d.ts.map +0 -1
  467. package/dist/web/client/src/components/common/BranchCard.js +0 -36
  468. package/dist/web/client/src/components/common/BranchCard.js.map +0 -1
  469. package/dist/web/client/src/components/common/MetricCard.d.ts +0 -10
  470. package/dist/web/client/src/components/common/MetricCard.d.ts.map +0 -1
  471. package/dist/web/client/src/components/common/MetricCard.js +0 -10
  472. package/dist/web/client/src/components/common/MetricCard.js.map +0 -1
  473. package/dist/web/client/src/components/common/PageHeader.d.ts +0 -12
  474. package/dist/web/client/src/components/common/PageHeader.d.ts.map +0 -1
  475. package/dist/web/client/src/components/common/PageHeader.js +0 -14
  476. package/dist/web/client/src/components/common/PageHeader.js.map +0 -1
  477. package/dist/web/client/src/components/common/SearchInput.d.ts +0 -14
  478. package/dist/web/client/src/components/common/SearchInput.d.ts.map +0 -1
  479. package/dist/web/client/src/components/common/SearchInput.js +0 -15
  480. package/dist/web/client/src/components/common/SearchInput.js.map +0 -1
  481. package/dist/web/client/src/components/common/StatusBadge.d.ts +0 -10
  482. package/dist/web/client/src/components/common/StatusBadge.d.ts.map +0 -1
  483. package/dist/web/client/src/components/common/StatusBadge.js +0 -15
  484. package/dist/web/client/src/components/common/StatusBadge.js.map +0 -1
  485. package/dist/web/client/src/components/common/index.d.ts +0 -6
  486. package/dist/web/client/src/components/common/index.d.ts.map +0 -1
  487. package/dist/web/client/src/components/common/index.js +0 -6
  488. package/dist/web/client/src/components/common/index.js.map +0 -1
  489. package/dist/web/client/src/components/graph/BranchDetailPanel.d.ts +0 -15
  490. package/dist/web/client/src/components/graph/BranchDetailPanel.d.ts.map +0 -1
  491. package/dist/web/client/src/components/graph/BranchDetailPanel.js +0 -57
  492. package/dist/web/client/src/components/graph/BranchDetailPanel.js.map +0 -1
  493. package/dist/web/client/src/components/graph/BranchNode.d.ts +0 -13
  494. package/dist/web/client/src/components/graph/BranchNode.d.ts.map +0 -1
  495. package/dist/web/client/src/components/graph/BranchNode.js +0 -103
  496. package/dist/web/client/src/components/graph/BranchNode.js.map +0 -1
  497. package/dist/web/client/src/components/graph/ClusterNode.d.ts +0 -13
  498. package/dist/web/client/src/components/graph/ClusterNode.d.ts.map +0 -1
  499. package/dist/web/client/src/components/graph/ClusterNode.js +0 -109
  500. package/dist/web/client/src/components/graph/ClusterNode.js.map +0 -1
  501. package/dist/web/client/src/components/graph/SynapticCanvas.d.ts +0 -17
  502. package/dist/web/client/src/components/graph/SynapticCanvas.d.ts.map +0 -1
  503. package/dist/web/client/src/components/graph/SynapticCanvas.js +0 -94
  504. package/dist/web/client/src/components/graph/SynapticCanvas.js.map +0 -1
  505. package/dist/web/client/src/components/graph/SynapticEdge.d.ts +0 -13
  506. package/dist/web/client/src/components/graph/SynapticEdge.d.ts.map +0 -1
  507. package/dist/web/client/src/components/graph/SynapticEdge.js +0 -113
  508. package/dist/web/client/src/components/graph/SynapticEdge.js.map +0 -1
  509. package/dist/web/client/src/components/graph/graphUtils.d.ts +0 -67
  510. package/dist/web/client/src/components/graph/graphUtils.d.ts.map +0 -1
  511. package/dist/web/client/src/components/graph/graphUtils.js +0 -175
  512. package/dist/web/client/src/components/graph/graphUtils.js.map +0 -1
  513. package/dist/web/client/src/components/graph/index.d.ts +0 -10
  514. package/dist/web/client/src/components/graph/index.d.ts.map +0 -1
  515. package/dist/web/client/src/components/graph/index.js +0 -10
  516. package/dist/web/client/src/components/graph/index.js.map +0 -1
  517. package/dist/web/client/src/components/ui/alert.d.ts +0 -9
  518. package/dist/web/client/src/components/ui/alert.d.ts.map +0 -1
  519. package/dist/web/client/src/components/ui/alert.js +0 -25
  520. package/dist/web/client/src/components/ui/alert.js.map +0 -1
  521. package/dist/web/client/src/components/ui/badge.d.ts +0 -10
  522. package/dist/web/client/src/components/ui/badge.d.ts.map +0 -1
  523. package/dist/web/client/src/components/ui/badge.js +0 -25
  524. package/dist/web/client/src/components/ui/badge.js.map +0 -1
  525. package/dist/web/client/src/components/ui/button.d.ts +0 -12
  526. package/dist/web/client/src/components/ui/button.d.ts.map +0 -1
  527. package/dist/web/client/src/components/ui/button.js +0 -33
  528. package/dist/web/client/src/components/ui/button.js.map +0 -1
  529. package/dist/web/client/src/components/ui/card.d.ts +0 -9
  530. package/dist/web/client/src/components/ui/card.d.ts.map +0 -1
  531. package/dist/web/client/src/components/ui/card.js +0 -16
  532. package/dist/web/client/src/components/ui/card.js.map +0 -1
  533. package/dist/web/client/src/components/ui/index.d.ts +0 -8
  534. package/dist/web/client/src/components/ui/index.d.ts.map +0 -1
  535. package/dist/web/client/src/components/ui/index.js +0 -8
  536. package/dist/web/client/src/components/ui/index.js.map +0 -1
  537. package/dist/web/client/src/components/ui/input.d.ts +0 -4
  538. package/dist/web/client/src/components/ui/input.d.ts.map +0 -1
  539. package/dist/web/client/src/components/ui/input.js +0 -8
  540. package/dist/web/client/src/components/ui/input.js.map +0 -1
  541. package/dist/web/client/src/components/ui/select.d.ts +0 -14
  542. package/dist/web/client/src/components/ui/select.d.ts.map +0 -1
  543. package/dist/web/client/src/components/ui/select.js +0 -39
  544. package/dist/web/client/src/components/ui/select.js.map +0 -1
  545. package/dist/web/client/src/components/ui/table.d.ts +0 -11
  546. package/dist/web/client/src/components/ui/table.d.ts.map +0 -1
  547. package/dist/web/client/src/components/ui/table.js +0 -21
  548. package/dist/web/client/src/components/ui/table.js.map +0 -1
  549. package/dist/web/client/src/hooks/useBranches.d.ts +0 -16
  550. package/dist/web/client/src/hooks/useBranches.d.ts.map +0 -1
  551. package/dist/web/client/src/hooks/useBranches.js +0 -35
  552. package/dist/web/client/src/hooks/useBranches.js.map +0 -1
  553. package/dist/web/client/src/hooks/useConfig.d.ts +0 -13
  554. package/dist/web/client/src/hooks/useConfig.d.ts.map +0 -1
  555. package/dist/web/client/src/hooks/useConfig.js +0 -27
  556. package/dist/web/client/src/hooks/useConfig.js.map +0 -1
  557. package/dist/web/client/src/hooks/useSessions.d.ts +0 -21
  558. package/dist/web/client/src/hooks/useSessions.d.ts.map +0 -1
  559. package/dist/web/client/src/hooks/useSessions.js +0 -54
  560. package/dist/web/client/src/hooks/useSessions.js.map +0 -1
  561. package/dist/web/client/src/hooks/useWorktrees.d.ts +0 -17
  562. package/dist/web/client/src/hooks/useWorktrees.d.ts.map +0 -1
  563. package/dist/web/client/src/hooks/useWorktrees.js +0 -41
  564. package/dist/web/client/src/hooks/useWorktrees.js.map +0 -1
  565. package/dist/web/client/src/lib/api.d.ts +0 -82
  566. package/dist/web/client/src/lib/api.d.ts.map +0 -1
  567. package/dist/web/client/src/lib/api.js +0 -147
  568. package/dist/web/client/src/lib/api.js.map +0 -1
  569. package/dist/web/client/src/lib/coding-agent-colors.d.ts +0 -86
  570. package/dist/web/client/src/lib/coding-agent-colors.d.ts.map +0 -1
  571. package/dist/web/client/src/lib/coding-agent-colors.js +0 -135
  572. package/dist/web/client/src/lib/coding-agent-colors.js.map +0 -1
  573. package/dist/web/client/src/lib/utils.d.ts +0 -7
  574. package/dist/web/client/src/lib/utils.d.ts.map +0 -1
  575. package/dist/web/client/src/lib/utils.js +0 -10
  576. package/dist/web/client/src/lib/utils.js.map +0 -1
  577. package/dist/web/client/src/lib/websocket.d.ts +0 -59
  578. package/dist/web/client/src/lib/websocket.d.ts.map +0 -1
  579. package/dist/web/client/src/lib/websocket.js +0 -182
  580. package/dist/web/client/src/lib/websocket.js.map +0 -1
  581. package/dist/web/client/src/main.d.ts +0 -2
  582. package/dist/web/client/src/main.d.ts.map +0 -1
  583. package/dist/web/client/src/main.js +0 -23
  584. package/dist/web/client/src/main.js.map +0 -1
  585. package/dist/web/client/src/pages/BranchDetailPage.d.ts +0 -3
  586. package/dist/web/client/src/pages/BranchDetailPage.d.ts.map +0 -1
  587. package/dist/web/client/src/pages/BranchDetailPage.js +0 -365
  588. package/dist/web/client/src/pages/BranchDetailPage.js.map +0 -1
  589. package/dist/web/client/src/pages/BranchListPage.d.ts +0 -3
  590. package/dist/web/client/src/pages/BranchListPage.d.ts.map +0 -1
  591. package/dist/web/client/src/pages/BranchListPage.js +0 -118
  592. package/dist/web/client/src/pages/BranchListPage.js.map +0 -1
  593. package/dist/web/client/src/pages/ConfigManagementPage.d.ts +0 -3
  594. package/dist/web/client/src/pages/ConfigManagementPage.d.ts.map +0 -1
  595. package/dist/web/client/src/pages/ConfigManagementPage.js +0 -132
  596. package/dist/web/client/src/pages/ConfigManagementPage.js.map +0 -1
  597. package/dist/web/client/src/pages/ConfigPage.d.ts +0 -3
  598. package/dist/web/client/src/pages/ConfigPage.d.ts.map +0 -1
  599. package/dist/web/client/src/pages/ConfigPage.js +0 -220
  600. package/dist/web/client/src/pages/ConfigPage.js.map +0 -1
  601. package/dist/web/client/src/router.d.ts +0 -9
  602. package/dist/web/client/src/router.d.ts.map +0 -1
  603. package/dist/web/client/src/router.js +0 -27
  604. package/dist/web/client/src/router.js.map +0 -1
  605. package/dist/web/client/vite.config.d.ts +0 -3
  606. package/dist/web/client/vite.config.d.ts.map +0 -1
  607. package/dist/web/client/vite.config.js +0 -28
  608. package/dist/web/client/vite.config.js.map +0 -1
  609. package/dist/web/server/env/importer.d.ts +0 -3
  610. package/dist/web/server/env/importer.d.ts.map +0 -1
  611. package/dist/web/server/env/importer.js +0 -51
  612. package/dist/web/server/env/importer.js.map +0 -1
  613. package/dist/web/server/index.d.ts +0 -33
  614. package/dist/web/server/index.d.ts.map +0 -1
  615. package/dist/web/server/index.js +0 -102
  616. package/dist/web/server/index.js.map +0 -1
  617. package/dist/web/server/pty/manager.d.ts +0 -54
  618. package/dist/web/server/pty/manager.d.ts.map +0 -1
  619. package/dist/web/server/pty/manager.js +0 -303
  620. package/dist/web/server/pty/manager.js.map +0 -1
  621. package/dist/web/server/routes/branches.d.ts +0 -11
  622. package/dist/web/server/routes/branches.d.ts.map +0 -1
  623. package/dist/web/server/routes/branches.js +0 -97
  624. package/dist/web/server/routes/branches.js.map +0 -1
  625. package/dist/web/server/routes/config.d.ts +0 -6
  626. package/dist/web/server/routes/config.d.ts.map +0 -1
  627. package/dist/web/server/routes/config.js +0 -162
  628. package/dist/web/server/routes/config.js.map +0 -1
  629. package/dist/web/server/routes/index.d.ts +0 -13
  630. package/dist/web/server/routes/index.d.ts.map +0 -1
  631. package/dist/web/server/routes/index.js +0 -29
  632. package/dist/web/server/routes/index.js.map +0 -1
  633. package/dist/web/server/routes/sessions.d.ts +0 -12
  634. package/dist/web/server/routes/sessions.d.ts.map +0 -1
  635. package/dist/web/server/routes/sessions.js +0 -176
  636. package/dist/web/server/routes/sessions.js.map +0 -1
  637. package/dist/web/server/routes/worktrees.d.ts +0 -11
  638. package/dist/web/server/routes/worktrees.d.ts.map +0 -1
  639. package/dist/web/server/routes/worktrees.js +0 -80
  640. package/dist/web/server/routes/worktrees.js.map +0 -1
  641. package/dist/web/server/services/branches.d.ts +0 -17
  642. package/dist/web/server/services/branches.d.ts.map +0 -1
  643. package/dist/web/server/services/branches.js +0 -275
  644. package/dist/web/server/services/branches.js.map +0 -1
  645. package/dist/web/server/services/worktrees.d.ts +0 -24
  646. package/dist/web/server/services/worktrees.d.ts.map +0 -1
  647. package/dist/web/server/services/worktrees.js +0 -66
  648. package/dist/web/server/services/worktrees.js.map +0 -1
  649. package/dist/web/server/tray.d.ts +0 -25
  650. package/dist/web/server/tray.d.ts.map +0 -1
  651. package/dist/web/server/tray.js +0 -116
  652. package/dist/web/server/tray.js.map +0 -1
  653. package/dist/web/server/types.d.ts +0 -4
  654. package/dist/web/server/types.d.ts.map +0 -1
  655. package/dist/web/server/types.js +0 -2
  656. package/dist/web/server/types.js.map +0 -1
  657. package/dist/web/server/websocket/handler.d.ts +0 -57
  658. package/dist/web/server/websocket/handler.d.ts.map +0 -1
  659. package/dist/web/server/websocket/handler.js +0 -220
  660. package/dist/web/server/websocket/handler.js.map +0 -1
  661. package/dist/worktree.d.ts +0 -117
  662. package/dist/worktree.d.ts.map +0 -1
  663. package/dist/worktree.js +0 -788
  664. package/dist/worktree.js.map +0 -1
  665. package/src/claude-history.ts +0 -717
  666. package/src/claude.ts +0 -557
  667. package/src/cli/ui/App.solid.tsx +0 -2145
  668. package/src/cli/ui/__tests__/solid/AppSolid.cleanup.test.tsx +0 -1175
  669. package/src/cli/ui/__tests__/solid/BranchListScreen.test.tsx +0 -343
  670. package/src/cli/ui/__tests__/solid/ConfirmScreen.test.tsx +0 -77
  671. package/src/cli/ui/__tests__/solid/LogScreen.test.tsx +0 -351
  672. package/src/cli/ui/__tests__/solid/components/QuickStartStep.test.tsx +0 -308
  673. package/src/cli/ui/__tests__/solid/components/WizardController.test.tsx +0 -71
  674. package/src/cli/ui/__tests__/solid/components/WizardPopup.test.tsx +0 -231
  675. package/src/cli/ui/__tests__/solid/components/WizardSteps.test.tsx +0 -331
  676. package/src/cli/ui/__tests__/utils/branchFormatter.test.ts +0 -702
  677. package/src/cli/ui/__tests__/utils/clipboard.test.ts +0 -65
  678. package/src/cli/ui/__tests__/utils/statisticsCalculator.test.ts +0 -243
  679. package/src/cli/ui/components/solid/Footer.tsx +0 -36
  680. package/src/cli/ui/components/solid/Header.tsx +0 -67
  681. package/src/cli/ui/components/solid/HelpOverlay.tsx +0 -194
  682. package/src/cli/ui/components/solid/QuickStartStep.tsx +0 -209
  683. package/src/cli/ui/components/solid/ScrollableList.tsx +0 -23
  684. package/src/cli/ui/components/solid/SearchInput.tsx +0 -42
  685. package/src/cli/ui/components/solid/SelectInput.tsx +0 -88
  686. package/src/cli/ui/components/solid/Stats.tsx +0 -92
  687. package/src/cli/ui/components/solid/TextInput.tsx +0 -49
  688. package/src/cli/ui/components/solid/WizardController.tsx +0 -457
  689. package/src/cli/ui/components/solid/WizardPopup.tsx +0 -135
  690. package/src/cli/ui/components/solid/WizardSteps.tsx +0 -781
  691. package/src/cli/ui/core/index.ts +0 -17
  692. package/src/cli/ui/core/keybindings.ts +0 -367
  693. package/src/cli/ui/core/theme.ts +0 -266
  694. package/src/cli/ui/core/types.ts +0 -235
  695. package/src/cli/ui/hooks/solid/useAsyncOperation.ts +0 -78
  696. package/src/cli/ui/hooks/solid/useFilter.ts +0 -86
  697. package/src/cli/ui/hooks/solid/useGitOperations.ts +0 -81
  698. package/src/cli/ui/hooks/solid/useKeyHandler.ts +0 -103
  699. package/src/cli/ui/hooks/solid/useScrollableList.ts +0 -149
  700. package/src/cli/ui/hooks/solid/useSelection.ts +0 -77
  701. package/src/cli/ui/hooks/solid/useTerminalSize.ts +0 -22
  702. package/src/cli/ui/index.solid.ts +0 -28
  703. package/src/cli/ui/screens/solid/BranchListScreen.tsx +0 -1153
  704. package/src/cli/ui/screens/solid/ConfirmScreen.tsx +0 -86
  705. package/src/cli/ui/screens/solid/EnvironmentScreen.tsx +0 -161
  706. package/src/cli/ui/screens/solid/ErrorScreen.tsx +0 -42
  707. package/src/cli/ui/screens/solid/InputScreen.tsx +0 -55
  708. package/src/cli/ui/screens/solid/LoadingIndicator.tsx +0 -77
  709. package/src/cli/ui/screens/solid/LogDetailScreen.tsx +0 -75
  710. package/src/cli/ui/screens/solid/LogScreen.tsx +0 -504
  711. package/src/cli/ui/screens/solid/ProfileEnvScreen.tsx +0 -196
  712. package/src/cli/ui/screens/solid/ProfileScreen.tsx +0 -98
  713. package/src/cli/ui/screens/solid/SelectorScreen.tsx +0 -181
  714. package/src/cli/ui/screens/solid/SettingsScreen.tsx +0 -52
  715. package/src/cli/ui/screens/solid/WorktreeCreateScreen.tsx +0 -136
  716. package/src/cli/ui/screens/solid/WorktreeDeleteScreen.tsx +0 -40
  717. package/src/cli/ui/stores/appStore.ts +0 -208
  718. package/src/cli/ui/stores/branchStore.ts +0 -357
  719. package/src/cli/ui/stores/index.ts +0 -31
  720. package/src/cli/ui/stores/uiStore.ts +0 -226
  721. package/src/cli/ui/types.ts +0 -371
  722. package/src/cli/ui/utils/__tests__/branchFormatter.test.ts +0 -227
  723. package/src/cli/ui/utils/__tests__/installedVersionCache.test.ts +0 -46
  724. package/src/cli/ui/utils/baseBranch.ts +0 -34
  725. package/src/cli/ui/utils/branchFormatter.ts +0 -222
  726. package/src/cli/ui/utils/clipboard.ts +0 -31
  727. package/src/cli/ui/utils/continueSession.ts +0 -231
  728. package/src/cli/ui/utils/installedVersionCache.ts +0 -84
  729. package/src/cli/ui/utils/modelOptions.test.ts +0 -98
  730. package/src/cli/ui/utils/modelOptions.ts +0 -169
  731. package/src/cli/ui/utils/statisticsCalculator.ts +0 -44
  732. package/src/cli/ui/utils/versionCache.ts +0 -93
  733. package/src/cli/ui/utils/versionFetcher.ts +0 -120
  734. package/src/codex.ts +0 -445
  735. package/src/config/__tests__/saveSession.test.ts +0 -143
  736. package/src/config/builtin-coding-agents.ts +0 -87
  737. package/src/config/constants.ts +0 -102
  738. package/src/config/env-history.ts +0 -45
  739. package/src/config/index.ts +0 -311
  740. package/src/config/profiles.ts +0 -359
  741. package/src/config/shared-env.ts +0 -139
  742. package/src/config/tools.ts +0 -319
  743. package/src/gemini.ts +0 -405
  744. package/src/git.ts +0 -1263
  745. package/src/github.ts +0 -158
  746. package/src/index.test.ts +0 -93
  747. package/src/index.ts +0 -1024
  748. package/src/launcher.ts +0 -235
  749. package/src/logging/agentOutput.ts +0 -216
  750. package/src/logging/formatter.ts +0 -125
  751. package/src/logging/logger.ts +0 -106
  752. package/src/logging/reader.ts +0 -240
  753. package/src/logging/rotation.ts +0 -25
  754. package/src/opentui/index.solid.ts +0 -1
  755. package/src/repositories/git.repository.ts +0 -129
  756. package/src/repositories/github.repository.ts +0 -83
  757. package/src/repositories/worktree.repository.ts +0 -77
  758. package/src/services/BatchMergeService.ts +0 -251
  759. package/src/services/WorktreeOrchestrator.ts +0 -115
  760. package/src/services/__tests__/BatchMergeService.test.ts +0 -534
  761. package/src/services/__tests__/WorktreeOrchestrator.test.ts +0 -259
  762. package/src/services/codingAgentCommandResolver.ts +0 -118
  763. package/src/services/codingAgentResolver.ts +0 -375
  764. package/src/services/dependency-installer.ts +0 -192
  765. package/src/services/git.service.ts +0 -115
  766. package/src/services/github.service.ts +0 -61
  767. package/src/services/worktree.service.ts +0 -66
  768. package/src/shared/codingAgentConstants.ts +0 -103
  769. package/src/trayicon.d.ts +0 -30
  770. package/src/types/api.ts +0 -256
  771. package/src/types/coding-agent.ts +0 -85
  772. package/src/types/profiles.ts +0 -64
  773. package/src/types/tools.ts +0 -269
  774. package/src/utils/__tests__/npmRegistry.test.ts +0 -250
  775. package/src/utils/__tests__/prompt.test.ts +0 -125
  776. package/src/utils/bun-runtime.ts +0 -29
  777. package/src/utils/coding-agent-colors.ts +0 -165
  778. package/src/utils/command.ts +0 -234
  779. package/src/utils/error-utils.ts +0 -133
  780. package/src/utils/npmRegistry.ts +0 -249
  781. package/src/utils/prompt.ts +0 -149
  782. package/src/utils/session/common.ts +0 -474
  783. package/src/utils/session/index.ts +0 -50
  784. package/src/utils/session/parsers/claude.ts +0 -283
  785. package/src/utils/session/parsers/codex.ts +0 -166
  786. package/src/utils/session/parsers/gemini.ts +0 -135
  787. package/src/utils/session/parsers/index.ts +0 -31
  788. package/src/utils/session/parsers/opencode.ts +0 -151
  789. package/src/utils/session/types.ts +0 -51
  790. package/src/utils/session.ts +0 -16
  791. package/src/utils/spinner.ts +0 -54
  792. package/src/utils/terminal.ts +0 -327
  793. package/src/utils/webui.ts +0 -43
  794. package/src/utils.test.ts +0 -43
  795. package/src/utils.ts +0 -93
  796. package/src/web/client/components.json +0 -21
  797. package/src/web/client/index.html +0 -12
  798. package/src/web/client/src/components/BranchGraph.tsx +0 -95
  799. package/src/web/client/src/components/CodingAgentLaunchModal.tsx +0 -570
  800. package/src/web/client/src/components/CustomCodingAgentForm.tsx +0 -386
  801. package/src/web/client/src/components/CustomCodingAgentList.tsx +0 -119
  802. package/src/web/client/src/components/EnvEditor.tsx +0 -188
  803. package/src/web/client/src/components/EnvironmentEditor.tsx +0 -97
  804. package/src/web/client/src/components/Terminal.tsx +0 -145
  805. package/src/web/client/src/components/branch-detail/BranchInfoCards.tsx +0 -193
  806. package/src/web/client/src/components/branch-detail/SessionHistoryTable.tsx +0 -187
  807. package/src/web/client/src/components/branch-detail/TerminalPanel.tsx +0 -92
  808. package/src/web/client/src/components/branch-detail/ToolLauncher.tsx +0 -332
  809. package/src/web/client/src/components/branch-detail/index.ts +0 -4
  810. package/src/web/client/src/components/common/BranchCard.tsx +0 -117
  811. package/src/web/client/src/components/common/MetricCard.tsx +0 -22
  812. package/src/web/client/src/components/common/PageHeader.tsx +0 -44
  813. package/src/web/client/src/components/common/SearchInput.tsx +0 -40
  814. package/src/web/client/src/components/common/StatusBadge.tsx +0 -37
  815. package/src/web/client/src/components/common/index.ts +0 -5
  816. package/src/web/client/src/components/graph/BranchDetailPanel.tsx +0 -152
  817. package/src/web/client/src/components/graph/BranchNode.tsx +0 -200
  818. package/src/web/client/src/components/graph/ClusterNode.tsx +0 -211
  819. package/src/web/client/src/components/graph/SynapticCanvas.tsx +0 -171
  820. package/src/web/client/src/components/graph/SynapticEdge.tsx +0 -311
  821. package/src/web/client/src/components/graph/graphUtils.ts +0 -265
  822. package/src/web/client/src/components/graph/index.ts +0 -10
  823. package/src/web/client/src/components/ui/alert.tsx +0 -63
  824. package/src/web/client/src/components/ui/badge.tsx +0 -44
  825. package/src/web/client/src/components/ui/button.tsx +0 -57
  826. package/src/web/client/src/components/ui/card.tsx +0 -82
  827. package/src/web/client/src/components/ui/index.ts +0 -32
  828. package/src/web/client/src/components/ui/input.tsx +0 -21
  829. package/src/web/client/src/components/ui/select.tsx +0 -156
  830. package/src/web/client/src/components/ui/table.tsx +0 -119
  831. package/src/web/client/src/hooks/useBranches.ts +0 -41
  832. package/src/web/client/src/hooks/useConfig.ts +0 -31
  833. package/src/web/client/src/hooks/useSessions.ts +0 -68
  834. package/src/web/client/src/hooks/useWorktrees.ts +0 -47
  835. package/src/web/client/src/index.css +0 -349
  836. package/src/web/client/src/lib/api.ts +0 -184
  837. package/src/web/client/src/lib/coding-agent-colors.ts +0 -149
  838. package/src/web/client/src/lib/utils.ts +0 -10
  839. package/src/web/client/src/lib/websocket.ts +0 -222
  840. package/src/web/client/src/main.tsx +0 -29
  841. package/src/web/client/src/pages/BranchDetailPage.tsx +0 -555
  842. package/src/web/client/src/pages/BranchListPage.tsx +0 -242
  843. package/src/web/client/src/pages/ConfigManagementPage.tsx +0 -248
  844. package/src/web/client/src/pages/ConfigPage.tsx +0 -368
  845. package/src/web/client/src/router.tsx +0 -27
  846. package/src/web/client/vite.config.ts +0 -28
  847. package/src/web/server/env/importer.ts +0 -62
  848. package/src/web/server/index.ts +0 -143
  849. package/src/web/server/pty/manager.ts +0 -443
  850. package/src/web/server/routes/branches.ts +0 -126
  851. package/src/web/server/routes/config.ts +0 -226
  852. package/src/web/server/routes/index.ts +0 -37
  853. package/src/web/server/routes/sessions.ts +0 -252
  854. package/src/web/server/routes/worktrees.ts +0 -108
  855. package/src/web/server/services/branches.ts +0 -387
  856. package/src/web/server/services/worktrees.ts +0 -93
  857. package/src/web/server/tray.ts +0 -136
  858. package/src/web/server/types.ts +0 -14
  859. package/src/web/server/websocket/handler.ts +0 -299
  860. package/src/worktree.ts +0 -1109
@@ -1,1153 +0,0 @@
1
- /** @jsxImportSource @opentui/solid */
2
- import { createEffect, createMemo, createSignal, on } from "solid-js";
3
- import { useKeyboard, useTerminalDimensions } from "@opentui/solid";
4
- import { TextAttributes } from "@opentui/core";
5
- import type { BranchItem, BranchViewMode, Statistics } from "../../types.js";
6
- import {
7
- formatLocalDateTime,
8
- getLatestActivityTimestamp,
9
- } from "../../utils/branchFormatter.js";
10
- import stringWidth from "string-width";
11
- import { getAgentTerminalColor } from "../../../../utils/coding-agent-colors.js";
12
- import { Header } from "../../components/solid/Header.js";
13
- import { selectionStyle } from "../../core/theme.js";
14
- type IndicatorColor = "cyan" | "green" | "yellow" | "red" | "brightGreen";
15
-
16
- interface CleanupIndicator {
17
- icon: string;
18
- isSpinning?: boolean;
19
- color?: IndicatorColor;
20
- }
21
-
22
- interface CleanupFooterMessage {
23
- text: string;
24
- isSpinning?: boolean;
25
- color?: IndicatorColor;
26
- }
27
-
28
- interface CleanupUIState {
29
- indicators: Record<string, CleanupIndicator>;
30
- footerMessage: CleanupFooterMessage | null;
31
- inputLocked: boolean;
32
- safetyLoading?: boolean;
33
- safetyPendingBranches?: Set<string>;
34
- }
35
-
36
- export interface BranchListScreenProps {
37
- branches: BranchItem[];
38
- stats: Statistics;
39
- onSelect: (branch: BranchItem) => void;
40
- onQuit?: () => void;
41
- onCleanupCommand?: () => void;
42
- onRepairWorktrees?: () => void;
43
- onCreateBranch?: (branch: BranchItem | null) => void;
44
- onRefresh?: () => void;
45
- onOpenProfiles?: () => void;
46
- onOpenLogs?: (branch: BranchItem | null) => void;
47
- loading?: boolean;
48
- error?: Error | null;
49
- lastUpdated?: Date | null;
50
- loadingIndicatorDelay?: number;
51
- cleanupUI?: CleanupUIState;
52
- version?: string | null;
53
- workingDirectory?: string;
54
- activeProfile?: string | null;
55
- selectedBranches?: string[];
56
- onToggleSelect?: (branchName: string) => void;
57
- helpVisible?: boolean;
58
- /** ウィザードポップアップ表示中は入力を無効化 */
59
- wizardVisible?: boolean;
60
- /** 確認ダイアログ表示中は入力を無効化 */
61
- confirmVisible?: boolean;
62
- /** カーソル位置(外部から制御する場合) */
63
- cursorPosition?: number;
64
- /** カーソル位置変更時のコールバック */
65
- onCursorPositionChange?: (index: number) => void;
66
- }
67
-
68
- const VIEW_MODES: BranchViewMode[] = ["all", "local", "remote"];
69
-
70
- const getCharWidth = (char: string): number => stringWidth(char);
71
-
72
- const measureDisplayWidth = (value: string): number => stringWidth(value);
73
-
74
- const truncateToWidth = (value: string, maxWidth: number): string => {
75
- if (maxWidth <= 0) {
76
- return "";
77
- }
78
-
79
- if (measureDisplayWidth(value) <= maxWidth) {
80
- return value;
81
- }
82
-
83
- const ellipsis = "...";
84
- const ellipsisWidth = measureDisplayWidth(ellipsis);
85
- if (ellipsisWidth >= maxWidth) {
86
- return ellipsis;
87
- }
88
-
89
- let currentWidth = 0;
90
- let result = "";
91
-
92
- for (const char of Array.from(value)) {
93
- const charWidth = getCharWidth(char);
94
- if (currentWidth + charWidth + ellipsisWidth > maxWidth) {
95
- break;
96
- }
97
- result += char;
98
- currentWidth += charWidth;
99
- }
100
-
101
- return result + ellipsis;
102
- };
103
-
104
- const padLine = (value: string, width: number): string => {
105
- let line = value;
106
- if (measureDisplayWidth(line) > width) {
107
- line = truncateToWidth(line, width);
108
- }
109
- const padding = Math.max(0, width - measureDisplayWidth(line));
110
- return line + " ".repeat(padding);
111
- };
112
-
113
- interface TextSegment {
114
- text: string;
115
- fg?: string | undefined;
116
- bg?: string | undefined;
117
- attributes?: number | undefined;
118
- }
119
-
120
- const segmentStyleKey = (segment: TextSegment): string =>
121
- `${segment.fg ?? ""}|${segment.bg ?? ""}|${segment.attributes ?? ""}`;
122
-
123
- const appendSegment = (segments: TextSegment[], segment: TextSegment) => {
124
- if (!segment.text) {
125
- return;
126
- }
127
- const last = segments[segments.length - 1];
128
- if (last && segmentStyleKey(last) === segmentStyleKey(segment)) {
129
- last.text += segment.text;
130
- return;
131
- }
132
- segments.push({ ...segment });
133
- };
134
-
135
- const measureSegmentsWidth = (segments: TextSegment[]): number =>
136
- segments.reduce(
137
- (total, segment) => total + measureDisplayWidth(segment.text),
138
- 0,
139
- );
140
-
141
- const truncateSegmentsToWidth = (
142
- segments: TextSegment[],
143
- maxWidth: number,
144
- ): TextSegment[] => {
145
- if (maxWidth <= 0) {
146
- return [];
147
- }
148
- const ellipsis = "...";
149
- const ellipsisWidth = measureDisplayWidth(ellipsis);
150
- if (ellipsisWidth >= maxWidth) {
151
- return [{ text: ellipsis }];
152
- }
153
-
154
- const targetWidth = maxWidth - ellipsisWidth;
155
- const result: TextSegment[] = [];
156
- let currentWidth = 0;
157
- let truncated = false;
158
-
159
- for (const segment of segments) {
160
- for (const char of Array.from(segment.text)) {
161
- const charWidth = getCharWidth(char);
162
- if (currentWidth + charWidth > targetWidth) {
163
- truncated = true;
164
- break;
165
- }
166
- appendSegment(result, {
167
- text: char,
168
- fg: segment.fg,
169
- bg: segment.bg,
170
- attributes: segment.attributes,
171
- });
172
- currentWidth += charWidth;
173
- }
174
- if (truncated) {
175
- break;
176
- }
177
- }
178
-
179
- appendSegment(result, { text: ellipsis });
180
- return result;
181
- };
182
-
183
- const fitSegmentsToWidth = (
184
- segments: TextSegment[],
185
- width: number,
186
- ): TextSegment[] => {
187
- const totalWidth = measureSegmentsWidth(segments);
188
- if (totalWidth === width) {
189
- return segments;
190
- }
191
- if (totalWidth > width) {
192
- return truncateSegmentsToWidth(segments, width);
193
- }
194
- const padding = " ".repeat(Math.max(0, width - totalWidth));
195
- if (padding) {
196
- return [...segments, { text: padding }];
197
- }
198
- return segments;
199
- };
200
-
201
- const applySelectionStyle = (segments: TextSegment[]): TextSegment[] =>
202
- segments.map((segment) => ({
203
- text: segment.text,
204
- fg: selectionStyle.fg,
205
- bg: selectionStyle.bg,
206
- }));
207
-
208
- const CLEANUP_SPINNER_FRAMES = ["-", "\\", "|", "/"];
209
-
210
- const CURSOR_FRAMES = ["|", " "];
211
-
212
- const formatRelativeTime = (date: Date): string => {
213
- const now = new Date();
214
- const diffMs = now.getTime() - date.getTime();
215
- const diffSec = Math.floor(diffMs / 1000);
216
-
217
- if (diffSec < 60) {
218
- return `${diffSec}s ago`;
219
- }
220
-
221
- const diffMin = Math.floor(diffSec / 60);
222
- if (diffMin < 60) {
223
- return `${diffMin}m ago`;
224
- }
225
-
226
- const diffHour = Math.floor(diffMin / 60);
227
- return `${diffHour}h ago`;
228
- };
229
-
230
- const formatViewModeLabel = (mode: BranchViewMode): string => {
231
- switch (mode) {
232
- case "all":
233
- return "All";
234
- case "local":
235
- return "Local";
236
- case "remote":
237
- return "Remote";
238
- }
239
- };
240
-
241
- // Use shared color utility for consistent agent colors (SPEC-3b0ed29b FR-024~FR-027)
242
- const getToolColor = (label: string, toolId?: string | null): string => {
243
- return getAgentTerminalColor(toolId, label);
244
- };
245
-
246
- interface LoadingIndicatorProps {
247
- isLoading: boolean;
248
- delay?: number;
249
- message?: string;
250
- width: number;
251
- }
252
-
253
- function LoadingIndicator(props: LoadingIndicatorProps) {
254
- const frames = ["|", "/", "-", "\\"];
255
- const delay = props.delay ?? 300;
256
- const [visible, setVisible] = createSignal(props.isLoading && delay <= 0);
257
- const [frameIndex, setFrameIndex] = createSignal(0);
258
-
259
- createEffect(() => {
260
- let delayTimer: ReturnType<typeof setTimeout> | undefined;
261
- let intervalTimer: ReturnType<typeof setInterval> | undefined;
262
-
263
- if (props.isLoading) {
264
- if (delay <= 0) {
265
- setVisible(true);
266
- } else {
267
- delayTimer = setTimeout(() => {
268
- setVisible(true);
269
- }, delay);
270
- }
271
- } else {
272
- setVisible(false);
273
- setFrameIndex(0);
274
- }
275
-
276
- if (visible() && props.isLoading) {
277
- intervalTimer = setInterval(() => {
278
- setFrameIndex((current) => (current + 1) % frames.length);
279
- }, 80);
280
- }
281
-
282
- return () => {
283
- if (delayTimer) {
284
- clearTimeout(delayTimer);
285
- }
286
- if (intervalTimer) {
287
- clearInterval(intervalTimer);
288
- }
289
- };
290
- });
291
-
292
- if (!props.isLoading || !visible()) {
293
- return null;
294
- }
295
-
296
- return (
297
- <text fg="yellow">
298
- {padLine(
299
- `${frames[frameIndex()]} ${props.message ?? "Loading... please wait"}`,
300
- props.width,
301
- )}
302
- </text>
303
- );
304
- }
305
-
306
- export function BranchListScreen(props: BranchListScreenProps) {
307
- const terminal = useTerminalDimensions();
308
-
309
- const [filterQuery, setFilterQuery] = createSignal("");
310
- const [filterMode, setFilterMode] = createSignal(false);
311
- const [viewMode, setViewMode] = createSignal<BranchViewMode>("all");
312
-
313
- // カーソル位置: 外部制御(props.cursorPosition)が優先、なければ内部状態を使用
314
- const [internalSelectedIndex, setInternalSelectedIndex] = createSignal(
315
- props.cursorPosition ?? 0,
316
- );
317
- const selectedIndex = () => props.cursorPosition ?? internalSelectedIndex();
318
- const setSelectedIndex = (
319
- value: number | ((prev: number) => number),
320
- ): void => {
321
- const newValue =
322
- typeof value === "function" ? value(selectedIndex()) : value;
323
- setInternalSelectedIndex(newValue);
324
- props.onCursorPositionChange?.(newValue);
325
- };
326
-
327
- const [scrollOffset, setScrollOffset] = createSignal(0);
328
- const [cleanupSpinnerIndex, setCleanupSpinnerIndex] = createSignal(0);
329
- const [cursorIndex, setCursorIndex] = createSignal(0);
330
-
331
- const layoutWidth = createMemo(() => Math.max(20, terminal().width || 80));
332
- const listWidth = createMemo(() => Math.max(20, layoutWidth()));
333
-
334
- const fixedLines = createMemo(() => {
335
- const headerLines = 2 + (props.workingDirectory ? 1 : 0);
336
- const filterLines = 1;
337
- const statsLines = 1;
338
- const loadingLines = 1;
339
- const footerMessageLines = props.cleanupUI?.footerMessage ? 1 : 0;
340
- const branchLines = 1;
341
- const footerLines = 1;
342
- return (
343
- headerLines +
344
- filterLines +
345
- statsLines +
346
- loadingLines +
347
- footerMessageLines +
348
- branchLines +
349
- footerLines
350
- );
351
- });
352
-
353
- const contentHeight = createMemo(() => {
354
- const height = terminal().height || 24;
355
- return Math.max(3, height - fixedLines());
356
- });
357
-
358
- const selectedSet = createMemo(() => new Set(props.selectedBranches ?? []));
359
-
360
- const hasSpinningIndicator = createMemo(() => {
361
- if (!props.cleanupUI?.indicators) {
362
- return false;
363
- }
364
- return Object.values(props.cleanupUI.indicators).some(
365
- (indicator) => indicator.isSpinning,
366
- );
367
- });
368
-
369
- const hasSpinningFooter = createMemo(
370
- () => props.cleanupUI?.footerMessage?.isSpinning ?? false,
371
- );
372
-
373
- const safetyPendingActive = createMemo(() => {
374
- const pending = props.cleanupUI?.safetyPendingBranches;
375
- if (pending) {
376
- return pending.size > 0;
377
- }
378
- return props.cleanupUI?.safetyLoading === true;
379
- });
380
-
381
- const cleanupSpinnerActive = createMemo(
382
- () =>
383
- hasSpinningIndicator() || hasSpinningFooter() || safetyPendingActive(),
384
- );
385
-
386
- createEffect(() => {
387
- let intervalTimer: ReturnType<typeof setInterval> | undefined;
388
- if (cleanupSpinnerActive()) {
389
- intervalTimer = setInterval(() => {
390
- setCleanupSpinnerIndex(
391
- (current) => (current + 1) % CLEANUP_SPINNER_FRAMES.length,
392
- );
393
- }, 120);
394
- } else {
395
- setCleanupSpinnerIndex(0);
396
- }
397
- return () => {
398
- if (intervalTimer) {
399
- clearInterval(intervalTimer);
400
- }
401
- };
402
- });
403
-
404
- const cleanupSpinnerFrame = createMemo(() =>
405
- cleanupSpinnerActive()
406
- ? (CLEANUP_SPINNER_FRAMES[cleanupSpinnerIndex()] ??
407
- CLEANUP_SPINNER_FRAMES[0])
408
- : null,
409
- );
410
-
411
- const filteredBranches = createMemo(() => {
412
- let result = props.branches;
413
- const mode = viewMode();
414
-
415
- if (mode === "local") {
416
- result = result.filter((branch) => branch.type === "local");
417
- } else if (mode === "remote") {
418
- result = result.filter(
419
- (branch) =>
420
- branch.type === "remote" || branch.hasRemoteCounterpart === true,
421
- );
422
- }
423
-
424
- const query = filterQuery().trim().toLowerCase();
425
- if (query) {
426
- result = result.filter((branch) => {
427
- if (branch.name.toLowerCase().includes(query)) {
428
- return true;
429
- }
430
- if (branch.openPR?.title?.toLowerCase().includes(query)) {
431
- return true;
432
- }
433
- return false;
434
- });
435
- }
436
-
437
- return result;
438
- });
439
-
440
- // ツールラベルの最大幅を動的に計算
441
- const maxToolWidth = createMemo(() => {
442
- const MIN_TOOL_WIDTH = 7; // "Unknown" の幅
443
- let maxWidth = MIN_TOOL_WIDTH;
444
- for (const branch of filteredBranches()) {
445
- const toolLabel =
446
- branch.lastToolUsageLabel?.split("|")?.[0]?.trim() ??
447
- branch.lastToolUsage?.toolId ??
448
- "Unknown";
449
- const width = stringWidth(toolLabel);
450
- if (width > maxWidth) {
451
- maxWidth = width;
452
- }
453
- }
454
- return maxWidth;
455
- });
456
-
457
- // FR-037 / FR-037a: filterQueryまたはviewModeが実際に変更されたときのみカーソルをリセット
458
- // defer: true により初回実行をスキップし、安全状態更新時のリセットを防止
459
- createEffect(
460
- on(
461
- () => [filterQuery(), viewMode()],
462
- () => {
463
- setSelectedIndex(0);
464
- setScrollOffset(0);
465
- },
466
- { defer: true },
467
- ),
468
- );
469
-
470
- createEffect(() => {
471
- const total = filteredBranches().length;
472
- if (total === 0) {
473
- setSelectedIndex(0);
474
- setScrollOffset(0);
475
- return;
476
- }
477
- setSelectedIndex((prev) => Math.min(prev, total - 1));
478
- });
479
-
480
- createEffect(() => {
481
- const total = filteredBranches().length;
482
- const limit = contentHeight();
483
- const index = selectedIndex();
484
-
485
- setScrollOffset((prev) => {
486
- if (total === 0) {
487
- return 0;
488
- }
489
-
490
- let next = prev;
491
- if (index < prev) {
492
- next = index;
493
- } else if (index >= prev + limit) {
494
- next = index - limit + 1;
495
- }
496
-
497
- const maxOffset = Math.max(0, total - limit);
498
- return Math.min(Math.max(0, next), maxOffset);
499
- });
500
- });
501
-
502
- createEffect(() => {
503
- let intervalTimer: ReturnType<typeof setInterval> | undefined;
504
- if (filterMode()) {
505
- intervalTimer = setInterval(() => {
506
- setCursorIndex((current) => (current + 1) % CURSOR_FRAMES.length);
507
- }, 500);
508
- } else {
509
- setCursorIndex(0);
510
- }
511
- return () => {
512
- if (intervalTimer) {
513
- clearInterval(intervalTimer);
514
- }
515
- };
516
- });
517
-
518
- const cursorFrame = createMemo(() =>
519
- filterMode()
520
- ? (CURSOR_FRAMES[cursorIndex()] ?? CURSOR_FRAMES[0] ?? "")
521
- : "",
522
- );
523
-
524
- const formatLatestCommit = (timestamp?: number) => {
525
- if (!timestamp || Number.isNaN(timestamp)) {
526
- return "---";
527
- }
528
-
529
- const formatted = formatLocalDateTime(timestamp * 1000);
530
- return formatted || "---";
531
- };
532
-
533
- useKeyboard((key) => {
534
- // FR-044: ウィザードポップアップ表示中は入力を無効化
535
- if (props.wizardVisible) {
536
- return;
537
- }
538
- if (props.confirmVisible) {
539
- return;
540
- }
541
- if (props.helpVisible) {
542
- return;
543
- }
544
- if (props.cleanupUI?.inputLocked) {
545
- return;
546
- }
547
-
548
- if (filterMode()) {
549
- if (key.name === "down") {
550
- const total = filteredBranches().length;
551
- if (total > 0) {
552
- setSelectedIndex((prev) => Math.min(prev + 1, total - 1));
553
- }
554
- return;
555
- }
556
-
557
- if (key.name === "up") {
558
- const total = filteredBranches().length;
559
- if (total > 0) {
560
- setSelectedIndex((prev) => Math.max(prev - 1, 0));
561
- }
562
- return;
563
- }
564
-
565
- if (key.name === "escape") {
566
- if (filterQuery()) {
567
- setFilterQuery("");
568
- } else {
569
- setFilterMode(false);
570
- }
571
- return;
572
- }
573
-
574
- if (key.name === "backspace") {
575
- setFilterQuery((prev) => prev.slice(0, -1));
576
- return;
577
- }
578
-
579
- if (key.name === "return" || key.name === "linefeed") {
580
- setFilterMode(false);
581
- return;
582
- }
583
-
584
- if (
585
- key.sequence &&
586
- key.sequence.length === 1 &&
587
- !key.ctrl &&
588
- !key.meta &&
589
- !key.super &&
590
- !key.hyper
591
- ) {
592
- setFilterQuery((prev) => prev + key.sequence);
593
- }
594
- return;
595
- }
596
-
597
- if (key.ctrl && key.name === "c") {
598
- props.onQuit?.();
599
- return;
600
- }
601
-
602
- if (key.name === "escape" && filterQuery()) {
603
- setFilterQuery("");
604
- return;
605
- }
606
-
607
- if (key.name === "f" || key.sequence === "f") {
608
- setFilterMode(true);
609
- return;
610
- }
611
-
612
- if (key.name === "tab") {
613
- const currentIndex = VIEW_MODES.indexOf(viewMode());
614
- const nextIndex = (currentIndex + 1) % VIEW_MODES.length;
615
- setViewMode(VIEW_MODES[nextIndex] ?? "all");
616
- setSelectedIndex(0);
617
- return;
618
- }
619
-
620
- if (key.name === "down") {
621
- const total = filteredBranches().length;
622
- if (total > 0) {
623
- setSelectedIndex((prev) => Math.min(prev + 1, total - 1));
624
- }
625
- return;
626
- }
627
-
628
- if (key.name === "up") {
629
- const total = filteredBranches().length;
630
- if (total > 0) {
631
- setSelectedIndex((prev) => Math.max(prev - 1, 0));
632
- }
633
- return;
634
- }
635
-
636
- if (key.name === "return" || key.name === "linefeed") {
637
- key.preventDefault();
638
- const selected = filteredBranches()[selectedIndex()];
639
- if (selected) {
640
- props.onSelect(selected);
641
- }
642
- return;
643
- }
644
-
645
- if (key.sequence === " " || key.name === "space") {
646
- const selected = filteredBranches()[selectedIndex()];
647
- if (selected) {
648
- props.onToggleSelect?.(selected.name);
649
- }
650
- return;
651
- }
652
-
653
- if (key.name === "n" || key.sequence === "n") {
654
- key.preventDefault();
655
- const selected = filteredBranches()[selectedIndex()] ?? null;
656
- props.onCreateBranch?.(selected);
657
- return;
658
- }
659
-
660
- if (key.name === "c" || key.sequence === "c") {
661
- props.onCleanupCommand?.();
662
- } else if (key.name === "x" || key.sequence === "x") {
663
- props.onRepairWorktrees?.();
664
- } else if (key.name === "r" || key.sequence === "r") {
665
- props.onRefresh?.();
666
- } else if (key.name === "p" || key.sequence === "p") {
667
- props.onOpenProfiles?.();
668
- } else if (key.name === "l" || key.sequence === "l") {
669
- const selected = filteredBranches()[selectedIndex()] ?? null;
670
- props.onOpenLogs?.(selected);
671
- }
672
- });
673
-
674
- const visibleBranches = createMemo(() => {
675
- const start = scrollOffset();
676
- const limit = contentHeight();
677
- return filteredBranches().slice(start, start + limit);
678
- });
679
-
680
- const renderBranchLine = (branch: BranchItem, index: number) => {
681
- const absoluteIndex = scrollOffset() + index;
682
- const isSelected = absoluteIndex === selectedIndex();
683
- const columns = listWidth();
684
-
685
- const indicatorInfo = props.cleanupUI?.indicators?.[branch.name];
686
- let leadingIndicator = "";
687
- if (indicatorInfo) {
688
- leadingIndicator = indicatorInfo.isSpinning
689
- ? (CLEANUP_SPINNER_FRAMES[0] ?? "-")
690
- : indicatorInfo.icon;
691
- }
692
- const indicatorColor =
693
- !isSelected && indicatorInfo?.color ? indicatorInfo.color : undefined;
694
-
695
- const isChecked = selectedSet().has(branch.name);
696
- const hasUncommitted = branch.worktree?.hasUncommittedChanges === true;
697
- const hasUnpushed = branch.hasUnpushedCommits === true;
698
- const isWarning = hasUnpushed || hasUncommitted;
699
- const selectionIcon = isChecked ? "[*]" : "[ ]";
700
- const selectionColor = isChecked && isWarning ? "red" : undefined;
701
- let worktreeIcon = ".";
702
- let worktreeColor: IndicatorColor | "gray" = "gray";
703
- if (branch.worktreeStatus === "active") {
704
- worktreeIcon = "w";
705
- worktreeColor = "brightGreen";
706
- } else if (branch.worktreeStatus === "inaccessible") {
707
- worktreeIcon = "x";
708
- worktreeColor = "red";
709
- }
710
- const isRemoteBranch = branch.type === "remote";
711
- const safetyLoading = props.cleanupUI?.safetyLoading === true;
712
- const safetyPendingBranches = props.cleanupUI?.safetyPendingBranches;
713
- const isSafetyPending = safetyPendingBranches
714
- ? safetyPendingBranches.has(branch.name)
715
- : safetyLoading;
716
- const spinnerFrame = cleanupSpinnerFrame();
717
-
718
- let safeIcon = " ";
719
- let safeColor: IndicatorColor | undefined;
720
- if (isRemoteBranch) {
721
- safeIcon = " ";
722
- safeColor = undefined;
723
- } else if (isSafetyPending) {
724
- safeIcon = spinnerFrame ?? "-";
725
- safeColor = undefined;
726
- } else if (hasUncommitted) {
727
- safeIcon = "!";
728
- safeColor = "red";
729
- } else if (hasUnpushed) {
730
- safeIcon = "!";
731
- safeColor = "yellow";
732
- } else if (branch.isUnmerged) {
733
- safeIcon = "*";
734
- safeColor = "yellow";
735
- } else if (branch.safeToCleanup === true) {
736
- safeIcon = "o";
737
- safeColor = "brightGreen";
738
- } else {
739
- safeIcon = "!";
740
- safeColor = "red";
741
- }
742
-
743
- let commitText = "---";
744
- const latestActivitySec = getLatestActivityTimestamp(branch);
745
- if (latestActivitySec > 0) {
746
- commitText = formatLatestCommit(latestActivitySec);
747
- }
748
-
749
- const toolLabelRaw =
750
- branch.lastToolUsageLabel?.split("|")?.[0]?.trim() ??
751
- branch.lastToolUsage?.toolId ??
752
- "Unknown";
753
-
754
- const formatFixedWidth = (value: string, targetWidth: number) => {
755
- let v = value;
756
- if (measureDisplayWidth(v) > targetWidth) {
757
- v = truncateToWidth(v, targetWidth);
758
- }
759
- const padding = Math.max(0, targetWidth - measureDisplayWidth(v));
760
- return v + " ".repeat(padding);
761
- };
762
-
763
- const toolWidth = maxToolWidth();
764
- const DATE_WIDTH = 16;
765
- const paddedTool = formatFixedWidth(toolLabelRaw, toolWidth);
766
- const paddedDate =
767
- commitText === "---"
768
- ? " ".repeat(DATE_WIDTH)
769
- : commitText.padStart(DATE_WIDTH, " ");
770
- const timestampText = `${paddedTool} | ${paddedDate}`;
771
- const timestampWidth = measureDisplayWidth(timestampText);
772
- const toolColor = getToolColor(paddedTool, branch.lastToolUsage?.toolId);
773
-
774
- const displayLabel =
775
- branch.type === "remote" && branch.remoteName
776
- ? branch.remoteName
777
- : branch.name;
778
-
779
- const staticPrefix = `${leadingIndicator}${selectionIcon} ${worktreeIcon} ${safeIcon} `;
780
- const staticPrefixWidth = measureDisplayWidth(staticPrefix);
781
- const maxLeftDisplayWidth = Math.max(0, columns - timestampWidth - 1);
782
- const maxLabelWidth = Math.max(0, maxLeftDisplayWidth - staticPrefixWidth);
783
- let truncatedLabel = truncateToWidth(displayLabel, maxLabelWidth);
784
- let leftText = `${staticPrefix}${truncatedLabel}`;
785
- let leftDisplayWidth = measureDisplayWidth(leftText);
786
- let gapWidth = Math.max(1, columns - leftDisplayWidth - timestampWidth);
787
-
788
- const buildLine = () =>
789
- `${leftText}${" ".repeat(gapWidth)}${timestampText}`;
790
- let line = buildLine();
791
-
792
- if (measureDisplayWidth(line) > columns) {
793
- const overflow = measureDisplayWidth(line) - columns;
794
- gapWidth = Math.max(1, gapWidth - overflow);
795
- line = buildLine();
796
- if (measureDisplayWidth(line) > columns) {
797
- const extra = measureDisplayWidth(line) - columns;
798
- const newLabelWidth = Math.max(
799
- 0,
800
- measureDisplayWidth(truncatedLabel) - extra,
801
- );
802
- truncatedLabel = truncateToWidth(displayLabel, newLabelWidth);
803
- leftText = `${staticPrefix}${truncatedLabel}`;
804
- leftDisplayWidth = measureDisplayWidth(leftText);
805
- gapWidth = Math.max(1, columns - leftDisplayWidth - timestampWidth);
806
- }
807
- }
808
-
809
- const segments: TextSegment[] = [];
810
- if (leadingIndicator) {
811
- appendSegment(segments, { text: leadingIndicator, fg: indicatorColor });
812
- }
813
- appendSegment(segments, { text: selectionIcon, fg: selectionColor });
814
- appendSegment(segments, { text: " " });
815
- appendSegment(segments, { text: worktreeIcon, fg: worktreeColor });
816
- appendSegment(segments, { text: " " });
817
- appendSegment(segments, { text: safeIcon, fg: safeColor });
818
- appendSegment(segments, { text: " " });
819
- appendSegment(segments, { text: truncatedLabel });
820
- appendSegment(segments, { text: " ".repeat(gapWidth) });
821
- appendSegment(segments, { text: paddedTool, fg: toolColor });
822
- appendSegment(segments, { text: " | " });
823
- appendSegment(segments, { text: paddedDate });
824
-
825
- const lineSegments = fitSegmentsToWidth(segments, columns);
826
- return isSelected ? applySelectionStyle(lineSegments) : lineSegments;
827
- };
828
-
829
- const footerActions = [
830
- { key: "r", description: "Refresh" },
831
- { key: "c", description: "Cleanup" },
832
- { key: "x", description: "Repair" },
833
- { key: "l", description: "Logs" },
834
- ];
835
-
836
- const filterLineSegments = createMemo(() => {
837
- const segments: TextSegment[] = [];
838
- const query = filterQuery();
839
-
840
- appendSegment(segments, {
841
- text: "Filter(f): ",
842
- attributes: TextAttributes.DIM,
843
- });
844
- if (filterMode()) {
845
- if (query) {
846
- appendSegment(segments, { text: query });
847
- } else {
848
- appendSegment(segments, {
849
- text: "Type to search...",
850
- attributes: TextAttributes.DIM,
851
- });
852
- }
853
- appendSegment(segments, { text: cursorFrame() });
854
- } else {
855
- appendSegment(segments, {
856
- text: query || "(press f to filter)",
857
- attributes: TextAttributes.DIM,
858
- });
859
- }
860
-
861
- if (query) {
862
- appendSegment(segments, {
863
- text: ` (Showing ${filteredBranches().length} of ${props.branches.length})`,
864
- attributes: TextAttributes.DIM,
865
- });
866
- }
867
-
868
- return fitSegmentsToWidth(segments, layoutWidth());
869
- });
870
-
871
- const statsSegments = createMemo(() => {
872
- const segments: TextSegment[] = [];
873
- const separator = " ";
874
-
875
- appendSegment(segments, {
876
- text: "Mode(tab): ",
877
- attributes: TextAttributes.DIM,
878
- });
879
- appendSegment(segments, {
880
- text: formatViewModeLabel(viewMode()),
881
- fg: "white",
882
- attributes: TextAttributes.BOLD,
883
- });
884
- appendSegment(segments, {
885
- text: separator,
886
- attributes: TextAttributes.DIM,
887
- });
888
-
889
- const statsItems = [
890
- { label: "Local", value: props.stats.localCount, color: "cyan" },
891
- { label: "Remote", value: props.stats.remoteCount, color: "green" },
892
- { label: "Worktrees", value: props.stats.worktreeCount, color: "yellow" },
893
- { label: "Changes", value: props.stats.changesCount, color: "magenta" },
894
- ];
895
-
896
- statsItems.forEach((item, index) => {
897
- appendSegment(segments, {
898
- text: `${item.label}: `,
899
- attributes: TextAttributes.DIM,
900
- });
901
- appendSegment(segments, {
902
- text: String(item.value),
903
- fg: item.color,
904
- attributes: TextAttributes.BOLD,
905
- });
906
- if (index < statsItems.length - 1 || props.lastUpdated) {
907
- appendSegment(segments, {
908
- text: separator,
909
- attributes: TextAttributes.DIM,
910
- });
911
- }
912
- });
913
-
914
- if (props.lastUpdated) {
915
- appendSegment(segments, {
916
- text: "Updated: ",
917
- attributes: TextAttributes.DIM,
918
- });
919
- appendSegment(segments, {
920
- text: formatRelativeTime(props.lastUpdated),
921
- fg: "gray",
922
- });
923
- }
924
-
925
- return fitSegmentsToWidth(segments, layoutWidth());
926
- });
927
-
928
- const statusLegendSegments = createMemo(() => {
929
- const segments: TextSegment[] = [];
930
- const separator = " ";
931
-
932
- appendSegment(segments, {
933
- text: "Legend: ",
934
- attributes: TextAttributes.DIM,
935
- });
936
-
937
- appendSegment(segments, {
938
- text: "o",
939
- fg: "brightGreen",
940
- attributes: TextAttributes.BOLD,
941
- });
942
- appendSegment(segments, {
943
- text: " Safe",
944
- fg: "brightGreen",
945
- });
946
- appendSegment(segments, {
947
- text: separator,
948
- attributes: TextAttributes.DIM,
949
- });
950
-
951
- appendSegment(segments, {
952
- text: "!",
953
- fg: "red",
954
- attributes: TextAttributes.BOLD,
955
- });
956
- appendSegment(segments, {
957
- text: " Uncommitted",
958
- fg: "red",
959
- });
960
- appendSegment(segments, {
961
- text: separator,
962
- attributes: TextAttributes.DIM,
963
- });
964
-
965
- appendSegment(segments, {
966
- text: "!",
967
- fg: "yellow",
968
- attributes: TextAttributes.BOLD,
969
- });
970
- appendSegment(segments, {
971
- text: " Unpushed",
972
- fg: "yellow",
973
- });
974
- appendSegment(segments, {
975
- text: separator,
976
- attributes: TextAttributes.DIM,
977
- });
978
-
979
- appendSegment(segments, {
980
- text: "*",
981
- fg: "yellow",
982
- attributes: TextAttributes.BOLD,
983
- });
984
- appendSegment(segments, {
985
- text: " Unmerged",
986
- fg: "yellow",
987
- });
988
-
989
- return fitSegmentsToWidth(segments, layoutWidth());
990
- });
991
-
992
- const footerSegments = createMemo(() => {
993
- const segments: TextSegment[] = [];
994
- const separator = " ";
995
- footerActions.forEach((action, index) => {
996
- appendSegment(segments, { text: "[", attributes: TextAttributes.DIM });
997
- appendSegment(segments, {
998
- text: action.key,
999
- fg: "cyan",
1000
- attributes: TextAttributes.BOLD,
1001
- });
1002
- appendSegment(segments, { text: "]", attributes: TextAttributes.DIM });
1003
- appendSegment(segments, { text: ` ${action.description}` });
1004
- if (index < footerActions.length - 1) {
1005
- appendSegment(segments, {
1006
- text: separator,
1007
- attributes: TextAttributes.DIM,
1008
- });
1009
- }
1010
- });
1011
-
1012
- return fitSegmentsToWidth(segments, layoutWidth());
1013
- });
1014
-
1015
- const renderSegmentLine = (segments: TextSegment[]) => (
1016
- <box flexDirection="row">
1017
- {segments.map((segment) => (
1018
- <text
1019
- {...(segment.fg ? { fg: segment.fg } : {})}
1020
- {...(segment.bg ? { bg: segment.bg } : {})}
1021
- {...(segment.attributes ? { attributes: segment.attributes } : {})}
1022
- >
1023
- {segment.text}
1024
- </text>
1025
- ))}
1026
- </box>
1027
- );
1028
-
1029
- const selectedWorktreeLabel = createMemo(() => {
1030
- const branches = filteredBranches();
1031
- if (branches.length === 0) {
1032
- return "(none)";
1033
- }
1034
- const selected = branches[selectedIndex()];
1035
- if (!selected) {
1036
- return "(none)";
1037
- }
1038
- if (selected.worktree?.path) {
1039
- return selected.worktree.path;
1040
- }
1041
- if (selected.isCurrent && props.workingDirectory) {
1042
- return props.workingDirectory;
1043
- }
1044
- return "(none)";
1045
- });
1046
-
1047
- return (
1048
- <box flexDirection="column" height={terminal().height || 24}>
1049
- <Header
1050
- title="gwt - Branch Selection"
1051
- titleColor="cyan"
1052
- width={layoutWidth()}
1053
- {...(props.version !== undefined ? { version: props.version } : {})}
1054
- {...(props.workingDirectory
1055
- ? { workingDirectory: props.workingDirectory }
1056
- : {})}
1057
- {...(props.activeProfile !== undefined
1058
- ? { activeProfile: props.activeProfile }
1059
- : {})}
1060
- />
1061
-
1062
- {renderSegmentLine(filterLineSegments())}
1063
-
1064
- {renderSegmentLine(statsSegments())}
1065
-
1066
- <box flexDirection="column" flexGrow={1}>
1067
- {Boolean(props.loading) && props.branches.length === 0 ? (
1068
- <LoadingIndicator
1069
- isLoading
1070
- message="Loading Git information..."
1071
- width={layoutWidth()}
1072
- {...(props.loadingIndicatorDelay !== undefined
1073
- ? { delay: props.loadingIndicatorDelay }
1074
- : {})}
1075
- />
1076
- ) : (
1077
- renderSegmentLine(statusLegendSegments())
1078
- )}
1079
-
1080
- {props.error && (
1081
- <>
1082
- <text fg="red" attributes={TextAttributes.BOLD}>
1083
- {padLine(`Error: ${props.error.message}`, layoutWidth())}
1084
- </text>
1085
- {process.env.DEBUG && props.error.stack && (
1086
- <>
1087
- <text attributes={TextAttributes.DIM}>
1088
- {padLine("", layoutWidth())}
1089
- </text>
1090
- {props.error.stack.split("\n").map((line) => (
1091
- <text fg="gray" attributes={TextAttributes.DIM}>
1092
- {padLine(line, layoutWidth())}
1093
- </text>
1094
- ))}
1095
- </>
1096
- )}
1097
- </>
1098
- )}
1099
-
1100
- {!props.loading && !props.error && props.branches.length === 0 && (
1101
- <text attributes={TextAttributes.DIM}>
1102
- {padLine("No branches found", layoutWidth())}
1103
- </text>
1104
- )}
1105
-
1106
- {!props.loading &&
1107
- !props.error &&
1108
- props.branches.length > 0 &&
1109
- filteredBranches().length === 0 &&
1110
- filterQuery() && (
1111
- <text attributes={TextAttributes.DIM}>
1112
- {padLine("No branches match your filter", layoutWidth())}
1113
- </text>
1114
- )}
1115
-
1116
- {!props.loading && !props.error && filteredBranches().length > 0 && (
1117
- <>
1118
- {visibleBranches().map((branch, index) => {
1119
- const rowSegments = renderBranchLine(branch, index);
1120
- return renderSegmentLine(rowSegments);
1121
- })}
1122
- {Array.from({
1123
- length: Math.max(0, contentHeight() - visibleBranches().length),
1124
- }).map(() => (
1125
- <text>{padLine("", listWidth())}</text>
1126
- ))}
1127
- </>
1128
- )}
1129
- </box>
1130
-
1131
- {props.cleanupUI?.footerMessage && (
1132
- <text
1133
- {...(props.cleanupUI.footerMessage.color
1134
- ? { fg: props.cleanupUI.footerMessage.color }
1135
- : {})}
1136
- >
1137
- {padLine(
1138
- props.cleanupUI.footerMessage.isSpinning && cleanupSpinnerFrame()
1139
- ? `${cleanupSpinnerFrame()} ${props.cleanupUI.footerMessage.text}`
1140
- : props.cleanupUI.footerMessage.text,
1141
- layoutWidth(),
1142
- )}
1143
- </text>
1144
- )}
1145
-
1146
- <text attributes={TextAttributes.DIM}>
1147
- {padLine(`Worktree: ${selectedWorktreeLabel()}`, layoutWidth())}
1148
- </text>
1149
-
1150
- {renderSegmentLine(footerSegments())}
1151
- </box>
1152
- );
1153
- }