claudedesk 3.8.6 → 4.1.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 (344) hide show
  1. package/.github/workflows/ci.yml +72 -0
  2. package/.github/workflows/release.yml +112 -0
  3. package/CHANGELOG.md +157 -0
  4. package/CONTRIBUTING.md +450 -0
  5. package/LICENSE +1 -1
  6. package/README.md +239 -1404
  7. package/SECURITY.md +88 -0
  8. package/dist/main/ansi-strip.js +25 -0
  9. package/dist/main/built-in-actions.js +137 -0
  10. package/dist/main/checkpoint-manager.js +308 -0
  11. package/dist/main/checkpoint-persistence.js +182 -0
  12. package/dist/main/cli-manager.js +156 -0
  13. package/dist/main/file-dragdrop-handler.js +168 -0
  14. package/dist/main/file-utils.js +211 -0
  15. package/dist/main/history-manager.js +752 -0
  16. package/dist/main/index.js +203 -0
  17. package/dist/main/ipc-handlers.js +534 -0
  18. package/dist/main/prompt-templates-manager.js +209 -0
  19. package/dist/main/quota-service.js +318 -0
  20. package/dist/main/session-manager.js +285 -0
  21. package/dist/main/session-persistence.js +121 -0
  22. package/dist/main/settings-persistence.js +335 -0
  23. package/dist/preload/index.js +253 -0
  24. package/dist/renderer/assets/index-B6x9OLWJ.css +32 -0
  25. package/dist/renderer/assets/index-CQJ-3uFX.js +12863 -0
  26. package/dist/renderer/index.html +14 -0
  27. package/dist/shared/ipc-types.js +86 -0
  28. package/dist/shared/types/checkpoint-types.js +5 -0
  29. package/dist/shared/types/history-types.js +5 -0
  30. package/dist/shared/types/prompt-templates.js +3 -0
  31. package/electron-builder.yml +54 -0
  32. package/package.json +37 -92
  33. package/postcss.config.js +6 -0
  34. package/resources/.gitkeep +0 -0
  35. package/resources/icon.svg +8 -0
  36. package/src/main/ansi-strip.ts +25 -0
  37. package/src/main/built-in-actions.ts +136 -0
  38. package/src/main/checkpoint-manager.ts +363 -0
  39. package/src/main/checkpoint-persistence.ts +158 -0
  40. package/src/main/cli-manager.ts +146 -0
  41. package/src/main/file-dragdrop-handler.ts +164 -0
  42. package/src/main/file-utils.ts +190 -0
  43. package/src/main/history-manager.ts +820 -0
  44. package/src/main/index.ts +194 -0
  45. package/src/main/ipc-handlers.ts +576 -0
  46. package/src/main/prompt-templates-manager.ts +211 -0
  47. package/src/main/quota-service.ts +388 -0
  48. package/src/main/session-manager.ts +366 -0
  49. package/src/main/session-persistence.ts +93 -0
  50. package/src/main/settings-persistence.ts +366 -0
  51. package/src/preload/index.ts +356 -0
  52. package/src/renderer/App.tsx +821 -0
  53. package/src/renderer/components/AboutDialog.tsx +322 -0
  54. package/src/renderer/components/CheckpointPanel.tsx +374 -0
  55. package/src/renderer/components/CommandPalette.tsx +465 -0
  56. package/src/renderer/components/DragDropContextMenu.tsx +233 -0
  57. package/src/renderer/components/DragDropOverlay.tsx +202 -0
  58. package/src/renderer/components/DragDropSettings.tsx +401 -0
  59. package/src/renderer/components/HistoryPanel.css +536 -0
  60. package/src/renderer/components/HistoryPanel.tsx +681 -0
  61. package/src/renderer/components/PaneHeader.tsx +251 -0
  62. package/src/renderer/components/PaneSessionPicker.tsx +206 -0
  63. package/src/renderer/components/SplitLayout.tsx +215 -0
  64. package/src/renderer/components/TemplateEditor.tsx +805 -0
  65. package/src/renderer/components/Terminal.tsx +693 -0
  66. package/src/renderer/components/TitleBarBranding.tsx +124 -0
  67. package/src/renderer/components/ui/BrandLogo.tsx +29 -0
  68. package/src/renderer/components/ui/BudgetPanel.tsx +1087 -0
  69. package/src/renderer/components/ui/BudgetSettings.tsx +1181 -0
  70. package/src/renderer/components/ui/CheckpointDialog.tsx +273 -0
  71. package/src/renderer/components/ui/ConfirmDialog.tsx +219 -0
  72. package/src/renderer/components/ui/ContextMenu.tsx +205 -0
  73. package/src/renderer/components/ui/EmptyState.tsx +116 -0
  74. package/src/renderer/components/ui/NewSessionDialog.tsx +921 -0
  75. package/src/renderer/components/ui/SettingsDialog.tsx +1384 -0
  76. package/src/renderer/components/ui/Tab.tsx +430 -0
  77. package/src/renderer/components/ui/TabBar.tsx +593 -0
  78. package/src/renderer/components/ui/index.ts +18 -0
  79. package/src/renderer/hooks/index.ts +2 -0
  80. package/src/renderer/hooks/useCheckpoints.ts +267 -0
  81. package/src/renderer/hooks/useCommandPalette.ts +146 -0
  82. package/src/renderer/hooks/useDragDrop.ts +134 -0
  83. package/src/renderer/hooks/useHistory.ts +190 -0
  84. package/src/renderer/hooks/useQuota.ts +84 -0
  85. package/src/renderer/hooks/useSessionManager.ts +199 -0
  86. package/src/renderer/hooks/useSplitView.ts +464 -0
  87. package/src/renderer/index.html +13 -0
  88. package/src/renderer/main.tsx +10 -0
  89. package/src/renderer/styles/globals.css +244 -0
  90. package/src/renderer/utils/fuzzy-search.ts +184 -0
  91. package/src/renderer/utils/toast.ts +83 -0
  92. package/src/renderer/utils/variable-resolver.ts +111 -0
  93. package/src/shared/ipc-types.ts +463 -0
  94. package/src/shared/types/checkpoint-types.ts +86 -0
  95. package/src/shared/types/history-types.ts +106 -0
  96. package/src/shared/types/prompt-templates.ts +60 -0
  97. package/tailwind.config.js +27 -0
  98. package/tsconfig.json +28 -0
  99. package/tsconfig.main.json +25 -0
  100. package/tsconfig.node.json +11 -0
  101. package/vite.config.ts +22 -0
  102. package/config/repos.example.json +0 -128
  103. package/config/settings.example.json +0 -87
  104. package/config/skills/code-review.md +0 -76
  105. package/config/skills/full-check.md +0 -26
  106. package/config/skills/lint-fix.md +0 -23
  107. package/dist/api/agent-routes.d.ts +0 -2
  108. package/dist/api/agent-routes.d.ts.map +0 -1
  109. package/dist/api/agent-routes.js +0 -435
  110. package/dist/api/agent-routes.js.map +0 -1
  111. package/dist/api/app-routes.d.ts +0 -2
  112. package/dist/api/app-routes.d.ts.map +0 -1
  113. package/dist/api/app-routes.js +0 -150
  114. package/dist/api/app-routes.js.map +0 -1
  115. package/dist/api/docker-routes.d.ts +0 -2
  116. package/dist/api/docker-routes.d.ts.map +0 -1
  117. package/dist/api/docker-routes.js +0 -167
  118. package/dist/api/docker-routes.js.map +0 -1
  119. package/dist/api/idea-routes.d.ts +0 -2
  120. package/dist/api/idea-routes.d.ts.map +0 -1
  121. package/dist/api/idea-routes.js +0 -176
  122. package/dist/api/idea-routes.js.map +0 -1
  123. package/dist/api/mcp-routes.d.ts +0 -2
  124. package/dist/api/mcp-routes.d.ts.map +0 -1
  125. package/dist/api/mcp-routes.js +0 -306
  126. package/dist/api/mcp-routes.js.map +0 -1
  127. package/dist/api/middleware.d.ts +0 -10
  128. package/dist/api/middleware.d.ts.map +0 -1
  129. package/dist/api/middleware.js +0 -298
  130. package/dist/api/middleware.js.map +0 -1
  131. package/dist/api/pin-auth.d.ts +0 -65
  132. package/dist/api/pin-auth.d.ts.map +0 -1
  133. package/dist/api/pin-auth.js +0 -218
  134. package/dist/api/pin-auth.js.map +0 -1
  135. package/dist/api/routes.d.ts +0 -2
  136. package/dist/api/routes.d.ts.map +0 -1
  137. package/dist/api/routes.js +0 -491
  138. package/dist/api/routes.js.map +0 -1
  139. package/dist/api/settings-routes.d.ts +0 -2
  140. package/dist/api/settings-routes.d.ts.map +0 -1
  141. package/dist/api/settings-routes.js +0 -797
  142. package/dist/api/settings-routes.js.map +0 -1
  143. package/dist/api/skill-routes.d.ts +0 -2
  144. package/dist/api/skill-routes.d.ts.map +0 -1
  145. package/dist/api/skill-routes.js +0 -88
  146. package/dist/api/skill-routes.js.map +0 -1
  147. package/dist/api/system-routes.d.ts +0 -5
  148. package/dist/api/system-routes.d.ts.map +0 -1
  149. package/dist/api/system-routes.js +0 -367
  150. package/dist/api/system-routes.js.map +0 -1
  151. package/dist/api/terminal-routes.d.ts +0 -2
  152. package/dist/api/terminal-routes.d.ts.map +0 -1
  153. package/dist/api/terminal-routes.js +0 -4440
  154. package/dist/api/terminal-routes.js.map +0 -1
  155. package/dist/api/tunnel-routes.d.ts +0 -2
  156. package/dist/api/tunnel-routes.d.ts.map +0 -1
  157. package/dist/api/tunnel-routes.js +0 -194
  158. package/dist/api/tunnel-routes.js.map +0 -1
  159. package/dist/api/workspace-routes.d.ts +0 -3
  160. package/dist/api/workspace-routes.d.ts.map +0 -1
  161. package/dist/api/workspace-routes.js +0 -871
  162. package/dist/api/workspace-routes.js.map +0 -1
  163. package/dist/cli.d.ts +0 -3
  164. package/dist/cli.d.ts.map +0 -1
  165. package/dist/cli.js +0 -418
  166. package/dist/cli.js.map +0 -1
  167. package/dist/client/assets/index-CY1_Wy-P.css +0 -1
  168. package/dist/client/assets/index-DeLzq_MS.js +0 -7858
  169. package/dist/client/favicon.svg +0 -37
  170. package/dist/client/icons/icon-192.svg +0 -5
  171. package/dist/client/icons/icon-512.svg +0 -5
  172. package/dist/client/icons/logo-with-message.png +0 -0
  173. package/dist/client/icons/logo.png +0 -0
  174. package/dist/client/index.html +0 -25
  175. package/dist/client/manifest.json +0 -62
  176. package/dist/client/sw.js +0 -243
  177. package/dist/config/agent-usage.d.ts +0 -35
  178. package/dist/config/agent-usage.d.ts.map +0 -1
  179. package/dist/config/agent-usage.js +0 -113
  180. package/dist/config/agent-usage.js.map +0 -1
  181. package/dist/config/mcp-catalog.d.ts +0 -18
  182. package/dist/config/mcp-catalog.d.ts.map +0 -1
  183. package/dist/config/mcp-catalog.js +0 -583
  184. package/dist/config/mcp-catalog.js.map +0 -1
  185. package/dist/config/mcp-servers.d.ts +0 -42
  186. package/dist/config/mcp-servers.d.ts.map +0 -1
  187. package/dist/config/mcp-servers.js +0 -158
  188. package/dist/config/mcp-servers.js.map +0 -1
  189. package/dist/config/repos.d.ts +0 -37
  190. package/dist/config/repos.d.ts.map +0 -1
  191. package/dist/config/repos.js +0 -461
  192. package/dist/config/repos.js.map +0 -1
  193. package/dist/config/settings.d.ts +0 -856
  194. package/dist/config/settings.d.ts.map +0 -1
  195. package/dist/config/settings.js +0 -668
  196. package/dist/config/settings.js.map +0 -1
  197. package/dist/config/skills.d.ts +0 -19
  198. package/dist/config/skills.d.ts.map +0 -1
  199. package/dist/config/skills.js +0 -201
  200. package/dist/config/skills.js.map +0 -1
  201. package/dist/config/workspaces.d.ts +0 -1038
  202. package/dist/config/workspaces.d.ts.map +0 -1
  203. package/dist/config/workspaces.js +0 -600
  204. package/dist/config/workspaces.js.map +0 -1
  205. package/dist/core/allocator-manager.d.ts +0 -98
  206. package/dist/core/allocator-manager.d.ts.map +0 -1
  207. package/dist/core/allocator-manager.js +0 -412
  208. package/dist/core/allocator-manager.js.map +0 -1
  209. package/dist/core/app-manager.d.ts +0 -85
  210. package/dist/core/app-manager.d.ts.map +0 -1
  211. package/dist/core/app-manager.js +0 -447
  212. package/dist/core/app-manager.js.map +0 -1
  213. package/dist/core/claude-invoker.d.ts +0 -50
  214. package/dist/core/claude-invoker.d.ts.map +0 -1
  215. package/dist/core/claude-invoker.js +0 -588
  216. package/dist/core/claude-invoker.js.map +0 -1
  217. package/dist/core/claude-session-reader.d.ts +0 -25
  218. package/dist/core/claude-session-reader.d.ts.map +0 -1
  219. package/dist/core/claude-session-reader.js +0 -184
  220. package/dist/core/claude-session-reader.js.map +0 -1
  221. package/dist/core/claude-usage-query.d.ts +0 -87
  222. package/dist/core/claude-usage-query.d.ts.map +0 -1
  223. package/dist/core/claude-usage-query.js +0 -307
  224. package/dist/core/claude-usage-query.js.map +0 -1
  225. package/dist/core/context-manager.d.ts +0 -85
  226. package/dist/core/context-manager.d.ts.map +0 -1
  227. package/dist/core/context-manager.js +0 -326
  228. package/dist/core/context-manager.js.map +0 -1
  229. package/dist/core/git-credential-helper.d.ts +0 -57
  230. package/dist/core/git-credential-helper.d.ts.map +0 -1
  231. package/dist/core/git-credential-helper.js +0 -182
  232. package/dist/core/git-credential-helper.js.map +0 -1
  233. package/dist/core/git-sandbox.d.ts +0 -140
  234. package/dist/core/git-sandbox.d.ts.map +0 -1
  235. package/dist/core/git-sandbox.js +0 -926
  236. package/dist/core/git-sandbox.js.map +0 -1
  237. package/dist/core/github-integration.d.ts +0 -95
  238. package/dist/core/github-integration.d.ts.map +0 -1
  239. package/dist/core/github-integration.js +0 -494
  240. package/dist/core/github-integration.js.map +0 -1
  241. package/dist/core/github-oauth.d.ts +0 -88
  242. package/dist/core/github-oauth.d.ts.map +0 -1
  243. package/dist/core/github-oauth.js +0 -245
  244. package/dist/core/github-oauth.js.map +0 -1
  245. package/dist/core/gitlab-integration.d.ts +0 -66
  246. package/dist/core/gitlab-integration.d.ts.map +0 -1
  247. package/dist/core/gitlab-integration.js +0 -353
  248. package/dist/core/gitlab-integration.js.map +0 -1
  249. package/dist/core/gitlab-oauth.d.ts +0 -100
  250. package/dist/core/gitlab-oauth.d.ts.map +0 -1
  251. package/dist/core/gitlab-oauth.js +0 -366
  252. package/dist/core/gitlab-oauth.js.map +0 -1
  253. package/dist/core/idea-manager.d.ts +0 -41
  254. package/dist/core/idea-manager.d.ts.map +0 -1
  255. package/dist/core/idea-manager.js +0 -674
  256. package/dist/core/idea-manager.js.map +0 -1
  257. package/dist/core/insights-extractor.d.ts +0 -68
  258. package/dist/core/insights-extractor.d.ts.map +0 -1
  259. package/dist/core/insights-extractor.js +0 -402
  260. package/dist/core/insights-extractor.js.map +0 -1
  261. package/dist/core/logger.d.ts +0 -27
  262. package/dist/core/logger.d.ts.map +0 -1
  263. package/dist/core/logger.js +0 -70
  264. package/dist/core/logger.js.map +0 -1
  265. package/dist/core/mcp-client.d.ts +0 -41
  266. package/dist/core/mcp-client.d.ts.map +0 -1
  267. package/dist/core/mcp-client.js +0 -190
  268. package/dist/core/mcp-client.js.map +0 -1
  269. package/dist/core/mcp-manager.d.ts +0 -62
  270. package/dist/core/mcp-manager.d.ts.map +0 -1
  271. package/dist/core/mcp-manager.js +0 -288
  272. package/dist/core/mcp-manager.js.map +0 -1
  273. package/dist/core/pipeline-monitor.d.ts +0 -81
  274. package/dist/core/pipeline-monitor.d.ts.map +0 -1
  275. package/dist/core/pipeline-monitor.js +0 -667
  276. package/dist/core/pipeline-monitor.js.map +0 -1
  277. package/dist/core/process-runner.d.ts +0 -27
  278. package/dist/core/process-runner.d.ts.map +0 -1
  279. package/dist/core/process-runner.js +0 -147
  280. package/dist/core/process-runner.js.map +0 -1
  281. package/dist/core/project-detector.d.ts +0 -30
  282. package/dist/core/project-detector.d.ts.map +0 -1
  283. package/dist/core/project-detector.js +0 -482
  284. package/dist/core/project-detector.js.map +0 -1
  285. package/dist/core/qr-generator.d.ts +0 -18
  286. package/dist/core/qr-generator.d.ts.map +0 -1
  287. package/dist/core/qr-generator.js +0 -61
  288. package/dist/core/qr-generator.js.map +0 -1
  289. package/dist/core/remote-tunnel-manager.d.ts +0 -59
  290. package/dist/core/remote-tunnel-manager.d.ts.map +0 -1
  291. package/dist/core/remote-tunnel-manager.js +0 -235
  292. package/dist/core/remote-tunnel-manager.js.map +0 -1
  293. package/dist/core/shared-docker-manager.d.ts +0 -41
  294. package/dist/core/shared-docker-manager.d.ts.map +0 -1
  295. package/dist/core/shared-docker-manager.js +0 -433
  296. package/dist/core/shared-docker-manager.js.map +0 -1
  297. package/dist/core/skill-executor.d.ts +0 -25
  298. package/dist/core/skill-executor.d.ts.map +0 -1
  299. package/dist/core/skill-executor.js +0 -171
  300. package/dist/core/skill-executor.js.map +0 -1
  301. package/dist/core/terminal-session.d.ts +0 -181
  302. package/dist/core/terminal-session.d.ts.map +0 -1
  303. package/dist/core/terminal-session.js +0 -3033
  304. package/dist/core/terminal-session.js.map +0 -1
  305. package/dist/core/token-encryption.d.ts +0 -35
  306. package/dist/core/token-encryption.d.ts.map +0 -1
  307. package/dist/core/token-encryption.js +0 -162
  308. package/dist/core/token-encryption.js.map +0 -1
  309. package/dist/core/token-estimator.d.ts +0 -66
  310. package/dist/core/token-estimator.d.ts.map +0 -1
  311. package/dist/core/token-estimator.js +0 -231
  312. package/dist/core/token-estimator.js.map +0 -1
  313. package/dist/core/tunnel-manager.d.ts +0 -35
  314. package/dist/core/tunnel-manager.d.ts.map +0 -1
  315. package/dist/core/tunnel-manager.js +0 -137
  316. package/dist/core/tunnel-manager.js.map +0 -1
  317. package/dist/core/update-checker.d.ts +0 -67
  318. package/dist/core/update-checker.d.ts.map +0 -1
  319. package/dist/core/update-checker.js +0 -334
  320. package/dist/core/update-checker.js.map +0 -1
  321. package/dist/core/usage-manager.d.ts +0 -57
  322. package/dist/core/usage-manager.d.ts.map +0 -1
  323. package/dist/core/usage-manager.js +0 -386
  324. package/dist/core/usage-manager.js.map +0 -1
  325. package/dist/core/ws-manager.d.ts +0 -46
  326. package/dist/core/ws-manager.d.ts.map +0 -1
  327. package/dist/core/ws-manager.js +0 -170
  328. package/dist/core/ws-manager.js.map +0 -1
  329. package/dist/index.d.ts +0 -8
  330. package/dist/index.d.ts.map +0 -1
  331. package/dist/index.js +0 -370
  332. package/dist/index.js.map +0 -1
  333. package/dist/types.d.ts +0 -1403
  334. package/dist/types.d.ts.map +0 -1
  335. package/dist/types.js +0 -201
  336. package/dist/types.js.map +0 -1
  337. package/dist/utils/encryption.d.ts +0 -30
  338. package/dist/utils/encryption.d.ts.map +0 -1
  339. package/dist/utils/encryption.js +0 -59
  340. package/dist/utils/encryption.js.map +0 -1
  341. package/dist/utils/prerequisite-checker.d.ts +0 -10
  342. package/dist/utils/prerequisite-checker.d.ts.map +0 -1
  343. package/dist/utils/prerequisite-checker.js +0 -61
  344. package/dist/utils/prerequisite-checker.js.map +0 -1
@@ -0,0 +1,72 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ build:
11
+ name: Build and Test
12
+ runs-on: ${{ matrix.os }}
13
+
14
+ strategy:
15
+ matrix:
16
+ node-version: [18.x, 20.x]
17
+ os: [ubuntu-latest, windows-latest, macos-latest]
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Use Node.js ${{ matrix.node-version }}
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: ${{ matrix.node-version }}
26
+ cache: 'npm'
27
+
28
+ - name: Install dependencies
29
+ run: npm ci
30
+
31
+ - name: Build TypeScript (main process)
32
+ run: npm run build:electron
33
+
34
+ - name: Build React app (renderer)
35
+ run: npm run build
36
+
37
+ - name: Run tests
38
+ run: npm test || echo "No tests configured yet"
39
+
40
+ package:
41
+ name: Package Electron App
42
+ runs-on: ${{ matrix.os }}
43
+
44
+ strategy:
45
+ matrix:
46
+ os: [ubuntu-latest, windows-latest, macos-latest]
47
+
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+
51
+ - name: Setup Node.js
52
+ uses: actions/setup-node@v4
53
+ with:
54
+ node-version: '20.x'
55
+ cache: 'npm'
56
+
57
+ - name: Install dependencies
58
+ run: npm ci
59
+
60
+ - name: Package app
61
+ run: npm run package
62
+
63
+ - name: Upload build artifacts
64
+ uses: actions/upload-artifact@v4
65
+ with:
66
+ name: claudedesk-${{ matrix.os }}
67
+ path: |
68
+ release/**/*.exe
69
+ release/**/*.dmg
70
+ release/**/*.AppImage
71
+ release/**/*.deb
72
+ if-no-files-found: warn
@@ -0,0 +1,112 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ build-and-release:
10
+ name: Build and Release
11
+ runs-on: ${{ matrix.os }}
12
+ permissions:
13
+ contents: write
14
+
15
+ strategy:
16
+ matrix:
17
+ include:
18
+ - os: windows-latest
19
+ platform: win
20
+ - os: macos-latest
21
+ platform: mac
22
+ - os: ubuntu-latest
23
+ platform: linux
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: Setup Node.js
29
+ uses: actions/setup-node@v4
30
+ with:
31
+ node-version: '20.x'
32
+ cache: 'npm'
33
+
34
+ - name: Install dependencies
35
+ run: npm ci
36
+
37
+ - name: Build and package Electron app
38
+ run: npm run package:${{ matrix.platform }}
39
+ env:
40
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
41
+
42
+ - name: Upload artifacts
43
+ uses: actions/upload-artifact@v4
44
+ with:
45
+ name: claudedesk-${{ matrix.platform }}
46
+ path: |
47
+ release/**/*.exe
48
+ release/**/*.dmg
49
+ release/**/*.AppImage
50
+ release/**/*.deb
51
+ release/**/*.rpm
52
+ if-no-files-found: error
53
+
54
+ publish-npm:
55
+ name: Publish to npm
56
+ runs-on: ubuntu-latest
57
+ needs: build-and-release
58
+
59
+ steps:
60
+ - uses: actions/checkout@v4
61
+
62
+ - name: Setup Node.js
63
+ uses: actions/setup-node@v4
64
+ with:
65
+ node-version: '20.x'
66
+ registry-url: 'https://registry.npmjs.org'
67
+
68
+ - name: Install dependencies
69
+ run: npm ci
70
+
71
+ - name: Build
72
+ run: |
73
+ npm run build:electron
74
+ npm run build
75
+
76
+ - name: Publish to npm
77
+ run: npm publish
78
+ env:
79
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
80
+
81
+ create-release:
82
+ name: Create GitHub Release
83
+ runs-on: ubuntu-latest
84
+ needs: build-and-release
85
+ permissions:
86
+ contents: write
87
+
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+
91
+ - name: Download all artifacts
92
+ uses: actions/download-artifact@v4
93
+ with:
94
+ path: artifacts
95
+
96
+ - name: Display artifact structure
97
+ run: ls -R artifacts/
98
+
99
+ - name: Create Release
100
+ uses: softprops/action-gh-release@v1
101
+ with:
102
+ generate_release_notes: true
103
+ draft: false
104
+ prerelease: false
105
+ files: |
106
+ artifacts/**/*.exe
107
+ artifacts/**/*.dmg
108
+ artifacts/**/*.AppImage
109
+ artifacts/**/*.deb
110
+ artifacts/**/*.rpm
111
+ env:
112
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
package/CHANGELOG.md ADDED
@@ -0,0 +1,157 @@
1
+ # Changelog
2
+
3
+ All notable changes to ClaudeDesk will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Planned
11
+ - Screenshot capture for README documentation
12
+ - Automated tests with Jest/Vitest
13
+ - Homebrew/Chocolatey packaging for easier installation
14
+ - Development dependency security updates (electron v40+, vite v7+)
15
+
16
+ ---
17
+
18
+ ## [4.1.0] - 2026-02-08
19
+
20
+ ### Added
21
+ - **Full 4-pane split view support** - Users can now split panes individually up to 4 total panes
22
+ - Added horizontal split button (⬌) to each pane header - splits pane left/right
23
+ - Added vertical split button (⬍) to each pane header - splits pane top/bottom
24
+ - Split buttons only appear when paneCount < 4
25
+ - Blue hover effect distinguishes split buttons from close button
26
+ - Enables complex layouts: 2x2 grids, 3-pane L-shapes, etc.
27
+
28
+ ### Fixed
29
+ - **Split view limitation** - Previously, the toggle split button only supported switching between 1 and 2 panes. While the backend supported 4 panes, there was no UI to access this. Now users can create 3-4 pane layouts by splitting individual panes.
30
+
31
+ ---
32
+
33
+ ## [4.0.0] - 2026-02-08
34
+
35
+ ### 🚨 BREAKING CHANGES
36
+
37
+ **Complete rewrite**: ClaudeDesk has been rebuilt from the ground up as an Electron desktop application.
38
+
39
+ **Previous versions (v3.x and below)** were a Docker-based web application. Version 4.0.0 is a **completely different product**:
40
+ - **Old (v3.8.6)**: Docker web app running on port 8787
41
+ - **New (v4.0.0)**: Electron desktop application with multi-session terminal
42
+
43
+ **Migration**: There is no migration path. This is a new application. If you need the old Docker version, install `claudedesk@3.8.6`.
44
+
45
+ ### Added - Electron Desktop App
46
+
47
+ #### Core Features
48
+ - **Multi-session management** - Run multiple Claude Code sessions in tabbed interface
49
+ - **Split-view terminal** - Up to 4 terminal panes with flexible layouts
50
+ - **Directory locking** - Sessions locked to their creation directory, prevents accidental `cd` commands
51
+ - **Session persistence** - Automatic save/restore of session state across app restarts
52
+ - **xterm.js integration** - Full-featured terminal emulation with rich text support
53
+
54
+ #### Prompt Templates
55
+ - **Command palette** (Ctrl/Cmd+Shift+P) for quick access to prompt templates
56
+ - **Built-in templates** - Common tasks like code review, debugging, documentation
57
+ - **Custom templates** - Create and edit your own reusable prompts
58
+ - **Variable substitution** - Support for `{{clipboard}}`, `{{currentDir}}`, `{{selection}}`, `{{sessionName}}`
59
+ - **Fuzzy search** - Quick template filtering in command palette
60
+ - **Template editor** - In-app WYSIWYG template management
61
+
62
+ #### Workspace Management
63
+ - **Workspace system** - Save favorite directories for quick session creation
64
+ - **Per-session working directories** - Each session maintains its own cwd
65
+ - **Default permission modes** - Set preferred Claude access level per workspace
66
+
67
+ #### API Quota & Monitoring
68
+ - **Real-time quota display** - Integration with Claude API to show usage
69
+ - **Burn rate tracking** - Monitor spending over time
70
+ - **Budget settings** - Set custom budget limits and alerts
71
+ - **Session-level tracking** - Optional per-session quota monitoring
72
+
73
+ #### Session Features
74
+ - **Named sessions** - Organize sessions with custom names
75
+ - **Session history** - Searchable conversation logs
76
+ - **Session export** - Export conversations to markdown
77
+ - **Checkpoints** - Save and restore session states
78
+ - **Ctrl+C handling** - Graceful termination with confirmation dialog
79
+ - **Permission modes** - Ask, Auto-approve, or Auto-deny per session
80
+
81
+ #### UI/UX
82
+ - **Dark theme** - Tokyo Night inspired color scheme optimized for terminal use
83
+ - **JetBrains Mono font** - Monospace font for optimal code readability
84
+ - **Clickable links** - Automatic URL detection in terminal output
85
+ - **Copy/paste support** - Standard keyboard shortcuts
86
+ - **Terminal search** - Find text in terminal output
87
+ - **Loading indicators** - Clean session initialization with pattern detection
88
+ - **Responsive layout** - Adapts to window resizing
89
+
90
+ #### Settings & Customization
91
+ - **Settings dialog** - Centralized app configuration
92
+ - **Theme customization** - Adjust colors and terminal appearance
93
+ - **Keyboard shortcuts** - Configurable hotkeys
94
+ - **Auto-update settings** - Control update preferences
95
+
96
+ #### Technical
97
+ - **Electron 28** - Modern desktop app framework
98
+ - **React 18 + TypeScript** - Type-safe, maintainable UI code
99
+ - **node-pty** - Cross-platform PTY for shell spawning
100
+ - **IPC buffering** - Optimized terminal output with 16ms batching
101
+ - **State persistence** - Automatic saving of sessions and settings
102
+ - **Context bridge** - Secure renderer-main process communication
103
+
104
+ #### Platform Support
105
+ - **Windows** - PowerShell integration with directory locking
106
+ - **macOS** - Bash/Zsh support with PROMPT_COMMAND hooks
107
+ - **Linux** - Full compatibility with major distributions
108
+
109
+ ### Security
110
+ - **Local-first architecture** - All data stored on user's machine
111
+ - **No telemetry** - Zero usage tracking or data collection
112
+ - **HTTPS-only API calls** - Secure communication with Anthropic API
113
+ - **Credential privacy** - Reads Claude CLI credentials locally, never logs or transmits them
114
+ - **Security policy** - Comprehensive SECURITY.md with vulnerability reporting guidelines
115
+
116
+ ### Documentation
117
+ - **Comprehensive README** - Installation, features, quick start, and usage guide
118
+ - **LICENSE** - MIT license with full text
119
+ - **SECURITY.md** - Security policy and vulnerability reporting
120
+ - **CHANGELOG.md** - This file!
121
+
122
+ ### Known Issues
123
+ - Development dependency vulnerabilities (electron, vite, electron-builder) - affects dev/build only, not distributed app
124
+ - Screenshot placeholders in README - to be added post-release
125
+ - No automated tests yet - planned for v1.1.0
126
+
127
+ ---
128
+
129
+ ## Version History
130
+
131
+ ### Versioning Strategy
132
+
133
+ ClaudeDesk follows [Semantic Versioning](https://semver.org/):
134
+ - **Major (x.0.0)**: Breaking changes, major features, architectural changes
135
+ - **Minor (1.x.0)**: New features, non-breaking improvements
136
+ - **Patch (1.0.x)**: Bug fixes, security patches, minor tweaks
137
+
138
+ ### Release Process
139
+
140
+ 1. Update CHANGELOG.md with changes
141
+ 2. Bump version in package.json
142
+ 3. Create git tag: `git tag -a v1.0.0 -m "Release v1.0.0"`
143
+ 4. Build packages: `npm run package`
144
+ 5. Create GitHub Release with binaries and changelog
145
+ 6. Announce on relevant communities
146
+
147
+ ---
148
+
149
+ ## Contributing
150
+
151
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on suggesting changes and additions to this changelog.
152
+
153
+ ---
154
+
155
+ [Unreleased]: https://github.com/carloluisito/claudedesk/compare/v4.1.0...HEAD
156
+ [4.1.0]: https://github.com/carloluisito/claudedesk/compare/v4.0.0...v4.1.0
157
+ [4.0.0]: https://github.com/carloluisito/claudedesk/releases/tag/v4.0.0