commandmate 0.39.0 → 0.39.1

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 (249) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +361 -363
  3. package/.next/app-path-routes-manifest.json +35 -35
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +3 -3
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_not-found/page.js +1 -1
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/agents/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/agents/versions/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/app/release-notes/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/app/update-check/route.js +1 -1
  16. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/capabilities/route.js +1 -1
  21. package/.next/server/app/api/capabilities/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/fs/browse/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/fs/recent-paths/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/hooks/agent-event/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/hooks/permission-request/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/metrics/vibe/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/push/escalation/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/relays/[relayId]/cancel/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/relays/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/remote/pair/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/repositories/validate-path/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/settings/default-agents/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/settings/default-surface-mode/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/skills/installations/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/skills/operations/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/skills/reindex/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/tasks/[taskId]/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/verification/runs/[runId]/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/verification/runs/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/worktrees/[id]/clear-composer/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/worktrees/[id]/cli-reference/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/worktrees/[id]/env/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/instances/notes/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/instances/opencode/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/worktrees/[id]/opencode/diff/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/worktrees/[id]/opencode/session/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/worktrees/[id]/opencode/share/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/worktrees/[id]/resolve-target/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/git-workflow/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/install/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/plan/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/uninstall-plan/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/worktrees/[id]/skills/[skillId]/update-plan/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/worktrees/[id]/skills/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/worktrees/[id]/tasks/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/worktrees/[id]/verify/config/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/worktrees/[id]/verify/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/cancel/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/worktrees/[id]/verify/runs/[runId]/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/worktrees/[id]/verify/runs/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/worktrees/apply-default-agents/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/login/page.js +2 -2
  148. package/.next/server/app/login/page.js.nft.json +1 -1
  149. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  150. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/more/page.js +2 -2
  152. package/.next/server/app/more/page.js.nft.json +1 -1
  153. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  154. package/.next/server/app/offline/page.js +1 -1
  155. package/.next/server/app/offline/page.js.nft.json +1 -1
  156. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  157. package/.next/server/app/page.js +1 -1
  158. package/.next/server/app/page.js.nft.json +1 -1
  159. package/.next/server/app/page_client-reference-manifest.js +1 -1
  160. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/repositories/page.js +2 -2
  162. package/.next/server/app/repositories/page.js.nft.json +1 -1
  163. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  164. package/.next/server/app/review/page.js +1 -1
  165. package/.next/server/app/review/page.js.nft.json +1 -1
  166. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  167. package/.next/server/app/sessions/page.js +1 -1
  168. package/.next/server/app/sessions/page.js.nft.json +1 -1
  169. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  170. package/.next/server/app/skills/[skillId]/page.js +2 -2
  171. package/.next/server/app/skills/[skillId]/page.js.nft.json +1 -1
  172. package/.next/server/app/skills/[skillId]/page_client-reference-manifest.js +1 -1
  173. package/.next/server/app/skills/installed/page.js +2 -2
  174. package/.next/server/app/skills/installed/page.js.nft.json +1 -1
  175. package/.next/server/app/skills/installed/page_client-reference-manifest.js +1 -1
  176. package/.next/server/app/skills/page.js +2 -2
  177. package/.next/server/app/skills/page.js.nft.json +1 -1
  178. package/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  179. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +1 -1
  180. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  181. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/worktrees/[id]/page.js +6 -6
  183. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  184. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  185. package/.next/server/app/worktrees/[id]/terminal/page.js +1 -1
  186. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  187. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  188. package/.next/server/app-paths-manifest.json +35 -35
  189. package/.next/server/chunks/{7086.js → 1674.js} +4 -4
  190. package/.next/server/chunks/3543.js +1 -1
  191. package/.next/server/chunks/3945.js +1 -1
  192. package/.next/server/chunks/4802.js +1 -1
  193. package/.next/server/chunks/5742.js +1 -0
  194. package/.next/server/chunks/{1707.js → 6092.js} +2 -2
  195. package/.next/server/chunks/6130.js +1 -1
  196. package/.next/server/chunks/8581.js +11 -11
  197. package/.next/server/chunks/8728.js +1 -1
  198. package/.next/server/middleware-build-manifest.js +1 -1
  199. package/.next/server/middleware-manifest.json +5 -5
  200. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  201. package/.next/server/pages/500.html +1 -1
  202. package/.next/server/server-reference-manifest.json +1 -1
  203. package/.next/static/chunks/1642-fb2e176aaadbd137.js +1 -0
  204. package/.next/static/chunks/{2053-ce3fe896ad45e50f.js → 2053-611dd27d42721b79.js} +1 -1
  205. package/.next/static/chunks/{2407-8fe4e4d0bab1931a.js → 2407-9ac8b6188ddbb119.js} +1 -1
  206. package/.next/static/chunks/{3922.9c1ec01fff819c88.js → 3922.8e79fc89f593280b.js} +1 -1
  207. package/.next/static/chunks/6192-a67df090838b9aad.js +1 -0
  208. package/.next/static/chunks/8165-d3b7c8a7aa776bc7.js +1 -0
  209. package/.next/static/chunks/8318-01e7d1e5ad0a15a3.js +1 -0
  210. package/.next/static/chunks/8407-9a72e6f07c5d5458.js +1 -0
  211. package/.next/static/chunks/9619-7bc0e9524f0773b5.js +1 -0
  212. package/.next/static/chunks/982-edf98d9d54c5ce9b.js +1 -0
  213. package/.next/static/chunks/app/layout-542d075e9d7cc541.js +1 -0
  214. package/.next/static/chunks/app/login/{page-269a9de3b91a45a2.js → page-38d401f553693b03.js} +1 -1
  215. package/.next/static/chunks/app/more/page-30057cf1e0762ad2.js +1 -0
  216. package/.next/static/chunks/app/{page-0c1a29ff3609bd8b.js → page-8483ba400af011f5.js} +1 -1
  217. package/.next/static/chunks/app/repositories/{page-e9ceeefacf87d470.js → page-6f7511f4ac8449e2.js} +1 -1
  218. package/.next/static/chunks/app/review/page-8ed49e2edcc7667b.js +1 -0
  219. package/.next/static/chunks/app/sessions/page-56f6a2466dd0479d.js +1 -0
  220. package/.next/static/chunks/app/skills/[skillId]/{page-6f62668eabb635f5.js → page-ab7e432b69fccb3b.js} +1 -1
  221. package/.next/static/chunks/app/skills/installed/{page-c6c4ac5e26c4e73e.js → page-e000102a01a42c98.js} +1 -1
  222. package/.next/static/chunks/app/skills/{page-bec1d4924004d4de.js → page-56b4fa11223e0cbd.js} +1 -1
  223. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-2e98f11956fe1aea.js → page-5445205c8dd80109.js} +1 -1
  224. package/.next/static/chunks/app/worktrees/[id]/page-760408096ad697b4.js +1 -0
  225. package/.next/static/chunks/{webpack-9f75198882fdaf08.js → webpack-7e5907979c182510.js} +1 -1
  226. package/.next/static/css/b4aaf81d10efdd00.css +1 -0
  227. package/.next/trace +13 -13
  228. package/package.json +3 -2
  229. package/public/sw.js +5 -5
  230. package/release-notes/0.39.1.json +29 -0
  231. package/.next/server/chunks/366.js +0 -1
  232. package/.next/server/chunks/8550.js +0 -1
  233. package/.next/static/chunks/1032-9e43405ac6bf6848.js +0 -1
  234. package/.next/static/chunks/3504-0100ab50762f591b.js +0 -1
  235. package/.next/static/chunks/4322-f54abdc5d16b7462.js +0 -1
  236. package/.next/static/chunks/4949-a13ace141c0183d6.js +0 -1
  237. package/.next/static/chunks/5529-83e705fc4134a503.js +0 -1
  238. package/.next/static/chunks/6022-d2d7bd9373ff3ae9.js +0 -1
  239. package/.next/static/chunks/8019-cc6ac1cc033fd5f0.js +0 -1
  240. package/.next/static/chunks/9619-c3c4c623b0a4f681.js +0 -1
  241. package/.next/static/chunks/998-292ebcd30f329eb1.js +0 -1
  242. package/.next/static/chunks/app/layout-f43045c9edbc4d1f.js +0 -1
  243. package/.next/static/chunks/app/more/page-3963a5e56e550442.js +0 -1
  244. package/.next/static/chunks/app/review/page-3028fe95de490236.js +0 -1
  245. package/.next/static/chunks/app/sessions/page-3f39f99b878fdda0.js +0 -1
  246. package/.next/static/chunks/app/worktrees/[id]/page-0305d80c8ebda4cb.js +0 -1
  247. package/.next/static/css/2c63c5531f77719e.css +0 -1
  248. /package/.next/static/{CqFH31RhKQbrRZXsMNosJ → 7Ge9-hsqlip_Z6bhEnVkd}/_buildManifest.js +0 -0
  249. /package/.next/static/{CqFH31RhKQbrRZXsMNosJ → 7Ge9-hsqlip_Z6bhEnVkd}/_ssgManifest.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commandmate",
3
- "version": "0.39.0",
3
+ "version": "0.39.1",
4
4
  "description": "A local control plane for agent CLIs — orchestration and visibility for Claude Code, Codex, Gemini CLI, and more across Git worktrees",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -44,7 +44,8 @@
44
44
  "build:all": "npm run build && npm run build:cli && npm run build:server",
45
45
  "prepublishOnly": "npm run build:all",
46
46
  "start": "NODE_ENV=production node dist/server/server.js",
47
- "lint": "eslint src --ext .js,.jsx,.ts,.tsx",
47
+ "lint": "eslint . --ext .js,.jsx,.ts,.tsx,.mjs,.cjs",
48
+ "lint:sh": "shellcheck -x -P scripts --severity=style --exclude=SC2086,SC2317,SC2116 $(find scripts tests/scripts .claude/lib -name '*.sh')",
48
49
  "check:tracking": "./scripts/check-commandmate-tracking.sh",
49
50
  "check:detector-freshness": "tsx scripts/check-detector-freshness.ts",
50
51
  "test": "NODE_ENV=test vitest",
package/public/sw.js CHANGED
@@ -108,7 +108,7 @@ async function offlineFallback(request) {
108
108
  // Navigation responses are intentionally NOT cached: they may contain
109
109
  // authenticated content. Only the offline fallback page is served on error.
110
110
  return await fetch(request);
111
- } catch (err) {
111
+ } catch {
112
112
  const cache = await caches.open(CACHE_NAME);
113
113
  const offline = await cache.match(OFFLINE_URL);
114
114
  return offline || Response.error();
@@ -123,7 +123,7 @@ self.addEventListener('fetch', function (event) {
123
123
  let url;
124
124
  try {
125
125
  url = new URL(request.url);
126
- } catch (err) {
126
+ } catch {
127
127
  return;
128
128
  }
129
129
 
@@ -197,7 +197,7 @@ function replaceStaleNotifications(title, options) {
197
197
  stale[i].close();
198
198
  }
199
199
  })
200
- .catch(function (err) {
200
+ .catch(function (_err) {
201
201
  // A registration that cannot enumerate its notifications still has to
202
202
  // show one. Showing the replacement below is what keeps the promise;
203
203
  // on this path the tag alone collapses the stale card on most engines.
@@ -213,7 +213,7 @@ self.addEventListener('push', function (event) {
213
213
  var payload = {};
214
214
  try {
215
215
  payload = event.data ? event.data.json() : {};
216
- } catch (err) {
216
+ } catch {
217
217
  payload = {};
218
218
  }
219
219
 
@@ -275,7 +275,7 @@ self.addEventListener('notificationclick', function (event) {
275
275
  if (new URL(client.url).pathname === targetUrl && 'focus' in client) {
276
276
  return client.focus();
277
277
  }
278
- } catch (err) {
278
+ } catch {
279
279
  // ignore malformed client URL
280
280
  }
281
281
  }
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": "0.39.1",
3
+ "date": "2026-09-20",
4
+ "highlight": {
5
+ "ja": "パソコンでは設定がダイアログで開くようになり、画面を移動せずに変更できます。モーダルが背景のクリックで閉じない問題も直しました。",
6
+ "en": "On a computer, settings now open in a dialog so you can change them without leaving the page. Clicking outside a dialog to close it also works again."
7
+ },
8
+ "added": [
9
+ {
10
+ "ja": "サイドバーの下部から設定を開けるようになりました。",
11
+ "en": "You can now open settings from the bottom of the sidebar."
12
+ },
13
+ {
14
+ "ja": "パソコンでは、設定が画面を移動せずダイアログで開くようになりました。",
15
+ "en": "On a computer, settings now open in a dialog instead of moving you to another page."
16
+ }
17
+ ],
18
+ "improved": [],
19
+ "fixed": [
20
+ {
21
+ "ja": "ダイアログの外側をクリックしても閉じないことがある問題を直しました。",
22
+ "en": "Fixed dialogs sometimes not closing when you clicked outside them."
23
+ },
24
+ {
25
+ "ja": "スマートフォンで、画面下のナビゲーションに本文がわずかに重なる問題を直しました。",
26
+ "en": "Fixed content slightly overlapping the bottom navigation bar on phones."
27
+ }
28
+ ]
29
+ }
@@ -1 +0,0 @@
1
- "use strict";exports.id=366,exports.ids=[366],exports.modules={8849:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(23339).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},60366:(a,b,c)=>{c.d(b,{uN:()=>y,he:()=>p,$8:()=>t});var d=c(21124),e=c(38301),f=c(20481),g=c(71613),h=c(70584),i=c(24417),j=c(47089),k=c(8849),l=c(15737),m=c(17252),n=c(89907);function o(a){return!!a&&"object"==typeof a&&Array.isArray(a.defaultSelectedAgents)&&a.defaultSelectedAgents.length>0&&Array.isArray(a.available)&&a.available.length>0&&"number"==typeof a.minAgents&&"number"==typeof a.maxAgents}function p(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[p,q]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)("idle"),[v,w]=(0,e.useState)(null);(0,e.useCallback)(async()=>{try{let a=await fetch(`${n.zk}?include=installed`);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!o(b))throw Error("unexpected body");c(b),q(b.defaultSelectedAgents),(0,n.IK)(b.defaultSelectedAgents)}catch{w(a("settings.defaultAgents.loadError"))}finally{s(!1)}},[a]);let x=(0,e.useCallback)(a=>{q(a),u("idle"),w(null)},[]),y=(0,e.useCallback)((a,b)=>{let c=a+b;if(c<0||c>=p.length)return;let d=[...p];[d[a],d[c]]=[d[c],d[a]],x(d)},[p,x]),z=(0,e.useCallback)(async b=>{u("saving"),w(null);try{let d=await fetch(n.zk,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({agents:b})}),e=await d.json().catch(()=>null);if(!d.ok||!o(e)){u("error"),w(e?.error??a("settings.defaultAgents.saveError"));return}c(a=>({...e,installed:a?.installed})),q(e.defaultSelectedAgents),(0,n.IK)(e.defaultSelectedAgents),u("saved")}catch{u("error"),w(a("settings.defaultAgents.saveError"))}},[a]);if(r)return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})});if(!b)return(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-agents-load-error",children:v??a("settings.defaultAgents.loadError")})});let A=b.installed??[],B=b.available.filter(a=>!p.includes(a)),C=p.length<b.minAgents,D=p.length>b.maxAgents,E=!C&&!D&&"saving"!==t,F=b=>A.includes(b)?(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded bg-success-subtle px-1.5 py-0.5 text-xs text-success-foreground","data-testid":`default-agents-installed-${b}`,children:[(0,d.jsx)(g.A,{className:"h-3 w-3","aria-hidden":"true"}),a("settings.defaultAgents.installed")]}):(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:a("settings.defaultAgents.notInstalled")});return(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-agents-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultAgents.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultAgents.appliesToNew")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-selected",children:p.map((c,e)=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-agents-row-${c}`,children:[(0,d.jsx)("span",{className:"w-6 text-xs text-muted-foreground",children:e+1}),(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),0===e&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":"default-agents-primary-badge",children:a("settings.defaultAgents.primary")}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,-1),disabled:0===e,"aria-label":a("settings.defaultAgents.moveUp"),"data-testid":`default-agents-up-${c}`,children:(0,d.jsx)(h.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>y(e,1),disabled:e===p.length-1,"aria-label":a("settings.defaultAgents.moveDown"),"data-testid":`default-agents-down-${c}`,children:(0,d.jsx)(i.A,{className:"h-4 w-4","aria-hidden":"true"})}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x(p.filter(a=>a!==c)),disabled:p.length<=b.minAgents,"aria-label":a("settings.defaultAgents.remove"),"data-testid":`default-agents-remove-${c}`,children:(0,d.jsx)(j.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))}),B.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"mb-2 text-xs text-muted-foreground",children:a("settings.defaultAgents.addLabel")}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"default-agents-available",children:B.map(c=>(0,d.jsxs)("li",{className:"flex items-center gap-2 rounded-md border border-border px-3 py-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(0,m.oo)(c)}),(0,d.jsx)("span",{className:"ml-auto",children:F(c)}),(0,d.jsx)("button",{type:"button",className:"rounded p-1 text-muted-foreground hover:bg-muted disabled:opacity-40",onClick:()=>x([...p,c]),disabled:p.length>=b.maxAgents,"aria-label":a("settings.defaultAgents.add"),"data-testid":`default-agents-add-${c}`,children:(0,d.jsx)(k.A,{className:"h-4 w-4","aria-hidden":"true"})})]},c))})]}),(C||D)&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-range-error",children:a("settings.defaultAgents.range",{min:b.minAgents,max:b.maxAgents})}),v&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-agents-error",children:v}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(l.$n,{size:"sm",onClick:()=>void z(p),disabled:!E,"data-testid":"default-agents-save",children:"saving"===t?a("settings.defaultAgents.saving"):a("settings.defaultAgents.save")}),(0,d.jsx)(l.$n,{size:"sm",variant:"ghost",onClick:()=>void z(null),disabled:!b.configured||"saving"===t,"data-testid":"default-agents-reset",children:a("settings.defaultAgents.reset")}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":"default-agents-state",children:"saved"===t?a("settings.defaultAgents.saved"):b.configured?a("settings.defaultAgents.configured"):a("settings.defaultAgents.usingBuiltIn")})]}),b.configured&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-agents-builtin",children:a("settings.defaultAgents.builtIn",{agents:b.constantDefault.map(m.oo).join(", ")})})]})})}var q=c(70911),r=c(61916);function s(a){return!!a&&"object"==typeof a&&(0,r.jg)(a.defaultSurfaceMode)&&(0,r.jg)(a.constantDefault)&&Array.isArray(a.available)&&a.available.length>0&&a.available.every(r.jg)}function t(){let a=(0,f.c)("common"),[b,c]=(0,e.useState)(null),[g,h]=(0,e.useState)(!0),[i,j]=(0,e.useState)("idle"),[k,m]=(0,e.useState)(null),n=(0,e.useCallback)(async()=>{try{let a=await fetch(q.wp);if(!a.ok)throw Error(String(a.status));let b=await a.json();if(!s(b))throw Error("unexpected body");c(b),(0,q.B1)(b.defaultSurfaceMode)}catch{m({kind:"load"})}finally{h(!1)}},[]),o=(0,e.useCallback)(async a=>{j("saving"),m(null),c(b=>b?{...b,defaultSurfaceMode:a}:b);try{let b=await fetch(q.wp,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({mode:a})}),d=await b.json().catch(()=>null);if(!b.ok||!s(d)){j("error"),m({kind:"save",detail:d?.error}),n();return}c(d),(0,q.B1)(d.defaultSurfaceMode),j("saved")}catch{j("error"),m({kind:"save"}),n()}},[n]),p=k?k.detail??a("load"===k.kind?"settings.defaultSurfaceMode.loadError":"settings.defaultSurfaceMode.saveError"):null;return g?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),a("loadingPage")]})}):b?(0,d.jsx)(l.Zp,{children:(0,d.jsxs)("div",{className:"space-y-4","data-testid":"default-surface-mode-settings",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:a("settings.defaultSurfaceMode.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.description")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:a("settings.defaultSurfaceMode.appliesToNew")})]}),(0,d.jsx)("div",{role:"radiogroup","aria-label":a("settings.defaultSurfaceMode.title"),className:"space-y-2","data-selected":b.defaultSurfaceMode,children:b.available.map(c=>(0,d.jsxs)("label",{className:"flex cursor-pointer items-start gap-2 rounded-md border border-border bg-surface px-3 py-2","data-testid":`default-surface-mode-option-${c}`,children:[(0,d.jsx)("input",{type:"radio",name:"default-surface-mode",value:c,className:"mt-0.5",checked:b.defaultSurfaceMode===c,disabled:"saving"===i,onChange:()=>void o(c),"data-testid":`default-surface-mode-radio-${c}`}),(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"block text-sm text-foreground",children:a(`settings.defaultSurfaceMode.mode.${c}`)}),(0,d.jsx)("span",{className:"block text-xs text-muted-foreground",children:a(`settings.defaultSurfaceMode.hint.${c}`)})]})]},c))}),p&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"default-surface-mode-error",children:p}),(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"default-surface-mode-state",children:"saving"===i?a("settings.defaultSurfaceMode.saving"):"saved"===i?a("settings.defaultSurfaceMode.saved"):b.configured?a("settings.defaultSurfaceMode.configured"):a("settings.defaultSurfaceMode.usingBuiltIn")})]})}):(0,d.jsx)(l.Zp,{children:(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"default-surface-mode-load-error",children:p??a("settings.defaultSurfaceMode.loadError")})})}var u=c(2535),v=c(16945),w=c(9212);function x(a){let b=a.trim();if(!b)return null;try{let a=JSON.parse(b);if(!a||"object"!=typeof a)return null;let c=a.type;if("plan"!==c&&"output"!==c&&"done"!==c)return null;return a}catch{return null}}function y({worktreeId:a,instances:b,variant:c="card"}){let g=(0,f.c)("common"),{versions:h,isLoading:i,loadError:j,run:k,isUpdating:n,update:o}=function(a=!0){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(a),[i,j]=(0,e.useState)(null),[k,l]=(0,e.useState)(!1),m=(0,e.useRef)(!0),n=(0,e.useCallback)(async(b=!1)=>{if(a){h(!0);try{let a=await fetch(`/api/agents/versions${b?"?refresh=1":""}`);if(!a.ok)throw Error(String(a.status));let d=await a.json();if(!(d&&"object"==typeof d&&Array.isArray(d.tools)&&Array.isArray(d.updatable)))throw Error("unexpected body");if(!m.current)return;c(d.tools),f(!1)}catch{if(!m.current)return;f(!0)}finally{m.current&&h(!1)}}},[a]),o=(0,e.useCallback)(async a=>{if(k)return;l(!0),j({tool:a,command:null,output:"",ok:null,previousVersion:null,installed:null,error:null});let b=a=>{m.current&&j(b=>b?{...b,ok:!1,error:a}:b)};try{let c=await fetch("/api/agents/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:a})});if(!c.ok||!c.body){let a=await c.json().catch(()=>null);b(a?.error??`Request failed (${c.status})`);return}let d=c.body.getReader(),e=new TextDecoder,f="",g=a=>{m.current&&j(b=>b?"plan"===a.type?{...b,command:a.command}:"output"===a.type?{...b,output:b.output+a.text}:{...b,ok:a.ok,previousVersion:a.previousVersion,installed:a.installed,error:a.error??null}:b)};for(;;){let{done:a,value:b}=await d.read();if(a)break;let c=(f+=e.decode(b,{stream:!0})).split("\n");for(let a of(f=c.pop()??"",c)){let b=x(a);b&&g(b)}}let h=x(f);h&&g(h)}catch(a){b(a instanceof Error?a.message:String(a))}finally{m.current&&l(!1),await n(!0)}},[k,n]);return{versions:b,isLoading:g,loadError:d,run:i,isUpdating:k,reload:n,update:o}}(!0),[p,q]=(0,e.useState)(0),r=function(a,b,c){let[d,f]=(0,e.useState)({});return d}(0,0,0),[s,t]=(0,e.useState)({}),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null),B=k?.ok===!0,C=(0,e.useCallback)(a=>(b??[]).filter(b=>b.cliTool===a&&r[b.id]),[b,r]),D=(0,e.useCallback)(async b=>{if(a){z(null);try{let c=new URLSearchParams({cliTool:b.cliTool,instance:b.id}),d=await fetch(`/api/worktrees/${a}/kill-session?${c.toString()}`,{method:"POST"});if(!d.ok&&404!==d.status)throw Error(String(d.status));t(a=>({...a,[b.id]:!0})),q(a=>a+1)}catch{z(g("agentUpdates.restartError"))}}},[a,g]),E=i&&!h?(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[(0,d.jsx)(l.y$,{size:"sm"}),g("loadingPage")]}):j&&!h?(0,d.jsx)("div",{className:"text-sm text-danger-foreground","data-testid":"agent-updates-load-error",children:g("agentUpdates.loadError")}):(0,d.jsxs)("div",{className:"space-y-3","data-testid":"agent-updates",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{className:"text-sm font-medium text-foreground",children:g("agentUpdates.title")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:g("agentUpdates.description")})]}),(0,d.jsx)("ul",{className:"space-y-2","data-testid":"agent-updates-rows",children:(h??[]).map(b=>{var c;let e=C(b.tool),f=b.updatable&&null!==b.installed;return(0,d.jsxs)("li",{className:"rounded-md border border-border bg-surface px-3 py-2","data-testid":`agent-updates-row-${b.tool}`,children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("span",{className:"text-sm text-foreground",children:(c=b.tool,(0,m.oo)(c)||c)}),(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-installed-${b.tool}`,children:b.installed?g("agentUpdates.installed",{version:b.installed}):g("agentUpdates.notInstalled")}),b.updateAvailable&&(0,d.jsx)("span",{className:"rounded bg-info-subtle px-1.5 py-0.5 text-xs text-info-foreground","data-testid":`agent-updates-available-${b.tool}`,children:g("agentUpdates.available",{version:b.latestVersion??""})}),b.dismissedInCodex&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground","data-testid":`agent-updates-dismissed-${b.tool}`,children:g("agentUpdates.dismissed")}),f&&(0,d.jsxs)(l.$n,{size:"sm",className:"ml-auto",disabled:n,onClick:()=>void o(b.tool),"data-testid":`agent-updates-update-${b.tool}`,children:[(0,d.jsx)(u.A,{className:"h-4 w-4","aria-hidden":"true"}),n&&k?.tool===b.tool?g("agentUpdates.updating"):g("agentUpdates.update")]})]}),f&&e.length>0&&(0,d.jsxs)("div",{className:"mt-2 flex items-start gap-1 text-xs text-warning-foreground","data-testid":`agent-updates-restart-warning-${b.tool}`,children:[(0,d.jsx)(v.A,{className:"mt-0.5 h-3 w-3 shrink-0","aria-hidden":"true"}),(0,d.jsx)("span",{children:g("agentUpdates.restartWarning",{sessions:e.map(a=>a.alias).join(", ")})})]}),f&&0===e.length&&void 0===a&&(0,d.jsx)("p",{className:"mt-2 text-xs text-muted-foreground","data-testid":`agent-updates-restart-notice-${b.tool}`,children:g("agentUpdates.restartNotice")}),B&&k?.tool===b.tool&&e.map(a=>(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-2",children:[(0,d.jsxs)(l.$n,{size:"sm",variant:"ghost",disabled:s[a.id],onClick:()=>void D(a),"data-testid":`agent-updates-restart-${a.id}`,children:[(0,d.jsx)(w.A,{className:"h-4 w-4","aria-hidden":"true"}),g("agentUpdates.restart",{alias:a.alias})]}),s[a.id]&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:g("agentUpdates.restarted")})]},a.id))]},b.tool)})}),k&&(0,d.jsxs)("div",{className:"space-y-2","data-testid":"agent-updates-run",children:[k.command&&(0,d.jsx)("div",{className:"text-xs text-muted-foreground","data-testid":"agent-updates-command",children:g("agentUpdates.running",{command:k.command})}),k.output&&(0,d.jsx)("pre",{ref:A,"data-testid":"agent-updates-output",className:"max-h-48 overflow-auto whitespace-pre-wrap rounded-md bg-terminal-surface p-2 text-xs text-terminal-foreground",children:k.output}),!0===k.ok&&(0,d.jsx)("div",{className:"text-xs text-success-foreground","data-testid":"agent-updates-success",children:g("agentUpdates.succeeded",{from:k.previousVersion??"?",to:k.installed??"?"})}),!1===k.ok&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-failure",children:g("agentUpdates.failed",{error:k.error??""})})]}),y&&(0,d.jsx)("div",{className:"text-xs text-danger-foreground","data-testid":"agent-updates-restart-error",children:y})]});return"plain"===c?E:(0,d.jsx)(l.Zp,{children:E})}},70911:(a,b,c)=>{c.d(b,{$2:()=>g,B1:()=>n,If:()=>i,NP:()=>h,TR:()=>j,wp:()=>f});var d=c(61916);let e="commandmate.worktree.surfaceMode-",f="/api/settings/default-surface-mode";function g(a,b){return`${e}${a}-split-${b}`}function h(a){return`${e}${a}-mobile`}function i(a,b){}function j(a,b){let c=void 0===b?null:b;return c?(i(a,c),c):m()}let k=d.wf,l=new Set;function m(){return k}function n(a){if(!(0,d.jg)(a))return!1;let b=m()!==a;if(k=a,i("commandmate.settings.defaultSurfaceMode",a),b)for(let a of l)a();return b}}};