synabun 2.0.7 → 2.0.10

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 (565) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +1 -1
  3. package/THIRD-PARTY-LICENSES.md +46 -4
  4. package/hooks/claude-code/post-plan.mjs +6 -30
  5. package/hooks/claude-code/session-start.mjs +1 -4
  6. package/hooks/claude-code/shared.mjs +106 -72
  7. package/launcher.mjs +9 -3
  8. package/lib/package-processes.js +670 -0
  9. package/lib/runtime-dependencies.js +225 -0
  10. package/lib/start-launcher.js +6 -1
  11. package/mcp-server/dist/services/browser-bench.d.ts +1 -1
  12. package/mcp-server/dist/services/browser-bench.d.ts.map +1 -1
  13. package/mcp-server/dist/services/browser-bench.js +1 -1
  14. package/mcp-server/dist/services/browser-bench.js.map +1 -1
  15. package/mcp-server/dist/services/categories.d.ts +35 -2
  16. package/mcp-server/dist/services/categories.d.ts.map +1 -1
  17. package/mcp-server/dist/services/categories.js +77 -33
  18. package/mcp-server/dist/services/categories.js.map +1 -1
  19. package/mcp-server/dist/services/desktop-bench.d.ts +7 -7
  20. package/mcp-server/dist/services/desktop-bench.d.ts.map +1 -1
  21. package/mcp-server/dist/services/desktop-bench.js +1 -1
  22. package/mcp-server/dist/services/desktop-bench.js.map +1 -1
  23. package/mcp-server/dist/tools/agents.d.ts +1 -1
  24. package/mcp-server/dist/tools/agents.d.ts.map +1 -1
  25. package/mcp-server/dist/tools/agents.js +1 -1
  26. package/mcp-server/dist/tools/agents.js.map +1 -1
  27. package/mcp-server/dist/tools/bluesky.js +1 -1
  28. package/mcp-server/dist/tools/bluesky.js.map +1 -1
  29. package/mcp-server/dist/tools/browser-advanced.d.ts +1 -1
  30. package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -1
  31. package/mcp-server/dist/tools/browser-advanced.js +1 -1
  32. package/mcp-server/dist/tools/browser-advanced.js.map +1 -1
  33. package/mcp-server/dist/tools/browser-batch.d.ts +1 -1
  34. package/mcp-server/dist/tools/browser-batch.d.ts.map +1 -1
  35. package/mcp-server/dist/tools/browser-batch.js +1 -1
  36. package/mcp-server/dist/tools/browser-batch.js.map +1 -1
  37. package/mcp-server/dist/tools/browser-cheatsheet.d.ts +1 -1
  38. package/mcp-server/dist/tools/browser-cheatsheet.d.ts.map +1 -1
  39. package/mcp-server/dist/tools/browser-cheatsheet.js +1 -1
  40. package/mcp-server/dist/tools/browser-cheatsheet.js.map +1 -1
  41. package/mcp-server/dist/tools/browser-interact.d.ts +1 -1
  42. package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -1
  43. package/mcp-server/dist/tools/browser-interact.js +1 -1
  44. package/mcp-server/dist/tools/browser-interact.js.map +1 -1
  45. package/mcp-server/dist/tools/browser-navigate.d.ts +1 -1
  46. package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -1
  47. package/mcp-server/dist/tools/browser-navigate.js +1 -1
  48. package/mcp-server/dist/tools/browser-navigate.js.map +1 -1
  49. package/mcp-server/dist/tools/browser-observe.d.ts +1 -1
  50. package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -1
  51. package/mcp-server/dist/tools/browser-observe.js +1 -1
  52. package/mcp-server/dist/tools/browser-observe.js.map +1 -1
  53. package/mcp-server/dist/tools/card-tools.d.ts +1 -1
  54. package/mcp-server/dist/tools/card-tools.d.ts.map +1 -1
  55. package/mcp-server/dist/tools/card-tools.js +1 -1
  56. package/mcp-server/dist/tools/card-tools.js.map +1 -1
  57. package/mcp-server/dist/tools/category.d.ts +1 -1
  58. package/mcp-server/dist/tools/category.d.ts.map +1 -1
  59. package/mcp-server/dist/tools/category.js +5 -1
  60. package/mcp-server/dist/tools/category.js.map +1 -1
  61. package/mcp-server/dist/tools/choice.d.ts +1 -1
  62. package/mcp-server/dist/tools/choice.d.ts.map +1 -1
  63. package/mcp-server/dist/tools/choice.js +1 -1
  64. package/mcp-server/dist/tools/choice.js.map +1 -1
  65. package/mcp-server/dist/tools/computer.d.ts +1 -1
  66. package/mcp-server/dist/tools/computer.d.ts.map +1 -1
  67. package/mcp-server/dist/tools/computer.js +1 -1
  68. package/mcp-server/dist/tools/computer.js.map +1 -1
  69. package/mcp-server/dist/tools/discord-channel.d.ts +1 -1
  70. package/mcp-server/dist/tools/discord-channel.d.ts.map +1 -1
  71. package/mcp-server/dist/tools/discord-channel.js +1 -1
  72. package/mcp-server/dist/tools/discord-channel.js.map +1 -1
  73. package/mcp-server/dist/tools/discord-guild.d.ts +1 -1
  74. package/mcp-server/dist/tools/discord-guild.d.ts.map +1 -1
  75. package/mcp-server/dist/tools/discord-guild.js +1 -1
  76. package/mcp-server/dist/tools/discord-guild.js.map +1 -1
  77. package/mcp-server/dist/tools/discord-member.d.ts +1 -1
  78. package/mcp-server/dist/tools/discord-member.d.ts.map +1 -1
  79. package/mcp-server/dist/tools/discord-member.js +1 -1
  80. package/mcp-server/dist/tools/discord-member.js.map +1 -1
  81. package/mcp-server/dist/tools/discord-message.d.ts +1 -1
  82. package/mcp-server/dist/tools/discord-message.d.ts.map +1 -1
  83. package/mcp-server/dist/tools/discord-message.js +1 -1
  84. package/mcp-server/dist/tools/discord-message.js.map +1 -1
  85. package/mcp-server/dist/tools/discord-onboarding.d.ts +1 -1
  86. package/mcp-server/dist/tools/discord-onboarding.d.ts.map +1 -1
  87. package/mcp-server/dist/tools/discord-onboarding.js +1 -1
  88. package/mcp-server/dist/tools/discord-onboarding.js.map +1 -1
  89. package/mcp-server/dist/tools/discord-role.d.ts +1 -1
  90. package/mcp-server/dist/tools/discord-role.d.ts.map +1 -1
  91. package/mcp-server/dist/tools/discord-role.js +1 -1
  92. package/mcp-server/dist/tools/discord-role.js.map +1 -1
  93. package/mcp-server/dist/tools/discord-thread.d.ts +1 -1
  94. package/mcp-server/dist/tools/discord-thread.d.ts.map +1 -1
  95. package/mcp-server/dist/tools/discord-thread.js +1 -1
  96. package/mcp-server/dist/tools/discord-thread.js.map +1 -1
  97. package/mcp-server/dist/tools/discord-webhook.d.ts +1 -1
  98. package/mcp-server/dist/tools/discord-webhook.d.ts.map +1 -1
  99. package/mcp-server/dist/tools/discord-webhook.js +1 -1
  100. package/mcp-server/dist/tools/discord-webhook.js.map +1 -1
  101. package/mcp-server/dist/tools/fb-groups.d.ts +1 -1
  102. package/mcp-server/dist/tools/fb-groups.d.ts.map +1 -1
  103. package/mcp-server/dist/tools/fb-groups.js +1 -1
  104. package/mcp-server/dist/tools/fb-groups.js.map +1 -1
  105. package/mcp-server/dist/tools/forget.d.ts +1 -1
  106. package/mcp-server/dist/tools/forget.d.ts.map +1 -1
  107. package/mcp-server/dist/tools/forget.js +1 -1
  108. package/mcp-server/dist/tools/forget.js.map +1 -1
  109. package/mcp-server/dist/tools/git-tools.d.ts +1 -1
  110. package/mcp-server/dist/tools/git-tools.d.ts.map +1 -1
  111. package/mcp-server/dist/tools/git-tools.js +1 -1
  112. package/mcp-server/dist/tools/git-tools.js.map +1 -1
  113. package/mcp-server/dist/tools/gsc/experience.d.ts +1 -1
  114. package/mcp-server/dist/tools/gsc/experience.d.ts.map +1 -1
  115. package/mcp-server/dist/tools/gsc/experience.js +1 -1
  116. package/mcp-server/dist/tools/gsc/experience.js.map +1 -1
  117. package/mcp-server/dist/tools/gsc/indexing.d.ts +1 -1
  118. package/mcp-server/dist/tools/gsc/indexing.d.ts.map +1 -1
  119. package/mcp-server/dist/tools/gsc/indexing.js +1 -1
  120. package/mcp-server/dist/tools/gsc/indexing.js.map +1 -1
  121. package/mcp-server/dist/tools/gsc/inspect.d.ts +1 -1
  122. package/mcp-server/dist/tools/gsc/inspect.d.ts.map +1 -1
  123. package/mcp-server/dist/tools/gsc/inspect.js +1 -1
  124. package/mcp-server/dist/tools/gsc/inspect.js.map +1 -1
  125. package/mcp-server/dist/tools/gsc/navigate.d.ts +1 -1
  126. package/mcp-server/dist/tools/gsc/navigate.d.ts.map +1 -1
  127. package/mcp-server/dist/tools/gsc/navigate.js +1 -1
  128. package/mcp-server/dist/tools/gsc/navigate.js.map +1 -1
  129. package/mcp-server/dist/tools/gsc/performance.d.ts +1 -1
  130. package/mcp-server/dist/tools/gsc/performance.d.ts.map +1 -1
  131. package/mcp-server/dist/tools/gsc/performance.js +1 -1
  132. package/mcp-server/dist/tools/gsc/performance.js.map +1 -1
  133. package/mcp-server/dist/tools/gsc/settings.d.ts +1 -1
  134. package/mcp-server/dist/tools/gsc/settings.d.ts.map +1 -1
  135. package/mcp-server/dist/tools/gsc/settings.js +1 -1
  136. package/mcp-server/dist/tools/gsc/settings.js.map +1 -1
  137. package/mcp-server/dist/tools/image-tools.d.ts +1 -1
  138. package/mcp-server/dist/tools/image-tools.d.ts.map +1 -1
  139. package/mcp-server/dist/tools/image-tools.js +1 -1
  140. package/mcp-server/dist/tools/image-tools.js.map +1 -1
  141. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +1 -1
  142. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -1
  143. package/mcp-server/dist/tools/leonardo-browser-tools.js +1 -1
  144. package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -1
  145. package/mcp-server/dist/tools/loop.d.ts +1 -1
  146. package/mcp-server/dist/tools/loop.d.ts.map +1 -1
  147. package/mcp-server/dist/tools/loop.js +1 -1
  148. package/mcp-server/dist/tools/loop.js.map +1 -1
  149. package/mcp-server/dist/tools/memories.d.ts +1 -1
  150. package/mcp-server/dist/tools/memories.d.ts.map +1 -1
  151. package/mcp-server/dist/tools/memories.js +1 -1
  152. package/mcp-server/dist/tools/memories.js.map +1 -1
  153. package/mcp-server/dist/tools/morelogin.d.ts +1 -1
  154. package/mcp-server/dist/tools/morelogin.d.ts.map +1 -1
  155. package/mcp-server/dist/tools/morelogin.js +1 -1
  156. package/mcp-server/dist/tools/morelogin.js.map +1 -1
  157. package/mcp-server/dist/tools/profile.d.ts +1 -1
  158. package/mcp-server/dist/tools/profile.d.ts.map +1 -1
  159. package/mcp-server/dist/tools/profile.js +1 -1
  160. package/mcp-server/dist/tools/profile.js.map +1 -1
  161. package/mcp-server/dist/tools/recall.d.ts +1 -1
  162. package/mcp-server/dist/tools/recall.d.ts.map +1 -1
  163. package/mcp-server/dist/tools/recall.js +1 -1
  164. package/mcp-server/dist/tools/recall.js.map +1 -1
  165. package/mcp-server/dist/tools/reflect.d.ts +1 -1
  166. package/mcp-server/dist/tools/reflect.d.ts.map +1 -1
  167. package/mcp-server/dist/tools/reflect.js +1 -1
  168. package/mcp-server/dist/tools/reflect.js.map +1 -1
  169. package/mcp-server/dist/tools/remember.d.ts +1 -1
  170. package/mcp-server/dist/tools/remember.d.ts.map +1 -1
  171. package/mcp-server/dist/tools/remember.js +13 -11
  172. package/mcp-server/dist/tools/remember.js.map +1 -1
  173. package/mcp-server/dist/tools/restore.d.ts +1 -1
  174. package/mcp-server/dist/tools/restore.d.ts.map +1 -1
  175. package/mcp-server/dist/tools/restore.js +1 -1
  176. package/mcp-server/dist/tools/restore.js.map +1 -1
  177. package/mcp-server/dist/tools/style-guide-tools.d.ts +1 -1
  178. package/mcp-server/dist/tools/style-guide-tools.d.ts.map +1 -1
  179. package/mcp-server/dist/tools/style-guide-tools.js +1 -1
  180. package/mcp-server/dist/tools/style-guide-tools.js.map +1 -1
  181. package/mcp-server/dist/tools/sync.d.ts +1 -1
  182. package/mcp-server/dist/tools/sync.d.ts.map +1 -1
  183. package/mcp-server/dist/tools/sync.js +1 -1
  184. package/mcp-server/dist/tools/sync.js.map +1 -1
  185. package/mcp-server/dist/tools/tictactoe-tools.d.ts +1 -1
  186. package/mcp-server/dist/tools/tictactoe-tools.d.ts.map +1 -1
  187. package/mcp-server/dist/tools/tictactoe-tools.js +1 -1
  188. package/mcp-server/dist/tools/tictactoe-tools.js.map +1 -1
  189. package/mcp-server/dist/tools/utils.d.ts +1 -1
  190. package/mcp-server/dist/tools/utils.d.ts.map +1 -1
  191. package/mcp-server/dist/tools/utils.js +1 -1
  192. package/mcp-server/dist/tools/utils.js.map +1 -1
  193. package/mcp-server/dist/tools/whatsapp-send-file.d.ts +1 -1
  194. package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -1
  195. package/mcp-server/dist/tools/whatsapp-send-file.js +1 -1
  196. package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -1
  197. package/mcp-server/dist/tools/whiteboard-tools.d.ts +3 -3
  198. package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
  199. package/mcp-server/dist/tools/whiteboard-tools.js +1 -1
  200. package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
  201. package/mcp-server/dist/tools/youtube/analytics.d.ts +1 -1
  202. package/mcp-server/dist/tools/youtube/analytics.d.ts.map +1 -1
  203. package/mcp-server/dist/tools/youtube/analytics.js +1 -1
  204. package/mcp-server/dist/tools/youtube/analytics.js.map +1 -1
  205. package/mcp-server/dist/tools/youtube/download.d.ts +1 -1
  206. package/mcp-server/dist/tools/youtube/download.d.ts.map +1 -1
  207. package/mcp-server/dist/tools/youtube/download.js +1 -1
  208. package/mcp-server/dist/tools/youtube/download.js.map +1 -1
  209. package/mcp-server/dist/tools/youtube/media.d.ts +1 -1
  210. package/mcp-server/dist/tools/youtube/media.d.ts.map +1 -1
  211. package/mcp-server/dist/tools/youtube/media.js +1 -1
  212. package/mcp-server/dist/tools/youtube/media.js.map +1 -1
  213. package/mcp-server/dist/tools/youtube/metadata.d.ts +1 -1
  214. package/mcp-server/dist/tools/youtube/metadata.d.ts.map +1 -1
  215. package/mcp-server/dist/tools/youtube/metadata.js +1 -1
  216. package/mcp-server/dist/tools/youtube/metadata.js.map +1 -1
  217. package/mcp-server/dist/tools/youtube/navigate.d.ts +1 -1
  218. package/mcp-server/dist/tools/youtube/navigate.d.ts.map +1 -1
  219. package/mcp-server/dist/tools/youtube/navigate.js +1 -1
  220. package/mcp-server/dist/tools/youtube/navigate.js.map +1 -1
  221. package/mcp-server/dist/tools/youtube/playlist.d.ts +1 -1
  222. package/mcp-server/dist/tools/youtube/playlist.d.ts.map +1 -1
  223. package/mcp-server/dist/tools/youtube/playlist.js +1 -1
  224. package/mcp-server/dist/tools/youtube/playlist.js.map +1 -1
  225. package/mcp-server/dist/tools/youtube/schedule.d.ts +1 -1
  226. package/mcp-server/dist/tools/youtube/schedule.d.ts.map +1 -1
  227. package/mcp-server/dist/tools/youtube/schedule.js +1 -1
  228. package/mcp-server/dist/tools/youtube/schedule.js.map +1 -1
  229. package/mcp-server/dist/tools/youtube/source.d.ts +1 -1
  230. package/mcp-server/dist/tools/youtube/source.d.ts.map +1 -1
  231. package/mcp-server/dist/tools/youtube/source.js +1 -1
  232. package/mcp-server/dist/tools/youtube/source.js.map +1 -1
  233. package/mcp-server/dist/tools/youtube/upload.d.ts +1 -1
  234. package/mcp-server/dist/tools/youtube/upload.d.ts.map +1 -1
  235. package/mcp-server/dist/tools/youtube/upload.js +4 -9
  236. package/mcp-server/dist/tools/youtube/upload.js.map +1 -1
  237. package/mcp-server/dist/tui.js +16 -4
  238. package/mcp-server/dist/tui.js.map +1 -1
  239. package/mcp-server/package-lock.json +3 -3
  240. package/mcp-server/package.json +3 -3
  241. package/mcp-server/src/services/browser-bench.ts +1 -1
  242. package/mcp-server/src/services/categories.ts +77 -32
  243. package/mcp-server/src/services/desktop-bench.ts +1 -1
  244. package/mcp-server/src/tools/agents.ts +1 -1
  245. package/mcp-server/src/tools/bluesky.ts +1 -1
  246. package/mcp-server/src/tools/browser-advanced.ts +1 -1
  247. package/mcp-server/src/tools/browser-batch.ts +1 -1
  248. package/mcp-server/src/tools/browser-cheatsheet.ts +1 -1
  249. package/mcp-server/src/tools/browser-interact.ts +1 -1
  250. package/mcp-server/src/tools/browser-navigate.ts +1 -1
  251. package/mcp-server/src/tools/browser-observe.ts +1 -1
  252. package/mcp-server/src/tools/card-tools.ts +1 -1
  253. package/mcp-server/src/tools/category.ts +6 -1
  254. package/mcp-server/src/tools/choice.ts +1 -1
  255. package/mcp-server/src/tools/computer.ts +1 -1
  256. package/mcp-server/src/tools/discord-channel.ts +1 -1
  257. package/mcp-server/src/tools/discord-guild.ts +1 -1
  258. package/mcp-server/src/tools/discord-member.ts +1 -1
  259. package/mcp-server/src/tools/discord-message.ts +1 -1
  260. package/mcp-server/src/tools/discord-onboarding.ts +1 -1
  261. package/mcp-server/src/tools/discord-role.ts +1 -1
  262. package/mcp-server/src/tools/discord-thread.ts +1 -1
  263. package/mcp-server/src/tools/discord-webhook.ts +1 -1
  264. package/mcp-server/src/tools/fb-groups.ts +1 -1
  265. package/mcp-server/src/tools/forget.ts +1 -1
  266. package/mcp-server/src/tools/git-tools.ts +1 -1
  267. package/mcp-server/src/tools/gsc/experience.ts +1 -1
  268. package/mcp-server/src/tools/gsc/indexing.ts +1 -1
  269. package/mcp-server/src/tools/gsc/inspect.ts +1 -1
  270. package/mcp-server/src/tools/gsc/navigate.ts +1 -1
  271. package/mcp-server/src/tools/gsc/performance.ts +1 -1
  272. package/mcp-server/src/tools/gsc/settings.ts +1 -1
  273. package/mcp-server/src/tools/image-tools.ts +1 -1
  274. package/mcp-server/src/tools/leonardo-browser-tools.ts +1 -1
  275. package/mcp-server/src/tools/loop.ts +1 -1
  276. package/mcp-server/src/tools/memories.ts +1 -1
  277. package/mcp-server/src/tools/morelogin.ts +1 -1
  278. package/mcp-server/src/tools/profile.ts +1 -1
  279. package/mcp-server/src/tools/recall.ts +1 -1
  280. package/mcp-server/src/tools/reflect.ts +1 -1
  281. package/mcp-server/src/tools/remember.ts +13 -12
  282. package/mcp-server/src/tools/restore.ts +1 -1
  283. package/mcp-server/src/tools/style-guide-tools.ts +1 -1
  284. package/mcp-server/src/tools/sync.ts +1 -1
  285. package/mcp-server/src/tools/tictactoe-tools.ts +1 -1
  286. package/mcp-server/src/tools/utils.ts +1 -1
  287. package/mcp-server/src/tools/whatsapp-send-file.ts +1 -1
  288. package/mcp-server/src/tools/whiteboard-tools.ts +1 -1
  289. package/mcp-server/src/tools/youtube/analytics.ts +1 -1
  290. package/mcp-server/src/tools/youtube/download.ts +1 -1
  291. package/mcp-server/src/tools/youtube/media.ts +1 -1
  292. package/mcp-server/src/tools/youtube/metadata.ts +1 -1
  293. package/mcp-server/src/tools/youtube/navigate.ts +1 -1
  294. package/mcp-server/src/tools/youtube/playlist.ts +1 -1
  295. package/mcp-server/src/tools/youtube/schedule.ts +1 -1
  296. package/mcp-server/src/tools/youtube/source.ts +1 -1
  297. package/mcp-server/src/tools/youtube/upload.ts +4 -12
  298. package/mcp-server/src/tui.ts +22 -9
  299. package/neural-interface/i18n/en.json +236 -7
  300. package/neural-interface/i18n/pt-BR.json +238 -9
  301. package/neural-interface/lib/account-usage.js +5 -3
  302. package/neural-interface/lib/agent-sandbox-elevation.js +102 -0
  303. package/neural-interface/lib/agent-sandbox-setting.js +57 -0
  304. package/neural-interface/lib/app-controls-api.js +161 -0
  305. package/neural-interface/lib/assistant-api.js +40 -7
  306. package/neural-interface/lib/assistant-brains/opencode.js +13 -1
  307. package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +44 -0
  308. package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +57 -0
  309. package/neural-interface/lib/assistant-catalog.js +17 -2
  310. package/neural-interface/lib/assistant-dispatch.js +3 -0
  311. package/neural-interface/lib/assistant-envelope.js +19 -1
  312. package/neural-interface/lib/assistant-route-gate-codex.js +3 -1
  313. package/neural-interface/lib/assistant-runtime.js +131 -8
  314. package/neural-interface/lib/claude-model-catalog.js +64 -14
  315. package/neural-interface/lib/codex-account-auth.js +4 -2
  316. package/neural-interface/lib/codex-accounts.js +14 -1
  317. package/neural-interface/lib/codex-settings-schema.js +111 -47
  318. package/neural-interface/lib/editor-completion-opencode.js +132 -35
  319. package/neural-interface/lib/exec-loop-command.js +11 -2
  320. package/neural-interface/lib/install-details.js +23 -5
  321. package/neural-interface/lib/launch-cache.js +293 -0
  322. package/neural-interface/lib/login-start.js +524 -0
  323. package/neural-interface/lib/native-loop-providers.js +24 -4
  324. package/neural-interface/lib/native-loop-runtime.js +19 -0
  325. package/neural-interface/lib/opencode-db-schema.js +75 -0
  326. package/neural-interface/lib/opencode-history.js +16 -1
  327. package/neural-interface/lib/opencode-protocol.js +173 -0
  328. package/neural-interface/lib/opencode-provider-view.js +81 -0
  329. package/neural-interface/lib/opencode-runtime-config.js +10 -3
  330. package/neural-interface/lib/opencode-serve-records.js +606 -0
  331. package/neural-interface/lib/opencode-v2-client.js +33 -6
  332. package/neural-interface/lib/opencode-v2-ws-requests.js +19 -5
  333. package/neural-interface/lib/opencode-worker-activity.js +229 -0
  334. package/neural-interface/lib/opencode2-client.js +760 -0
  335. package/neural-interface/lib/opencode2-proxy.js +116 -0
  336. package/neural-interface/lib/opencode2-translate.js +1008 -0
  337. package/neural-interface/lib/process-identity.js +361 -0
  338. package/neural-interface/lib/provider-panel-terminal-auth.js +3 -2
  339. package/neural-interface/lib/session-cache-builder.js +26 -5
  340. package/neural-interface/lib/session-indexer.js +3 -1
  341. package/neural-interface/lib/session-title-generator.js +20 -0
  342. package/neural-interface/lib/style-guide/api.js +4 -3
  343. package/neural-interface/lib/untrusted-file-headers.js +27 -0
  344. package/neural-interface/package-lock.json +1342 -44
  345. package/neural-interface/package.json +5 -1
  346. package/neural-interface/public/index.html +2 -2
  347. package/neural-interface/public/shared/account-menu.js +4 -1
  348. package/neural-interface/public/shared/account-usage.js +62 -2
  349. package/neural-interface/public/shared/account-view.js +2 -1
  350. package/neural-interface/public/shared/agent-runtime-options.js +55 -11
  351. package/neural-interface/public/shared/assistant/asst-account-menu.js +298 -0
  352. package/neural-interface/public/shared/assistant/asst-agents-dock.js +172 -17
  353. package/neural-interface/public/shared/assistant/asst-api.js +18 -3
  354. package/neural-interface/public/shared/assistant/asst-brain-picker.js +424 -152
  355. package/neural-interface/public/shared/assistant/asst-composer.js +1 -1
  356. package/neural-interface/public/shared/assistant/asst-hosts.js +49 -2
  357. package/neural-interface/public/shared/assistant/asst-menu.js +275 -77
  358. package/neural-interface/public/shared/assistant/asst-model-chip.js +135 -0
  359. package/neural-interface/public/shared/assistant/asst-panel.js +236 -35
  360. package/neural-interface/public/shared/assistant/asst-rack-styles.js +28 -10
  361. package/neural-interface/public/shared/assistant/asst-redact.js +186 -0
  362. package/neural-interface/public/shared/assistant/asst-render.js +382 -36
  363. package/neural-interface/public/shared/assistant/asst-run-stage.js +231 -0
  364. package/neural-interface/public/shared/assistant/asst-sanitize.js +193 -3
  365. package/neural-interface/public/shared/assistant/asst-scene-styles.js +273 -0
  366. package/neural-interface/public/shared/assistant/asst-scenes.js +528 -0
  367. package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +3 -15
  368. package/neural-interface/public/shared/assistant/asst-state.js +14 -0
  369. package/neural-interface/public/shared/assistant/asst-styles.js +109 -17
  370. package/neural-interface/public/shared/assistant/asst-tool-kinds.js +13 -1
  371. package/neural-interface/public/shared/cc-dropdown.js +480 -0
  372. package/neural-interface/public/shared/cdx/cdx-panel.js +14 -2
  373. package/neural-interface/public/shared/cdx/cdx-render.js +15 -3
  374. package/neural-interface/public/shared/cdx/cdx-styles.js +49 -5
  375. package/neural-interface/public/shared/cdx/cdx-tabs.js +152 -35
  376. package/neural-interface/public/shared/cp/cp-markdown.js +4 -57
  377. package/neural-interface/public/shared/data-cache.js +223 -0
  378. package/neural-interface/public/shared/desktop-bridge.js +11 -0
  379. package/neural-interface/public/shared/desktop-titlebar-view.js +78 -1
  380. package/neural-interface/public/shared/desktop-titlebar.js +214 -28
  381. package/neural-interface/public/shared/desktop-update-view.js +15 -5
  382. package/neural-interface/public/shared/file-links.js +73 -8
  383. package/neural-interface/public/shared/html-shell.js +74 -80
  384. package/neural-interface/public/shared/launch-prefetch.js +59 -0
  385. package/neural-interface/public/shared/ocp-v2/ocp-v2-caps.js +3 -2
  386. package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +11 -3
  387. package/neural-interface/public/shared/ocp-v2/ocp-v2-modelpicker.js +54 -17
  388. package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +97 -3
  389. package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +3 -2
  390. package/neural-interface/public/shared/ocp-v2/ocp-v2-providers.js +11 -9
  391. package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +15 -4
  392. package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +1 -1
  393. package/neural-interface/public/shared/ocp-v2/ocp-v2-send-logic.js +401 -0
  394. package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +16 -9
  395. package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +60 -0
  396. package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +83 -5
  397. package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +195 -19
  398. package/neural-interface/public/shared/opencode-providers.js +39 -0
  399. package/neural-interface/public/shared/schedules-view.js +318 -0
  400. package/neural-interface/public/shared/settings/settings-app-pane.js +335 -0
  401. package/neural-interface/public/shared/settings/settings-app.js +243 -0
  402. package/neural-interface/public/shared/settings/settings-data.js +88 -0
  403. package/neural-interface/public/shared/settings/settings-ia.js +17 -0
  404. package/neural-interface/public/shared/showcase-privacy.js +2 -1
  405. package/neural-interface/public/shared/sidepanel-session-status.js +49 -0
  406. package/neural-interface/public/shared/styles.css +543 -372
  407. package/neural-interface/public/shared/ui-assistant.js +27 -5
  408. package/neural-interface/public/shared/ui-automation-studio.js +67 -27
  409. package/neural-interface/public/shared/ui-bookmarks.js +2 -1
  410. package/neural-interface/public/shared/ui-claude-panel.js +126 -12
  411. package/neural-interface/public/shared/ui-codex-panel.js +1 -0
  412. package/neural-interface/public/shared/ui-detail.js +6 -6
  413. package/neural-interface/public/shared/ui-explorer.js +2 -0
  414. package/neural-interface/public/shared/ui-file-links.js +1 -0
  415. package/neural-interface/public/shared/ui-image-gallery.js +6 -5
  416. package/neural-interface/public/shared/ui-invite.js +18 -2
  417. package/neural-interface/public/shared/ui-link.js +9 -9
  418. package/neural-interface/public/shared/ui-menubar.js +232 -33
  419. package/neural-interface/public/shared/ui-native-loop-router.js +2 -0
  420. package/neural-interface/public/shared/ui-opencode-panel-v2.js +1 -0
  421. package/neural-interface/public/shared/ui-schedules-studio.js +2099 -869
  422. package/neural-interface/public/shared/ui-sessions.js +15 -4
  423. package/neural-interface/public/shared/ui-settings.js +87 -36
  424. package/neural-interface/public/shared/ui-sidebar.js +4 -4
  425. package/neural-interface/public/shared/ui-sidepanel-session-entry.js +13 -0
  426. package/neural-interface/public/shared/ui-sidepanel-sessions.js +55 -4
  427. package/neural-interface/public/shared/ui-sidepanel-tray.js +84 -8
  428. package/neural-interface/public/shared/ui-skills.js +70 -12
  429. package/neural-interface/public/shared/ui-sync.js +9 -0
  430. package/neural-interface/public/shared/ui-terminal.js +36 -20
  431. package/neural-interface/public/shared/ui-trash.js +8 -1
  432. package/neural-interface/public/shared/ui-tutorial-steps.js +7 -3
  433. package/neural-interface/public/shared/ui-tutorial.js +15 -5
  434. package/neural-interface/public/shared/ui-update.js +87 -16
  435. package/neural-interface/public/shared/ui-whiteboard.js +2 -1
  436. package/neural-interface/public/variant/2d/main.js +4 -1
  437. package/neural-interface/public/variant/3d/main.js +3 -0
  438. package/neural-interface/public/vendor/highlight/LICENSE +29 -0
  439. package/neural-interface/public/vendor/highlight/github-dark-dimmed-11.12.0.min.css +9 -0
  440. package/neural-interface/public/vendor/highlight/highlight-11.12.0.min.js +1262 -0
  441. package/neural-interface/public/vendor/highlight/manifest.json +5 -0
  442. package/neural-interface/public/vendor/html2canvas/LICENSE +22 -0
  443. package/neural-interface/public/vendor/html2canvas/html2canvas-1.4.1.min.js +20 -0
  444. package/neural-interface/public/vendor/html2canvas/manifest.json +4 -0
  445. package/neural-interface/public/vendor/marked/LICENSE.md +44 -0
  446. package/neural-interface/public/vendor/marked/manifest.json +4 -0
  447. package/neural-interface/public/vendor/marked/marked-14.1.4.esm.js +2502 -0
  448. package/neural-interface/public/vendor/mermaid/LICENSE +21 -0
  449. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/abnfDiagram-PAR5IXJI.mjs +1 -0
  450. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architecture-7GRP2DOG-M7G3SWCO.mjs +1 -0
  451. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architectureDiagram-2PNWDENW.mjs +36 -0
  452. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/blockDiagram-PUWGUBOA.mjs +129 -0
  453. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/c4Diagram-3NLNHZP5.mjs +38 -0
  454. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-2NMSUPJH.mjs +1 -0
  455. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-32MCUW2P.mjs +206 -0
  456. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3NPNU5GP.mjs +1 -0
  457. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3SMGFRGC.mjs +1 -0
  458. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4CAJECRU.mjs +14 -0
  459. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4OADUZ5Q.mjs +10 -0
  460. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs +1 -0
  461. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IQCK5RY.mjs +3 -0
  462. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5MVFYWFU.mjs +1 -0
  463. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs +1 -0
  464. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs +15 -0
  465. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-CLS4B6BI.mjs +168 -0
  466. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-DZP67EKU.mjs +70 -0
  467. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-EICP7K5X.mjs +1 -0
  468. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-GDY2UAB4.mjs +1 -0
  469. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-H7VHZCWX.mjs +1 -0
  470. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-IJBDOHL6.mjs +1 -0
  471. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JFFVMJIA.mjs +1 -0
  472. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs +1 -0
  473. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JZGDI5JK.mjs +1 -0
  474. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-KD6SPIPN.mjs +2 -0
  475. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NF366YI6.mjs +231 -0
  476. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NUDPKBEF.mjs +32 -0
  477. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-OJINMHTS.mjs +1 -0
  478. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Q6NGPIAH.mjs +2 -0
  479. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-QJSWEUOL.mjs +132 -0
  480. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-R7JDMUKV.mjs +1 -0
  481. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RCXAM2GK.mjs +1 -0
  482. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RT4MAWR3.mjs +1 -0
  483. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SFMINX4W.mjs +1 -0
  484. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SLDQ463B.mjs +88 -0
  485. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-STOV2HOB.mjs +1 -0
  486. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs +1 -0
  487. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-TCEHX7R3.mjs +1 -0
  488. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VQC2EELJ.mjs +1 -0
  489. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VRZKL3EH.mjs +1 -0
  490. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VTHDQ7BV.mjs +1 -0
  491. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VY2OSTJR.mjs +2 -0
  492. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-WUBWJARI.mjs +1 -0
  493. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YBMQ5JGJ.mjs +2 -0
  494. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YDMLL4PJ.mjs +1 -0
  495. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Z6V44ARX.mjs +62 -0
  496. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZJJ7VQJP.mjs +339 -0
  497. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZNLK7HRR.mjs +1 -0
  498. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZQN7UHIL.mjs +1 -0
  499. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZS6VBONO.mjs +174 -0
  500. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZUNWM646.mjs +1 -0
  501. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-FGAMPOII.mjs +1 -0
  502. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-v2-AI5RJEK4.mjs +1 -0
  503. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cose-bilkent-Q72C2OJ3.mjs +1 -0
  504. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefin-OW5HDTMX-6OCTWOGG.mjs +1 -0
  505. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefinDiagram-2OOWUY4M.mjs +62 -0
  506. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/dagre-MPVFI544.mjs +4 -0
  507. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-AE4NWXFW.mjs +24 -0
  508. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-BUJID5UG.mjs +41 -0
  509. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-C44CZ5NI.mjs +24 -0
  510. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-EYOLEXXS.mjs +30 -0
  511. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-P7B6PWOJ.mjs +3 -0
  512. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ebnfDiagram-FTPZ3PV6.mjs +1 -0
  513. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/erDiagram-H3ERR26V.mjs +99 -0
  514. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/eventmodeling-NTZA5JFV-WKSWQHFS.mjs +1 -0
  515. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/flowDiagram-YHGXBVSY.mjs +1 -0
  516. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ganttDiagram-RWFTB7ED.mjs +292 -0
  517. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraph-4MIJSDKK-JH2HKYUO.mjs +1 -0
  518. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-MAR6GKOP.mjs +106 -0
  519. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/info-A6RAGUB7-3TX3OFWW.mjs +1 -0
  520. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/infoDiagram-LV547AFH.mjs +2 -0
  521. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-PUJQGNDS.mjs +70 -0
  522. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/journeyDiagram-EW5QJT4W.mjs +139 -0
  523. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/kanban-definition-JSQERAZB.mjs +89 -0
  524. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/katex-CZ4GXH2S.mjs +257 -0
  525. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/mindmap-definition-VBJCLQLM.mjs +96 -0
  526. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/packet-AYTQ26CC-MKII6P3Y.mjs +1 -0
  527. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pegDiagram-7WILOQTJ.mjs +1 -0
  528. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pie-WAS4IAKB-6B4OPMJ5.mjs +1 -0
  529. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pieDiagram-EFA7CBSB.mjs +39 -0
  530. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/quadrantDiagram-WARVYA7P.mjs +7 -0
  531. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/radar-RG4KPBEZ-UPTR3XUL.mjs +1 -0
  532. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-74A4TZTK-MEFUPFMS.mjs +1 -0
  533. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-abnf-HS5TGJTU-R5YG2S5D.mjs +1 -0
  534. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-ebnf-LZEXJU2U-G5QEX2L6.mjs +1 -0
  535. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-peg-WCYAUIDC-H5I2ZRY2.mjs +1 -0
  536. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroadDiagram-5NIQVNLQ.mjs +1 -0
  537. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/requirementDiagram-SXREGOKZ.mjs +84 -0
  538. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sankeyDiagram-VV74M2VP.mjs +40 -0
  539. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sequenceDiagram-52ZFIFDL.mjs +162 -0
  540. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sizeCapture-FGA5AGYP.mjs +1 -0
  541. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-3QAKPIVI.mjs +1 -0
  542. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-HN2P4RDZ.mjs +1 -0
  543. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanes-QLVP42QD.mjs +1 -0
  544. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanesDiagram-JKPDBFCN.mjs +8 -0
  545. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/timeline-definition-GS45XAXW.mjs +120 -0
  546. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treeView-Q6P3EWNA-ZRJGANNQ.mjs +1 -0
  547. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treemap-WGGIJYW6-K64VN5AS.mjs +1 -0
  548. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/vennDiagram-QIQU2ZRJ.mjs +34 -0
  549. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardley-WFR3VGLG-D67OWCCH.mjs +1 -0
  550. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardleyDiagram-U6YNM66N.mjs +78 -0
  551. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/xychartDiagram-XJAZEDNM.mjs +7 -0
  552. package/neural-interface/public/vendor/mermaid/manifest.json +4 -0
  553. package/neural-interface/public/vendor/mermaid/mermaid-11.17.2.esm.min.mjs +14 -0
  554. package/neural-interface/scripts/build-vendor.mjs +84 -3
  555. package/neural-interface/scripts/rebuild-pty.js +14 -2
  556. package/neural-interface/server.js +1279 -372
  557. package/npm-shrinkwrap.json +4424 -0
  558. package/package.json +54 -2
  559. package/postinstall.js +61 -47
  560. package/preuninstall.js +8 -35
  561. package/setup.js +76 -44
  562. package/skills/synabun/modules/idea.md +1 -1
  563. package/skills/synabun/modules/schedule.md +2 -2
  564. package/updater.cmd +2 -2
  565. package/updater.mjs +97 -3
@@ -1633,7 +1633,15 @@
1633
1633
  color: var(--t-secondary);
1634
1634
  }
1635
1635
 
1636
- .menubar-dropdown {
1636
+ /* A standalone button whose window is open (Schedules) looks like an open menu's label */
1637
+ .menubar-action.active,
1638
+ .menubar-action.active:hover {
1639
+ background: var(--s-active);
1640
+ color: var(--t-bright);
1641
+ }
1642
+
1643
+ .menubar-dropdown,
1644
+ .menubar-submenu {
1637
1645
  position: absolute;
1638
1646
  top: calc(100% + 14px);
1639
1647
  left: 0;
@@ -1671,10 +1679,37 @@
1671
1679
  display: block;
1672
1680
  }
1673
1681
 
1682
+ /* Taller than the room under the bar (ui-menubar.js fitDropdown): it scrolls, and the caret,
1683
+ which the scroll box would clip, goes. */
1684
+ .menubar-dropdown.menubar-dropdown--scroll {
1685
+ overflow-y: auto;
1686
+ overscroll-behavior: contain;
1687
+ scrollbar-width: thin;
1688
+ }
1689
+ .menubar-dropdown.menubar-dropdown--scroll::before { display: none; }
1690
+
1674
1691
  .menubar-dropdown--wide {
1675
1692
  min-width: 300px;
1676
1693
  }
1677
1694
 
1695
+ /* ── Submenus (Apps › Browser apps, Map, Games; ui-menubar.js wireSubmenus) ──
1696
+ The dropdown's box without its caret. The script moves the panel out of the dropdown, whose
1697
+ scroll box would clip it, onto the .menubar-item and places it beside its row. */
1698
+ .menubar-submenu {
1699
+ top: 0;
1700
+ z-index: 102;
1701
+ animation: menuSubIn 0.14s ease-out;
1702
+ }
1703
+
1704
+ .menubar-item.open .menubar-submenu.open {
1705
+ display: block;
1706
+ }
1707
+
1708
+ @keyframes menuSubIn {
1709
+ from { opacity: 0; }
1710
+ to { opacity: 1; }
1711
+ }
1712
+
1678
1713
  /* ── Resume Dropdown ── */
1679
1714
 
1680
1715
  .menubar-dropdown--resume {
@@ -2241,7 +2276,8 @@
2241
2276
  .menu-item[hidden] { display: none !important; }
2242
2277
 
2243
2278
  .menu-item:hover,
2244
- .menu-item.focused {
2279
+ .menu-item.focused,
2280
+ .menu-item.submenu-open {
2245
2281
  background: rgba(255,255,255,0.06);
2246
2282
  color: var(--t-bright);
2247
2283
  }
@@ -2281,6 +2317,20 @@
2281
2317
  border: 1px solid rgba(255,255,255,0.06);
2282
2318
  }
2283
2319
 
2320
+ /* A submenu row's chevron, where a shortcut would be */
2321
+ .menu-submenu-arrow {
2322
+ display: inline-flex;
2323
+ width: 10px;
2324
+ height: 10px;
2325
+ margin-left: 20px;
2326
+ flex-shrink: 0;
2327
+ color: var(--t-faint);
2328
+ }
2329
+ .menu-submenu-arrow svg { width: 100%; height: 100%; }
2330
+ .menu-item:hover .menu-submenu-arrow,
2331
+ .menu-item.focused .menu-submenu-arrow,
2332
+ .menu-item.submenu-open .menu-submenu-arrow { color: inherit; }
2333
+
2284
2334
  .menu-sep {
2285
2335
  height: 1px;
2286
2336
  background: rgba(255,255,255,0.06);
@@ -13586,6 +13636,7 @@
13586
13636
  ═══════════════════════════════════════════ */
13587
13637
  .settings-panel,
13588
13638
  .command-runner-panel,
13639
+ .schedules-studio-panel,
13589
13640
  .styleguide-panel {
13590
13641
  /* Text roles for the dark panel. Each clears WCAG AA (4.5:1) on the panel and inside a group. */
13591
13642
  --stg-text: rgba(255,255,255,0.92);
@@ -13621,6 +13672,7 @@
13621
13672
  @supports (color: oklch(from red l c h)) {
13622
13673
  .settings-panel,
13623
13674
  .command-runner-panel,
13675
+ .schedules-studio-panel,
13624
13676
  .styleguide-panel {
13625
13677
  --stg-accent-fill: oklch(from var(--accent-blue) 0.5 c h);
13626
13678
  --stg-accent-fill-hover: oklch(from var(--accent-blue) 0.55 c h);
@@ -14934,6 +14986,7 @@
14934
14986
  ═══════════════════════════════════════════ */
14935
14987
  .settings-panel,
14936
14988
  .command-runner-panel,
14989
+ .schedules-studio-panel,
14937
14990
  .styleguide-panel {
14938
14991
  --stg-help: rgba(255,255,255,0.55);
14939
14992
  --stg-line: rgba(255,255,255,0.07);
@@ -23232,137 +23285,513 @@
23232
23285
  #as-schedules-btn svg { flex-shrink: 0; }
23233
23286
 
23234
23287
  /* ═══════════════════════════════════════════
23235
- SCHEDULES STUDIO - dedicated window
23288
+ SCHEDULES — the dedicated window (ui-schedules-studio.js; what it shows: schedules-view.js)
23289
+ A sibling of Command Runner and Settings: the shared --stg-* roles, native type, a rail of
23290
+ views and groups, grouped inset lists of rows, details on demand, editors in place.
23291
+ Monochrome glass: colour only where it carries meaning (a failed run, a group's dot).
23236
23292
  ═══════════════════════════════════════════ */
23237
23293
 
23238
23294
  .schedules-studio-panel {
23239
23295
  position: fixed; z-index: 300001;
23240
- width: 980px; max-width: 96vw; min-width: 520px;
23241
- height: 620px; max-height: 90vh; min-height: 420px;
23242
- display: flex; flex-direction: column;
23243
- overflow: hidden;
23244
- opacity: 0; transform: scale(0.97);
23245
- transition: opacity 0.15s ease, transform 0.15s ease;
23246
- container-type: inline-size;
23247
- container-name: sched;
23296
+ width: 1040px; height: 720px;
23297
+ max-width: calc(100vw - 16px);
23298
+ max-height: calc(100dvh - var(--navbar-height, 48px) - 16px);
23299
+ min-width: min(360px, calc(100vw - 16px));
23300
+ min-height: min(420px, calc(100dvh - var(--navbar-height, 48px) - 16px));
23301
+ display: flex; flex-direction: column; overflow: hidden;
23302
+ container-type: inline-size; container-name: sched;
23303
+ color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-sm); line-height: 1.4;
23304
+ opacity: 0; transform: scale(.97);
23305
+ transition: opacity 150ms ease, transform 150ms ease;
23306
+ --sched-control-h: calc(22px * var(--font-scale, 1));
23307
+ --sched-search-h: calc(30px * var(--font-scale, 1));
23308
+ --sched-control-radius: var(--radius-control, 5px);
23309
+ --sched-group-radius: var(--radius-group, 9px);
23310
+ }
23311
+ body .schedules-studio-panel {
23312
+ --fw-focus: var(--stg-focus);
23313
+ /* Secondary text stays readable over whatever glass the user picked (as in Command Runner). */
23314
+ --stg-help: var(--t-primary);
23248
23315
  }
23249
23316
  .schedules-studio-panel.open { opacity: 1; transform: scale(1); }
23250
-
23251
- .sched-header {
23252
- display: flex; align-items: center; gap: 10px;
23253
- padding: 8px 14px;
23254
- border-bottom: 1px solid rgba(255,255,255,0.06);
23255
- background: linear-gradient(to bottom, rgba(255,255,255,0.025), transparent);
23256
- flex-shrink: 0; user-select: none;
23317
+ .schedules-studio-panel.dragging { transition: none; }
23318
+ .schedules-studio-panel [hidden] { display: none !important; }
23319
+ .schedules-studio-panel :is(button, input):disabled { opacity: .45; cursor: default; }
23320
+ .schedules-studio-panel .sched-sr {
23321
+ position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
23322
+ clip-path: inset(50%); white-space: nowrap; border: 0;
23257
23323
  }
23324
+
23325
+ /* The menubar stays usable while Schedules is open: its Schedules button closes the window and its
23326
+ menus open above this window's backdrop, which starts under the bar. */
23327
+ .studio-backdrop.sched-backdrop { top: var(--navbar-height, 48px); }
23328
+ body.schedules-window-open #title-bar { z-index: 300002; }
23329
+
23330
+ /* ── Title bar (the shared floating-window chrome sizes its controls) ── */
23331
+ .sched-header { display: flex; align-items: center; user-select: none; }
23258
23332
  .sched-header-left { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
23259
- .sched-header-icon {
23260
- width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center;
23261
- color: var(--t-secondary);
23262
- }
23263
- .sched-header h3 {
23264
- margin: 0; font-family: var(--ff-heading); font-size: var(--fs-base);
23265
- color: var(--t-bright); font-weight: 600; letter-spacing: 0;
23266
- }
23267
- .sched-count {
23268
- font-size: 10px; color: rgba(255,255,255,0.42);
23269
- background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.06);
23270
- border-radius: var(--r-pill); padding: 2px 8px;
23271
- }
23272
- .sched-header-actions { display: flex; align-items: center; gap: 6px; }
23273
- .sched-header-btn,
23274
- .sched-primary,
23275
- .sched-secondary {
23276
- display: inline-flex; align-items: center; justify-content: center; gap: 6px;
23277
- border-radius: 8px; font-size: var(--fs-xs); font-family: inherit; font-weight: 600;
23278
- min-height: 28px; padding: 5px 12px; cursor: pointer; transition: all 0.15s ease;
23279
- letter-spacing: 0;
23280
- }
23281
- .sched-header-btn {
23282
- color: var(--t-secondary); background: transparent; border: 1px solid transparent;
23333
+ .sched-header-icon { display: inline-flex; color: var(--stg-help); }
23334
+ .sched-header h3 { margin: 0; white-space: nowrap; }
23335
+ .sched-count { font-size: var(--fs-xs); font-variant-numeric: tabular-nums; color: var(--stg-help); }
23336
+ .sched-close { display: inline-flex; align-items: center; justify-content: center; border: 0; background: transparent; cursor: pointer; }
23337
+ .sched-close svg { width: 14px; height: 14px; }
23338
+
23339
+ .sched-body { position: relative; flex: 1; min-height: 0; display: grid; grid-template-columns: 216px minmax(0, 1fr); }
23340
+
23341
+ /* ── Rail: views, then groups (a group is also a drop target) ── */
23342
+ .sched-rail {
23343
+ display: flex; flex-direction: column; gap: 1px; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
23344
+ padding: 10px 10px 14px; border-right: 1px solid var(--stg-line); background: rgba(0,0,0,0.14);
23345
+ scrollbar-width: thin; scrollbar-color: var(--b-hover) transparent;
23283
23346
  }
23284
- .sched-header-btn:hover { background: rgba(255,255,255,0.06); color: var(--t-bright); }
23285
- .sched-primary {
23286
- color: var(--t-bright); background: rgba(79,195,247,0.12); border: 1px solid rgba(79,195,247,0.24);
23347
+ .sched-nav-item {
23348
+ display: flex; align-items: center; gap: 8px; width: 100%; min-height: 28px; padding: 3px 8px;
23349
+ border: 0; border-radius: 6px; background: transparent; color: var(--stg-text);
23350
+ font-family: var(--stg-font); font-size: var(--fs-sm); line-height: 1.3; text-align: start; cursor: pointer;
23351
+ transition: background-color 150ms ease, box-shadow 150ms ease;
23352
+ }
23353
+ .sched-nav-item:hover { background: rgba(255,255,255,0.06); }
23354
+ .sched-nav-item[aria-current="page"] { background: var(--stg-control-hover); box-shadow: var(--shadow-highlight); }
23355
+ .sched-nav-item.drop-target { background: var(--stg-control-hover); box-shadow: inset 0 0 0 1px var(--b-visible); }
23356
+ .sched-nav-icon { display: inline-flex; align-items: center; justify-content: center; width: 15px; flex-shrink: 0; color: var(--stg-help); }
23357
+ .sched-nav-icon svg { width: 15px; height: 15px; }
23358
+ .sched-nav-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
23359
+ .sched-nav-count { flex-shrink: 0; color: var(--stg-help); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
23360
+ .sched-nav-count--alert { color: var(--stg-err); }
23361
+ .sched-nav-flag { display: inline-flex; align-items: center; gap: 2px; flex-shrink: 0; color: var(--stg-help); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
23362
+ .sched-nav-flag svg { width: 11px; height: 11px; }
23363
+ .sched-nav-flag--alert { color: var(--stg-err); }
23364
+ .sched-rail-sep { flex-shrink: 0; height: 1px; margin: 6px 8px; background: var(--stg-sep); }
23365
+ .sched-rail-head {
23366
+ display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 12px 2px 4px 8px;
23367
+ color: var(--stg-help); font-size: 11.5px; font-weight: 600; letter-spacing: .02em;
23368
+ }
23369
+ .sched-rail-empty { padding: 4px 8px; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
23370
+ .sched-dot {
23371
+ display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
23372
+ background: var(--dot, var(--stg-off)); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.18);
23373
+ }
23374
+
23375
+ /* ── Main: view head, toolbar, list, status line ── */
23376
+ .sched-main { position: relative; display: flex; flex-direction: column; min-width: 0; min-height: 0; --sched-inset: 22px; }
23377
+ /* What each view or editor replaces; the narrow strip above it stays. */
23378
+ .sched-frame { position: relative; display: flex; flex-direction: column; flex: 1; min-width: 0; min-height: 0; }
23379
+ .sched-narrow-nav { display: none; }
23380
+ .sched-view-head {
23381
+ display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap;
23382
+ gap: 10px 16px; padding: 18px var(--sched-inset) 12px; flex-shrink: 0;
23383
+ }
23384
+ .sched-view-titles { flex: 1 1 260px; min-width: 0; }
23385
+ .sched-view-head h2 {
23386
+ display: flex; align-items: center; gap: 8px; margin: 0; min-width: 0;
23387
+ font-family: var(--stg-font); font-size: calc(20px * var(--font-scale, 1)); font-weight: 600;
23388
+ line-height: 1.25; letter-spacing: 0; color: var(--stg-text); overflow-wrap: anywhere;
23389
+ }
23390
+ .sched-view-head h2 .sched-dot { width: 10px; height: 10px; }
23391
+ .sched-view-sub, .sched-view-meta { margin: 3px 0 0; max-width: 76ch; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
23392
+ .sched-view-meta { margin-top: 1px; }
23393
+ .sched-view-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
23394
+
23395
+ .sched-toolbar { display: flex; align-items: center; gap: 8px; padding: 0 var(--sched-inset) 10px; flex-shrink: 0; }
23396
+ .sched-search {
23397
+ display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; height: var(--sched-search-h);
23398
+ padding: 0 4px 0 10px; border: 1px solid var(--stg-field-line); border-radius: var(--sched-group-radius);
23399
+ background: var(--stg-control); color: var(--stg-help);
23400
+ }
23401
+ .sched-search > svg { width: 14px; height: 14px; flex-shrink: 0; }
23402
+ .sched-search:has(input:focus-visible) { outline: 2px solid var(--stg-focus); outline-offset: 2px; }
23403
+ body .schedules-studio-panel #sched-search:focus-visible { outline: none; }
23404
+ .sched-search input {
23405
+ flex: 1; min-width: 0; height: 100%; padding: 0; border: 0; background: transparent; outline: 0;
23406
+ color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-sm);
23287
23407
  }
23288
- .sched-primary:hover { background: rgba(79,195,247,0.18); border-color: rgba(79,195,247,0.34); }
23289
- .sched-secondary {
23290
- color: var(--t-secondary); background: rgba(255,255,255,0.035); border: 1px solid rgba(255,255,255,0.08);
23408
+ .sched-search input::placeholder { color: var(--stg-help); opacity: 1; }
23409
+ .sched-search input::-webkit-search-cancel-button { display: none; }
23410
+ .sched-search kbd { flex-shrink: 0; padding-inline-end: 6px; font-family: var(--stg-mono); font-size: var(--fs-xs); color: var(--stg-help); }
23411
+
23412
+ .sched-list {
23413
+ position: relative; flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain;
23414
+ padding: 2px var(--sched-inset) 24px; scrollbar-gutter: stable;
23415
+ scrollbar-width: thin; scrollbar-color: var(--b-hover) transparent;
23291
23416
  }
23292
- .sched-secondary:hover { background: rgba(255,255,255,0.07); color: var(--t-bright); }
23293
- .sched-close {
23294
- width: 28px; height: 28px; border: 0; background: transparent; color: var(--t-dim);
23295
- border-radius: 8px; cursor: pointer; font-size: 20px; line-height: 1;
23417
+ .sched-list:focus { outline: none; }
23418
+ .sched-footer {
23419
+ display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px;
23420
+ padding: 7px var(--sched-inset); border-top: 1px solid var(--stg-line); flex-shrink: 0;
23421
+ color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45;
23296
23422
  }
23297
- .sched-close:hover { background: rgba(255,255,255,0.06); color: var(--t-bright); }
23423
+ .sched-footer-hint { display: inline-flex; align-items: center; gap: 6px; }
23424
+ .sched-footer-hint svg { width: 12px; height: 12px; }
23298
23425
 
23299
- .sched-body { display: flex; flex: 1; min-height: 0; }
23300
- .sched-sidebar {
23301
- width: 230px; flex-shrink: 0; border-right: 1px solid rgba(255,255,255,0.06);
23302
- padding: 14px 12px; display: flex; flex-direction: column; gap: 8px;
23303
- background: rgba(255,255,255,0.015); overflow-y: auto;
23426
+ /* ── Controls: the Settings push button, popup, field and switch ── */
23427
+ .sched-btn {
23428
+ display: inline-flex; align-items: center; justify-content: center; gap: 4px; flex-shrink: 0;
23429
+ min-height: var(--sched-control-h); max-width: 100%; padding: 2px 10px;
23430
+ border: 1px solid var(--stg-field-line); border-radius: var(--sched-control-radius); box-shadow: none;
23431
+ background: var(--stg-control); color: var(--stg-text); cursor: pointer;
23432
+ font-family: var(--stg-font); font-size: var(--fs-xs); font-weight: 500; line-height: 1.2; white-space: nowrap;
23433
+ transition: background-color 150ms ease, color 150ms ease;
23304
23434
  }
23305
- .sched-sidebar-summary {
23306
- display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 6px;
23435
+ .sched-btn svg { width: 12px; height: 12px; flex-shrink: 0; }
23436
+ .sched-btn:hover:not(:disabled) { background: var(--stg-control-hover); }
23437
+ .sched-btn--primary { color: #fff; background: var(--stg-accent-fill); border-color: transparent; }
23438
+ .sched-btn--primary:hover:not(:disabled) { background: var(--stg-accent-fill-hover); }
23439
+ .sched-btn--text { color: var(--stg-link); background: transparent; border-color: transparent; padding-inline: 4px; font-weight: 400; }
23440
+ .sched-btn--text:hover:not(:disabled) { color: var(--accent-blue); background: transparent; }
23441
+ .sched-btn--danger:hover:not(:disabled) { color: var(--stg-err); }
23442
+ .sched-icon-btn {
23443
+ display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
23444
+ width: var(--sched-control-h); height: var(--sched-control-h); padding: 0; border: 0;
23445
+ border-radius: var(--sched-control-radius); background: transparent; color: var(--stg-help); cursor: pointer;
23446
+ transition: background-color 150ms ease, color 150ms ease;
23307
23447
  }
23308
- .sched-sidebar-summary div {
23309
- border: 1px solid rgba(255,255,255,0.07); border-radius: 8px;
23310
- background: rgba(255,255,255,0.03); padding: 8px;
23448
+ .sched-icon-btn svg { width: 12px; height: 12px; }
23449
+ .sched-icon-btn:hover:not(:disabled) { color: var(--stg-text); background: var(--stg-control-hover); }
23450
+ .sched-icon-btn--danger:hover:not(:disabled) { color: var(--stg-err); }
23451
+ /* Popups: the app's custom dropdown (cc-dropdown.js), drawn as Settings draws it (settings-redesign:
23452
+ elegance): a 22px popup button with the up-down chevron, an opaque menu, the selected choice in
23453
+ 600, the highlighted one on the accent fill. The script places an open menu `fixed` against its
23454
+ trigger, so the scrolling panes never cut it off. */
23455
+ .schedules-studio-panel .cc-dropdown { display: inline-flex; min-width: 110px; max-width: 100%; vertical-align: middle; }
23456
+ .schedules-studio-panel .cc-dropdown-trigger {
23457
+ width: 100%; min-width: 0; height: var(--sched-control-h); padding: 0 7px 0 9px; gap: 6px;
23458
+ border: 1px solid var(--stg-field-line); border-radius: var(--sched-control-radius); box-shadow: none;
23459
+ color: var(--stg-text); background: var(--stg-control);
23460
+ font-family: var(--stg-font); font-size: var(--fs-xs); line-height: calc(20px * var(--font-scale, 1)); letter-spacing: 0;
23461
+ }
23462
+ .schedules-studio-panel .cc-dropdown-trigger:hover:not(:disabled),
23463
+ .schedules-studio-panel .cc-dropdown.open .cc-dropdown-trigger { background: var(--stg-control-hover); border-color: var(--stg-field-line); color: var(--stg-text); }
23464
+ .schedules-studio-panel .cc-dropdown-trigger[aria-invalid="true"] { border-color: var(--stg-err); }
23465
+ .schedules-studio-panel .cc-dropdown-value { min-width: 0; text-align: left; } /* a long choice ends in an ellipsis */
23466
+ .schedules-studio-panel .cc-dropdown-arrow { display: none; }
23467
+ .schedules-studio-panel .cc-dropdown-trigger::after {
23468
+ content: ''; flex-shrink: 0; width: 7px; height: 10px; background: var(--stg-help);
23469
+ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 12'%3E%3Cpath d='M1.2 4.4 4 1.6l2.8 2.8M1.2 7.6 4 10.4l2.8-2.8' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
23470
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 12'%3E%3Cpath d='M1.2 4.4 4 1.6l2.8 2.8M1.2 7.6 4 10.4l2.8-2.8' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
23311
23471
  }
23312
- .sched-sidebar-summary span { display: block; color: var(--t-bright); font-size: 18px; font-weight: 700; }
23313
- .sched-sidebar-summary label { display: block; color: var(--t-muted); font-size: 10px; margin-top: 2px; }
23314
- .sched-sidebar-label {
23315
- margin: 8px 4px 2px; color: var(--t-muted); font-size: 10px; font-weight: 700;
23316
- text-transform: uppercase; letter-spacing: 0.08em;
23472
+ .schedules-studio-panel .cc-dropdown-menu {
23473
+ z-index: 20; overflow-y: auto; overscroll-behavior: contain;
23474
+ padding: 5px; background: rgb(40,40,44); border: 1px solid rgba(255,255,255,0.12); border-radius: 8px;
23475
+ box-shadow: 0 12px 32px rgba(0,0,0,0.5);
23317
23476
  }
23318
- .sched-group-list { display: flex; flex-direction: column; gap: 4px; }
23319
- .sched-group-row {
23320
- display: flex; align-items: center; gap: 8px; width: 100%; min-height: 34px;
23321
- background: transparent; border: 1px solid transparent; border-radius: 8px;
23322
- color: var(--t-secondary); cursor: pointer; padding: 6px 8px; text-align: left;
23323
- font-family: inherit; transition: all 0.15s ease;
23477
+ .schedules-studio-panel .cc-dropdown-item {
23478
+ padding: 3px 9px; border-radius: 5px; color: var(--stg-text); font-family: var(--stg-font); font-size: var(--fs-xs);
23479
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: none;
23480
+ }
23481
+ .schedules-studio-panel .cc-dropdown-item:hover { background: none; color: var(--stg-text); }
23482
+ .schedules-studio-panel .cc-dropdown-item.active { background: none; color: var(--stg-text); font-weight: 600; }
23483
+ .schedules-studio-panel .cc-dropdown-item.highlight { background: var(--stg-accent-fill); color: #fff; }
23484
+ .schedules-studio-panel .cc-dropdown-item[aria-disabled="true"] { opacity: .45; cursor: default; background: none; color: var(--stg-text); }
23485
+ .schedules-studio-panel .cc-dropdown-group { padding: 4px 9px 2px; color: var(--stg-help); font-size: var(--fs-xs); font-weight: 600; }
23486
+ .schedules-studio-panel .cc-dropdown-optgroup + .cc-dropdown-optgroup { margin-top: 4px; }
23487
+ .sched-input {
23488
+ width: 100%; min-width: 0; height: var(--sched-control-h); padding: 0 8px;
23489
+ border: 1px solid var(--stg-field-line); border-radius: var(--sched-control-radius);
23490
+ background: var(--stg-field-bg); color: var(--stg-text); color-scheme: dark;
23491
+ font-family: var(--stg-font); font-size: var(--fs-xs); line-height: calc(20px * var(--font-scale, 1));
23324
23492
  }
23325
- .sched-group-row:hover,
23326
- .sched-group-row.drop-target { background: rgba(255,255,255,0.045); border-color: rgba(255,255,255,0.08); }
23327
- .sched-group-row.active {
23328
- background: rgba(255,255,255,0.07); border-color: rgba(255,255,255,0.12); color: var(--t-bright);
23329
- }
23330
- .sched-group-color {
23331
- width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0;
23332
- box-shadow: 0 0 0 1px rgba(255,255,255,0.12);
23333
- }
23334
- .sched-group-color.large { width: 14px; height: 14px; }
23335
- .sched-group-icon { width: 16px; display: inline-flex; color: var(--t-muted); }
23336
- .sched-group-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
23337
- .sched-group-count {
23338
- font-size: 10px; color: var(--t-muted); background: rgba(255,255,255,0.045);
23339
- border-radius: var(--r-pill); padding: 1px 6px;
23340
- }
23341
- .sched-sidebar-new {
23342
- display: inline-flex; align-items: center; justify-content: center; gap: 6px;
23343
- border: 1px solid rgba(255,255,255,0.08); border-radius: 8px; background: rgba(255,255,255,0.035);
23344
- color: var(--t-secondary); min-height: 32px; cursor: pointer; font-family: inherit;
23345
- margin-top: 6px;
23493
+ .sched-input::placeholder { color: var(--stg-help); }
23494
+ .sched-input[aria-invalid="true"] { border-color: var(--stg-err); }
23495
+ .sched-input[type="number"] { width: 72px; flex: 0 0 auto; text-align: right; font-family: var(--stg-mono); }
23496
+ .sched-input[type="color"] { width: 44px; flex: 0 0 auto; padding: 2px; cursor: pointer; }
23497
+ .sched-mono { font-family: var(--stg-mono); }
23498
+ /* Day themes: prose that may span lines (Settings multiline field, system font). */
23499
+ .sched-textarea { height: auto; min-height: calc(44px * var(--font-scale, 1)); padding: 4px 8px; line-height: 1.45; resize: vertical; white-space: pre-wrap; }
23500
+
23501
+ /* The switch: a 26×15 Settings capsule. A row's is a button (role="switch"), a form's a checkbox. */
23502
+ .sched-switch, .sched-toggle-track {
23503
+ position: relative; display: inline-block; flex-shrink: 0; width: 26px; height: 15px; padding: 0;
23504
+ border: 0; border-radius: 999px; background: rgba(255,255,255,0.16); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.22);
23505
+ transition: background-color 150ms ease;
23506
+ }
23507
+ .sched-switch { cursor: pointer; }
23508
+ .sched-switch::before { content: ''; position: absolute; inset: -5px -4px; }
23509
+ .sched-switch::after, .sched-toggle-track::after {
23510
+ content: ''; position: absolute; top: 1px; left: 1px; width: 13px; height: 13px; border-radius: 50%;
23511
+ background: #e8e8ea; box-shadow: 0 1px 2px rgba(0,0,0,0.35); transition: transform 150ms ease;
23512
+ }
23513
+ .sched-switch[aria-checked="true"], .sched-toggle input:checked + .sched-toggle-track { background: var(--stg-accent-fill); box-shadow: none; }
23514
+ .sched-switch[aria-checked="true"]::after, .sched-toggle input:checked + .sched-toggle-track::after { transform: translateX(11px); background: #fff; }
23515
+ .sched-switch[aria-busy="true"] { opacity: .6; cursor: progress; }
23516
+ body .schedules-studio-panel .sched-switch:focus-visible { outline-offset: 3px; border-radius: 999px; }
23517
+ .sched-toggle { position: relative; display: inline-flex; align-items: center; flex-shrink: 0; padding: 4px 0; cursor: pointer; }
23518
+ .sched-toggle input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
23519
+ .sched-toggle input:focus-visible + .sched-toggle-track { outline: 2px solid var(--stg-focus); outline-offset: 3px; }
23520
+
23521
+ /* ── Grouped inset lists ── */
23522
+ .sched-section + .sched-section { margin-top: 16px; }
23523
+ .sched-section-title {
23524
+ display: flex; align-items: baseline; gap: 8px; margin: 0 0 6px; padding: 0 4px;
23525
+ font-family: var(--stg-font); font-size: var(--fs-xs); font-weight: 600; color: var(--stg-help);
23526
+ }
23527
+ .sched-box { min-width: 0; background: var(--stg-group); border: 1px solid var(--stg-line); border-radius: var(--sched-group-radius); }
23528
+ .sched-box + .sched-box { margin-top: 8px; }
23529
+ .sched-group-head { display: flex; align-items: center; gap: 8px; min-height: 36px; padding: 4px 8px 4px 12px; border-radius: var(--sched-group-radius); }
23530
+ .sched-group-head.drop-target { background: var(--stg-control); box-shadow: inset 0 0 0 1px var(--b-visible); }
23531
+ .sched-group-toggle {
23532
+ display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; min-height: var(--sched-control-h);
23533
+ padding: 0; border: 0; border-radius: var(--sched-control-radius); background: transparent;
23534
+ color: var(--stg-text); font-family: var(--stg-font); text-align: start; cursor: pointer;
23535
+ }
23536
+ .sched-group-chevron { display: inline-flex; color: var(--stg-help); transform: rotate(90deg); transition: transform 150ms ease; }
23537
+ .sched-group-chevron svg { width: 10px; height: 10px; }
23538
+ .sched-box.is-collapsed .sched-group-chevron { transform: rotate(0deg); }
23539
+ .sched-group-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-sm); font-weight: 600; line-height: 1.35; }
23540
+ .sched-group-count { color: var(--stg-help); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
23541
+ .sched-group-meta { display: flex; align-items: center; justify-content: flex-end; gap: 6px; min-width: 0; color: var(--stg-help); font-size: var(--fs-xs); white-space: nowrap; overflow: hidden; }
23542
+ .sched-group-meta svg { width: 11px; height: 11px; flex-shrink: 0; }
23543
+ .sched-group-meta .is-alert { color: var(--stg-err); }
23544
+ .sched-rows { list-style: none; margin: 0; padding: 0; }
23545
+ .sched-group-head + .sched-rows { border-top: 1px solid var(--stg-sep); }
23546
+
23547
+ /* ── A schedule: switch · name and cadence · next run · last run ── */
23548
+ .sched-row { position: relative; }
23549
+ .sched-row + .sched-row::before {
23550
+ content: ''; position: absolute; top: 0; left: 50px; right: 12px; height: 1px; background: var(--stg-sep);
23551
+ }
23552
+ .sched-row-line {
23553
+ display: grid; grid-template-columns: 30px minmax(0, 1fr) minmax(0, 8.5em) minmax(0, 11em) 10px;
23554
+ grid-template-areas: "switch main next last chev";
23555
+ align-items: center; column-gap: 12px; min-height: 46px; padding: 6px 12px 6px 10px;
23556
+ cursor: pointer; transition: background-color 120ms ease;
23557
+ }
23558
+ .sched-row:first-child > .sched-row-line { border-radius: var(--sched-group-radius) var(--sched-group-radius) 0 0; }
23559
+ .sched-row:last-child > .sched-row-line { border-radius: 0 0 var(--sched-group-radius) var(--sched-group-radius); }
23560
+ .sched-row:only-child > .sched-row-line { border-radius: var(--sched-group-radius); }
23561
+ .sched-group-head + .sched-rows .sched-row:first-child > .sched-row-line { border-radius: 0; }
23562
+ .sched-row-line:hover { background: rgba(255,255,255,0.025); }
23563
+ .sched-row.is-open > .sched-row-line { background: rgba(255,255,255,0.04); }
23564
+ .sched-row.is-dragging { opacity: .45; }
23565
+ .sched-switch-cell { grid-area: switch; display: flex; justify-content: center; }
23566
+ .sched-row-toggle {
23567
+ grid-area: main; display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 0;
23568
+ padding: 2px 0; border: 0; border-radius: var(--sched-control-radius); background: transparent;
23569
+ color: inherit; font-family: var(--stg-font); text-align: start; cursor: pointer;
23570
+ }
23571
+ .sched-row-name {
23572
+ max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
23573
+ font-size: var(--fs-sm); font-weight: 500; line-height: 1.35; color: var(--stg-text);
23574
+ }
23575
+ .sched-row.is-paused .sched-row-name { color: var(--stg-body); }
23576
+ .sched-row-sub {
23577
+ display: flex; align-items: center; gap: 6px; max-width: 100%; min-width: 0;
23578
+ font-size: var(--fs-xs); line-height: 1.4; color: var(--stg-help); white-space: nowrap;
23579
+ }
23580
+ .sched-row-sub > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
23581
+ .sched-row-sub > .sched-row-group { display: inline-flex; align-items: center; gap: 5px; flex-shrink: 1; }
23582
+ .sched-row-reason {
23583
+ max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
23584
+ font-size: var(--fs-xs); line-height: 1.4; color: var(--stg-body);
23585
+ }
23586
+ .sched-next, .sched-last {
23587
+ display: flex; flex-direction: column; min-width: 0; font-size: var(--fs-xs); line-height: 1.4; font-variant-numeric: tabular-nums;
23588
+ }
23589
+ .sched-next { grid-area: next; }
23590
+ .sched-last { grid-area: last; }
23591
+ .sched-next-rel { color: var(--stg-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
23592
+ .sched-next-abs, .sched-last-ago { color: var(--stg-help); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
23593
+ .sched-next:is([data-state="paused"], [data-state="none"]) .sched-next-rel { color: var(--stg-help); }
23594
+ .sched-next[data-state="overdue"] .sched-next-rel { color: var(--stg-warn); }
23595
+ .sched-last-word { display: inline-flex; align-items: center; gap: 5px; min-width: 0; color: var(--stg-body); white-space: nowrap; }
23596
+ .sched-last-word > span { overflow: hidden; text-overflow: ellipsis; }
23597
+ .sched-last-word svg { width: 12px; height: 12px; flex-shrink: 0; color: var(--stg-help); }
23598
+ .sched-last[data-kind="failed"] .sched-last-word,
23599
+ .sched-last[data-kind="failed"] .sched-last-word svg { color: var(--stg-err); }
23600
+ .sched-last[data-kind="interrupted"] .sched-last-word svg { color: var(--stg-warn); }
23601
+ .sched-last:is([data-kind="never"], [data-kind="stopped"]) .sched-last-word { color: var(--stg-help); }
23602
+ .sched-row-chevron { grid-area: chev; display: inline-flex; color: var(--stg-help); transition: transform 150ms ease; }
23603
+ .sched-row-chevron svg { width: 10px; height: 10px; }
23604
+ .sched-row.is-open .sched-row-chevron { transform: rotate(90deg); }
23605
+
23606
+ /* ── Row details: what it runs and with what, then its actions ── */
23607
+ .sched-detail { padding: 2px 14px 12px 52px; }
23608
+ .sched-detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 6px 32px; }
23609
+ .sched-facts { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-content: start; column-gap: 14px; row-gap: 3px; margin: 0; }
23610
+ .sched-fact { display: contents; }
23611
+ .sched-facts-block { min-width: 0; }
23612
+ .sched-facts-title { margin: 6px 0 4px; font-family: var(--stg-font); font-size: var(--fs-xs); font-weight: 600; line-height: 1.4; color: var(--stg-help); }
23613
+ .sched-facts dt { color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.5; }
23614
+ .sched-facts dd { min-width: 0; margin: 0; color: var(--stg-body); font-size: var(--fs-xs); line-height: 1.5; overflow-wrap: anywhere; }
23615
+ .sched-facts dd.sched-mono { font-size: calc(11.5px * var(--font-scale, 1)); }
23616
+ .sched-facts .is-failed { color: var(--stg-err); }
23617
+ .sched-source { color: var(--stg-help); }
23618
+ .sched-detail-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--stg-sep); }
23619
+ .sched-detail-group { display: inline-flex; align-items: center; gap: 8px; color: var(--stg-help); font-size: var(--fs-xs); }
23620
+ .sched-detail-spacer { flex: 1 1 0; }
23621
+
23622
+ /* ── Empty, loading and error states ── */
23623
+ .sched-empty {
23624
+ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
23625
+ min-height: 220px; padding: 24px 12px; text-align: center;
23626
+ }
23627
+ .sched-empty-icon { display: grid; place-items: center; width: 32px; height: 32px; color: var(--stg-help); }
23628
+ .sched-empty-icon svg { width: 22px; height: 22px; }
23629
+ .sched-empty h3 { margin: 0; font-family: var(--stg-font); font-size: var(--fs-base); font-weight: 600; line-height: 1.3; color: var(--stg-text); }
23630
+ .sched-empty p { margin: 0 0 8px; max-width: 46ch; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
23631
+ .sched-empty-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
23632
+ /* A load that failed while an earlier copy shows: one line above it, with a way to load again. */
23633
+ .sched-load-note {
23634
+ display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; flex-shrink: 0;
23635
+ margin: 0 var(--sched-inset) 10px; padding: 5px 6px 5px 10px;
23636
+ border: 1px solid var(--stg-line); border-radius: var(--sched-group-radius); background: var(--stg-group);
23637
+ color: var(--stg-body); font-size: var(--fs-xs); line-height: 1.45;
23638
+ }
23639
+ .sched-load-note:empty { display: none; }
23640
+ .sched-load-note > svg { width: 12px; height: 12px; flex-shrink: 0; color: var(--stg-warn); }
23641
+ .sched-load-note--ok > svg { color: var(--stg-ok); }
23642
+ .sched-load-note--busy > svg { color: var(--stg-help); }
23643
+ .sched-load-note > span { flex: 1 1 240px; min-width: 0; }
23644
+ #sched-active-timers .sched-load-note { margin: 0 0 8px; }
23645
+
23646
+ /* ── Editors (schedule, group) and the Timers forms: Settings grouped rows ── */
23647
+ .sched-editor { display: flex; flex-direction: column; flex: 1; min-height: 0; }
23648
+ .sched-editor-head { display: flex; align-items: center; gap: 10px; padding: 14px var(--sched-inset) 10px 14px; flex-shrink: 0; }
23649
+ .sched-editor-head h2 {
23650
+ margin: 0; font-family: var(--stg-font); font-size: calc(20px * var(--font-scale, 1)); font-weight: 600;
23651
+ line-height: 1.25; letter-spacing: 0; color: var(--stg-text); overflow-wrap: anywhere;
23652
+ }
23653
+ .sched-editor-head p { margin: 2px 0 0; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; overflow-wrap: anywhere; }
23654
+ .sched-editor-titles { min-width: 0; }
23655
+ .sched-editor-body {
23656
+ flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 4px var(--sched-inset) 24px;
23657
+ scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: var(--b-hover) transparent;
23346
23658
  }
23347
- .sched-sidebar-new:hover { background: rgba(255,255,255,0.07); color: var(--t-bright); }
23348
- .sched-sidebar-empty { color: var(--t-muted); font-size: 11px; padding: 8px 6px; }
23349
- .sched-sidebar-prompt {
23350
- margin-top: auto; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
23351
- border: 1px solid rgba(255,255,255,0.09); border-radius: 8px;
23352
- background: rgba(255,255,255,0.04);
23353
- color: var(--t-secondary); min-height: 34px; cursor: pointer; font-family: inherit;
23354
- font-size: 12px; font-weight: 600; letter-spacing: 0;
23355
- box-shadow: var(--shadow-highlight);
23356
- transition: border-color 160ms ease, color 160ms ease, background 160ms ease, transform 120ms ease;
23659
+ .sched-editor-actions {
23660
+ display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px;
23661
+ padding: 10px var(--sched-inset); border-top: 1px solid var(--stg-line); flex-shrink: 0;
23662
+ }
23663
+ .sched-form { max-width: 760px; }
23664
+ .sched-form-section + .sched-form-section { margin-top: 18px; }
23665
+ .sched-form-title {
23666
+ display: flex; align-items: baseline; gap: 8px; margin: 0 0 6px; padding: 0 4px;
23667
+ font-family: var(--stg-font); font-size: var(--fs-sm); font-weight: 600; line-height: 1.35; color: var(--stg-text);
23668
+ }
23669
+ .sched-form-title small { color: var(--stg-help); font-size: var(--fs-xs); font-weight: 400; }
23670
+ .sched-form-intro { margin: -2px 0 8px; padding: 0 4px; max-width: 72ch; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
23671
+ .sched-form-group { padding: 0 var(--stg-row-x); background: var(--stg-group); border: 1px solid var(--stg-line); border-radius: var(--sched-group-radius); }
23672
+ .sched-form-row {
23673
+ display: grid; grid-template-columns: minmax(0, 168px) minmax(0, 1fr); align-items: center;
23674
+ gap: 6px 14px; min-height: 38px; padding: var(--stg-row-y) 0;
23675
+ }
23676
+ .sched-form-row + .sched-form-row { border-top: 1px solid var(--stg-sep); }
23677
+ .sched-form-row--top { align-items: start; }
23678
+ .sched-form-row--switch { grid-template-columns: minmax(0, 1fr) auto; }
23679
+ .sched-form-row--switch .sched-help { max-width: 60ch; }
23680
+ .sched-form-label { color: var(--stg-text); font-size: var(--fs-sm); line-height: 1.4; overflow-wrap: anywhere; }
23681
+ .sched-form-row--top > .sched-form-label { padding-top: 2px; }
23682
+ .sched-form-control { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 8px; min-width: 0; }
23683
+ .sched-form-control > .cc-dropdown, .sched-form-control > .sched-input:not([type="color"]):not([type="number"]) { flex: 1 1 220px; }
23684
+ .sched-form-control--start { justify-content: flex-start; }
23685
+ .sched-form-stack { display: flex; flex-direction: column; align-items: stretch; gap: 4px; min-width: 0; }
23686
+ .sched-help { margin: 0; color: var(--stg-help); font-size: var(--fs-xs); line-height: 1.45; }
23687
+ details.sched-form-section > summary { list-style: none; cursor: pointer; border-radius: var(--sched-control-radius); }
23688
+ details.sched-form-section > summary::-webkit-details-marker { display: none; }
23689
+ details.sched-form-section > summary::before {
23690
+ content: ''; width: 6px; height: 6px; margin-inline-end: 2px; align-self: center; flex-shrink: 0;
23691
+ border-right: 1.5px solid var(--stg-help); border-bottom: 1.5px solid var(--stg-help);
23692
+ transform: rotate(-45deg); transition: transform 150ms ease;
23693
+ }
23694
+ details.sched-form-section[open] > summary::before { transform: rotate(45deg); }
23695
+
23696
+ .sched-presets { display: flex; flex-direction: column; gap: 8px; }
23697
+ .sched-preset-group { display: grid; grid-template-columns: 72px minmax(0, 1fr); align-items: start; gap: 8px; }
23698
+ .sched-preset-group > span { padding-top: 3px; color: var(--stg-help); font-size: var(--fs-xs); }
23699
+ .sched-chip-list { display: flex; flex-wrap: wrap; gap: 4px; }
23700
+ .sched-chip {
23701
+ min-height: var(--sched-control-h); padding: 2px 8px; border: 1px solid var(--stg-field-line);
23702
+ border-radius: var(--sched-control-radius); background: transparent; color: var(--stg-body); cursor: pointer;
23703
+ font-family: var(--stg-font); font-size: var(--fs-xs); line-height: 1.2; white-space: nowrap;
23704
+ transition: background-color 150ms ease, color 150ms ease;
23357
23705
  }
23358
- .sched-sidebar-prompt:hover {
23359
- background: rgba(255,255,255,0.075);
23360
- border-color: rgba(255,255,255,0.14);
23361
- color: var(--t-bright);
23362
- transform: translateY(-1px);
23706
+ .sched-chip:hover { background: var(--stg-control); color: var(--stg-text); }
23707
+ .sched-chip[aria-pressed="true"] { background: var(--stg-control-hover); color: var(--stg-text); box-shadow: var(--shadow-highlight); }
23708
+ .sched-day-label { display: inline-flex; flex-direction: column; }
23709
+ .sched-day-remove { align-self: flex-start; margin-top: 3px; }
23710
+ .sched-day-remove--room { visibility: hidden; }
23711
+
23712
+ /* ── Timers ── */
23713
+ .sched-timer-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 12px; min-height: 40px; padding: 6px 0; }
23714
+ .sched-timer-row + .sched-timer-row { border-top: 1px solid var(--stg-sep); }
23715
+ .sched-timer-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-sm); color: var(--stg-text); }
23716
+ .sched-timer-meta { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-xs); color: var(--stg-help); }
23717
+ .sched-timer-count { font-family: var(--stg-mono); font-size: var(--fs-xs); font-variant-numeric: tabular-nums; color: var(--stg-text); }
23718
+ .sched-form-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
23719
+
23720
+ /* ── Activity: the latest run of each schedule ── */
23721
+ .sched-activity-btn {
23722
+ display: grid; grid-template-columns: minmax(0, 10em) minmax(0, 1fr) minmax(0, 9em) minmax(0, 8.5em) 10px;
23723
+ align-items: center; column-gap: 12px; width: 100%; min-height: 46px; padding: 6px 12px;
23724
+ border: 0; background: transparent; color: inherit; font-family: var(--stg-font); text-align: start; cursor: pointer;
23725
+ transition: background-color 120ms ease;
23726
+ }
23727
+ .sched-activity-btn:hover { background: rgba(255,255,255,0.025); }
23728
+ .sched-rows--activity .sched-row + .sched-row::before { left: 12px; }
23729
+ .sched-rows--activity .sched-row:first-child .sched-activity-btn { border-radius: var(--sched-group-radius) var(--sched-group-radius) 0 0; }
23730
+ .sched-rows--activity .sched-row:last-child .sched-activity-btn { border-radius: 0 0 var(--sched-group-radius) var(--sched-group-radius); }
23731
+ .sched-activity-btn :is(.sched-last, .sched-row-chevron) { grid-area: auto; }
23732
+ .sched-activity-main { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
23733
+ .sched-activity-when { display: flex; flex-direction: column; min-width: 0; font-size: var(--fs-xs); line-height: 1.4; }
23734
+ .sched-activity-when > span:first-child { color: var(--stg-text); }
23735
+ .sched-activity-when > span + span { color: var(--stg-help); }
23736
+
23737
+ /* ── Confirmation dialog, inside the window ── */
23738
+ .sched-dialog-layer {
23739
+ position: absolute; inset: 0; z-index: 30; display: flex; align-items: center; justify-content: center;
23740
+ padding: 12px; background: var(--s-panel); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
23741
+ }
23742
+ .sched-dialog {
23743
+ width: 420px; max-width: 100%; max-height: 100%; overflow-y: auto;
23744
+ color: var(--stg-text); background: var(--s-panel); border: 1px solid var(--fw-border);
23745
+ border-radius: var(--fw-radius); box-shadow: var(--fw-shadow);
23746
+ }
23747
+ .sched-dialog h4 { margin: 0; padding: 14px 18px 0; font-family: var(--stg-font); font-size: var(--fs-sm); font-weight: 600; line-height: 1.4; }
23748
+ .sched-dialog-body { padding: 8px 18px 2px; }
23749
+ .sched-dialog-name { margin: 0 0 6px; font-size: var(--fs-sm); line-height: 1.4; overflow-wrap: anywhere; }
23750
+ .sched-dialog-body .sched-help { max-width: 52ch; }
23751
+ .sched-dialog-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 14px 18px 16px; }
23752
+
23753
+ /* ── Narrow windows ── */
23754
+ @container sched (max-width: 780px) {
23755
+ .sched-body { grid-template-columns: minmax(0, 1fr); }
23756
+ .sched-rail { display: none; }
23757
+ .sched-narrow-nav { display: flex; align-items: center; gap: 8px; padding: 12px var(--sched-inset) 0; flex-shrink: 0; }
23758
+ .sched-narrow-nav .sched-scope-select { flex: 1 1 auto; min-width: 0; }
23759
+ .sched-footer-hint { display: none; }
23760
+ }
23761
+ @container sched (max-width: 600px) {
23762
+ .sched-main { --sched-inset: 14px; }
23763
+ .sched-view-head { padding-top: 14px; }
23764
+ .sched-toolbar { flex-wrap: wrap; }
23765
+ .sched-search { flex-basis: 100%; }
23766
+ .sched-search kbd { display: none; }
23767
+ .sched-row-line {
23768
+ grid-template-columns: 30px minmax(0, 1fr) auto 10px;
23769
+ grid-template-areas: "switch main main chev" ". next last chev";
23770
+ row-gap: 2px;
23771
+ }
23772
+ .sched-next, .sched-last { flex-direction: row; flex-wrap: wrap; column-gap: 6px; }
23773
+ .sched-last { justify-self: end; }
23774
+ .sched-row + .sched-row::before { left: 12px; }
23775
+ .sched-detail { padding-left: 14px; }
23776
+ .sched-group-meta { display: none; }
23777
+ .sched-form-row { grid-template-columns: minmax(0, 1fr); gap: 4px; }
23778
+ .sched-form-control { justify-content: flex-start; }
23779
+ .sched-activity-btn { grid-template-columns: minmax(0, 1fr) auto; row-gap: 2px; }
23780
+ .sched-activity-btn > :is(.sched-activity-next, .sched-row-chevron) { display: none; }
23781
+ }
23782
+
23783
+ /* Touch: room for a fingertip; desktop keeps the native small scale. */
23784
+ @media (pointer: coarse) {
23785
+ .schedules-studio-panel :is(.sched-btn, .sched-icon-btn, .sched-nav-item, .cc-dropdown-trigger, .sched-input, .sched-chip, .sched-group-toggle) { min-height: 44px; }
23786
+ .schedules-studio-panel .sched-icon-btn { width: 44px; }
23787
+ .schedules-studio-panel .sched-search { height: 44px; }
23788
+ .schedules-studio-panel .sched-row-line { min-height: 56px; }
23789
+ }
23790
+ @media (prefers-reduced-motion: reduce) {
23791
+ .schedules-studio-panel *, .schedules-studio-panel *::before, .schedules-studio-panel *::after { transition: none !important; animation: none !important; }
23363
23792
  }
23364
- .sched-sidebar-prompt svg { width: 13px; height: 13px; color: var(--t-muted); }
23365
23793
 
23794
+ /* ── Prompt a Schedule (modal over the window) ── */
23366
23795
  .sched-prompt-backdrop {
23367
23796
  position: fixed; inset: 0; background: rgba(5,7,12,0.58);
23368
23797
  backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px);
@@ -23491,266 +23920,6 @@
23491
23920
  color: var(--t-secondary);
23492
23921
  }
23493
23922
 
23494
- .sched-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }
23495
- .sched-tabs {
23496
- display: flex; align-items: center; gap: 4px; padding: 10px 14px 0;
23497
- border-bottom: 1px solid rgba(255,255,255,0.05);
23498
- }
23499
- .sched-tab {
23500
- min-height: 30px; padding: 6px 12px; border: 1px solid transparent;
23501
- border-bottom: 0; border-radius: 8px 8px 0 0; background: transparent;
23502
- color: var(--t-muted); font-family: inherit; font-size: 12px; font-weight: 600;
23503
- cursor: pointer; letter-spacing: 0;
23504
- }
23505
- .sched-tab:hover { color: var(--t-secondary); background: rgba(255,255,255,0.035); }
23506
- .sched-tab.active { color: var(--t-bright); background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.08); }
23507
- .sched-content {
23508
- flex: 1; min-height: 0; overflow-y: auto; padding: 14px;
23509
- display: flex; flex-direction: column; gap: 12px;
23510
- }
23511
-
23512
- .sched-stat-strip {
23513
- display: grid; grid-template-columns: repeat(3, minmax(80px, 1fr)) auto; gap: 8px;
23514
- align-items: stretch;
23515
- }
23516
- .sched-stat-strip div {
23517
- border: 1px solid rgba(255,255,255,0.07); border-radius: 8px;
23518
- background: rgba(255,255,255,0.03); padding: 9px 10px;
23519
- }
23520
- .sched-stat-strip span { display: block; color: var(--t-bright); font-size: 18px; font-weight: 700; }
23521
- .sched-stat-strip label { color: var(--t-muted); font-size: 10px; }
23522
- .sched-section-head {
23523
- display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
23524
- margin-top: 2px;
23525
- }
23526
- .sched-section-head h4 {
23527
- margin: 0; color: var(--t-bright); font-family: var(--ff-heading);
23528
- font-size: 14px; font-weight: 650; letter-spacing: 0;
23529
- }
23530
- .sched-section-head span { color: var(--t-muted); font-size: 11px; }
23531
- .sched-card-list,
23532
- .sched-group-card-list,
23533
- .sched-activity-list { display: flex; flex-direction: column; gap: 8px; }
23534
-
23535
- .sched-card {
23536
- display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px;
23537
- align-items: center; border: 1px solid rgba(255,255,255,0.075);
23538
- border-radius: 8px; background: rgba(255,255,255,0.025);
23539
- padding: 11px 12px; transition: border-color 0.15s, background 0.15s, opacity 0.15s;
23540
- }
23541
- .sched-card:hover { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.12); }
23542
- .sched-card.is-paused { opacity: 0.58; }
23543
- .sched-card.dragging { opacity: 0.42; }
23544
- .sched-card-main { min-width: 0; }
23545
- .sched-card-title-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
23546
- .sched-card h4 {
23547
- margin: 0; color: var(--t-bright); font-size: 14px; font-weight: 700;
23548
- overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: 0;
23549
- }
23550
- .sched-card-meta { margin-top: 3px; color: var(--t-secondary); font-size: 12px; line-height: 1.35; }
23551
- .sched-card-sub {
23552
- display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px;
23553
- color: var(--t-muted); font-size: 10px;
23554
- }
23555
- .sched-countdown {
23556
- font-variant-numeric: tabular-nums;
23557
- color: var(--t-secondary);
23558
- font-weight: 600;
23559
- }
23560
- .sched-card-controls { display: flex; align-items: center; gap: 5px; }
23561
- .sched-card-group-select {
23562
- width: 128px; min-height: 28px; border-radius: 7px; background: rgba(255,255,255,0.035);
23563
- border: 1px solid rgba(255,255,255,0.08); color: var(--t-secondary);
23564
- font-size: 11px; font-family: inherit; padding: 4px 8px;
23565
- }
23566
- .sched-icon-btn {
23567
- min-width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; gap: 4px;
23568
- border-radius: 7px; border: 1px solid transparent; background: transparent;
23569
- color: var(--t-dim); cursor: pointer; font-family: inherit; font-size: 11px;
23570
- }
23571
- .sched-icon-btn:hover:not(:disabled) { background: rgba(255,255,255,0.06); color: var(--t-bright); border-color: rgba(255,255,255,0.08); }
23572
- .sched-icon-btn:disabled { opacity: 0.35; cursor: default; }
23573
- .sched-icon-btn.danger:hover { color: rgba(244,67,54,0.9); border-color: rgba(244,67,54,0.22); }
23574
- .sched-badge {
23575
- font-size: 9px; font-weight: 700; padding: 2px 6px; border-radius: 5px;
23576
- text-transform: uppercase; letter-spacing: 0.04em; white-space: nowrap;
23577
- }
23578
- .sched-badge--ok { background: rgba(76,175,80,0.12); color: rgba(102,210,120,0.95); }
23579
- .sched-badge--paused { background: rgba(255,255,255,0.06); color: var(--t-muted); }
23580
- .sched-badge--error { background: rgba(244,67,54,0.12); color: rgba(244,67,54,0.95); }
23581
- .sched-empty {
23582
- border: 1px dashed rgba(255,255,255,0.09); border-radius: 8px;
23583
- color: var(--t-muted); padding: 28px; text-align: center;
23584
- }
23585
- .sched-empty .sched-primary { margin-top: 12px; }
23586
-
23587
- .sched-tool-section,
23588
- .sched-active-timers {
23589
- border: 1px solid rgba(255,255,255,0.075); border-radius: 8px;
23590
- background: rgba(255,255,255,0.025); padding: 12px;
23591
- display: flex; flex-direction: column; gap: 12px;
23592
- }
23593
- .sched-active-timers { gap: 6px; }
23594
- .sched-active-timer {
23595
- display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 10px;
23596
- border: 1px solid rgba(255,255,255,0.06); border-radius: 7px;
23597
- background: rgba(0,0,0,0.12); padding: 7px 9px;
23598
- }
23599
- .sched-active-timer span { color: var(--t-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
23600
- .sched-active-timer strong { color: var(--t-bright); font-size: 13px; font-variant-numeric: tabular-nums; }
23601
- .sched-form-grid {
23602
- display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
23603
- }
23604
- .sched-form-grid.compact { grid-template-columns: minmax(0, 1fr) 120px auto; align-items: end; }
23605
- .sched-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
23606
- .sched-field.wide { grid-column: span 2; }
23607
- .sched-field span {
23608
- color: var(--t-secondary); font-size: 11px; font-weight: 650;
23609
- }
23610
- .sched-field input,
23611
- .sched-field select,
23612
- .sched-cron-input {
23613
- width: 100%; min-height: 34px; border-radius: 7px;
23614
- border: 1px solid rgba(255,255,255,0.08); background: rgba(0,0,0,0.18);
23615
- color: var(--t-bright); font-size: 12px; font-family: inherit; padding: 7px 9px;
23616
- outline: none; letter-spacing: 0;
23617
- }
23618
- .sched-cron-input { font-family: 'SF Mono', 'Fira Code', monospace; }
23619
- .sched-field input:focus,
23620
- .sched-field select:focus,
23621
- .sched-cron-input:focus { border-color: rgba(79,195,247,0.35); }
23622
- .sched-toggle {
23623
- display: inline-flex; align-items: center; gap: 8px; min-height: 34px;
23624
- color: var(--t-secondary); font-size: 12px; cursor: pointer;
23625
- }
23626
- .sched-time-row { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
23627
- .sched-time-chip {
23628
- min-width: 46px; min-height: 30px; border-radius: 8px;
23629
- border: 1px solid rgba(255,255,255,0.08); background: rgba(255,255,255,0.035);
23630
- color: var(--t-secondary); font-family: inherit; cursor: pointer;
23631
- }
23632
- .sched-time-chip:hover,
23633
- .sched-time-chip.active { background: rgba(255,255,255,0.08); color: var(--t-bright); border-color: rgba(255,255,255,0.13); }
23634
- .sched-min-input {
23635
- width: 58px; min-height: 30px; border-radius: 8px;
23636
- border: 1px solid rgba(255,255,255,0.08); background: rgba(0,0,0,0.18);
23637
- color: var(--t-bright); padding: 5px 8px; font-family: inherit;
23638
- }
23639
- .align-end { align-self: end; }
23640
-
23641
- .sched-group-card {
23642
- display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px;
23643
- border: 1px solid rgba(255,255,255,0.075); border-radius: 8px;
23644
- background: rgba(255,255,255,0.025); padding: 11px 12px;
23645
- }
23646
- .sched-group-card.editing { border-color: rgba(255,255,255,0.15); background: rgba(255,255,255,0.04); }
23647
- .sched-group-card-main { display: flex; align-items: center; gap: 10px; min-width: 0; }
23648
- .sched-group-card-main h4 { margin: 0; color: var(--t-bright); font-size: 13px; letter-spacing: 0; }
23649
- .sched-group-card-main span:not(.sched-group-color) { color: var(--t-muted); font-size: 11px; }
23650
- .sched-group-overrides { color: var(--t-secondary); }
23651
- .sched-group-card-actions { display: flex; align-items: center; gap: 5px; }
23652
- .sched-group-editor-body { width: 100%; border-top: 1px solid rgba(255,255,255,0.075); padding-top: 10px; margin-top: 2px; }
23653
- .sched-group-editor-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 10px; }
23654
-
23655
- .sched-mutex-toggle {
23656
- display: inline-flex; align-items: center; gap: 4px; cursor: pointer;
23657
- padding: 3px 8px; border-radius: 6px; font-size: 11px;
23658
- background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
23659
- color: var(--t-muted); transition: all 0.15s;
23660
- position: relative;
23661
- }
23662
- .sched-mutex-toggle:hover { background: rgba(255,255,255,0.07); color: var(--t-secondary); }
23663
- .sched-mutex-toggle:has(input:checked) { background: rgba(255,160,0,0.12); border-color: rgba(255,160,0,0.3); color: #ffa040; }
23664
- .sched-mutex-toggle input { display: none; }
23665
- .sched-mutex-toggle.sched-mutex-create { align-self: end; margin-bottom: 2px; }
23666
- .sched-mutex-label { display: inline-flex; align-items: center; gap: 3px; pointer-events: none; }
23667
- .sched-mutex-label svg { width: 12px; height: 12px; }
23668
- .sched-mutex-toggle[data-tooltip]:hover::after {
23669
- content: attr(data-tooltip); position: absolute; bottom: calc(100% + 6px); left: 50%;
23670
- transform: translateX(-50%); white-space: normal; width: max-content; max-width: 260px;
23671
- padding: 6px 10px; border-radius: 6px; font-size: 11px; line-height: 1.35;
23672
- background: rgba(20,20,20,0.95); color: var(--t-bright); border: 1px solid rgba(255,255,255,0.1);
23673
- z-index: 100; pointer-events: none;
23674
- }
23675
-
23676
- .sched-group-mutex-icon {
23677
- display: inline-flex; align-items: center; color: #ffa040; opacity: 0.7; flex-shrink: 0;
23678
- }
23679
- .sched-group-mutex-icon svg { width: 11px; height: 11px; }
23680
- .sched-group-mutex-icon[data-tooltip] { position: relative; }
23681
- .sched-group-mutex-icon[data-tooltip]:hover::after {
23682
- content: attr(data-tooltip); position: absolute; bottom: calc(100% + 4px); right: 0;
23683
- white-space: nowrap; padding: 4px 8px; border-radius: 5px;
23684
- font-size: 10px; background: rgba(20,20,20,0.95); color: var(--t-bright);
23685
- border: 1px solid rgba(255,255,255,0.1); z-index: 100; pointer-events: none;
23686
- }
23687
-
23688
- .sched-activity-row {
23689
- display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(80px, auto) minmax(140px, auto) minmax(80px, auto);
23690
- align-items: center; gap: 10px; border: 1px solid rgba(255,255,255,0.07);
23691
- border-radius: 8px; background: rgba(255,255,255,0.025); padding: 9px 10px;
23692
- color: var(--t-secondary); font-size: 11px;
23693
- }
23694
- .sched-activity-row strong { display: block; color: var(--t-bright); font-size: 12px; }
23695
- .sched-activity-row div span { color: var(--t-muted); }
23696
-
23697
- .sched-editor { display: flex; flex-direction: column; min-height: 0; height: 100%; }
23698
- .sched-editor-head {
23699
- display: flex; align-items: center; gap: 10px; padding: 12px 14px;
23700
- border-bottom: 1px solid rgba(255,255,255,0.06);
23701
- }
23702
- .sched-editor-head h3 {
23703
- margin: 0; color: var(--t-bright); font-size: 15px; font-family: var(--ff-heading); letter-spacing: 0;
23704
- }
23705
- .sched-editor-head span { color: var(--t-muted); font-size: 11px; }
23706
- .sched-editor-body {
23707
- flex: 1; min-height: 0; overflow-y: auto; padding: 14px;
23708
- display: flex; flex-direction: column; gap: 14px;
23709
- }
23710
- .sched-editor-section {
23711
- border: 1px solid rgba(255,255,255,0.075); border-radius: 8px;
23712
- background: rgba(255,255,255,0.025); padding: 12px; display: flex; flex-direction: column; gap: 10px;
23713
- }
23714
- .sched-presets { display: flex; flex-direction: column; gap: 8px; }
23715
- .sched-preset-group { display: flex; flex-direction: column; gap: 5px; }
23716
- .sched-preset-group > span {
23717
- color: var(--t-muted); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em;
23718
- }
23719
- .sched-preset-group > div { display: flex; flex-wrap: wrap; gap: 5px; }
23720
- .sched-preset {
23721
- min-height: 26px; border-radius: 7px; border: 1px solid rgba(79,195,247,0.16);
23722
- background: rgba(79,195,247,0.06); color: rgba(150,220,255,0.92);
23723
- font-size: 11px; font-family: inherit; padding: 4px 8px; cursor: pointer;
23724
- }
23725
- .sched-preset:hover { background: rgba(79,195,247,0.12); border-color: rgba(79,195,247,0.28); }
23726
- .sched-day-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px 10px; }
23727
- .sched-day-field { display: grid; grid-template-columns: 38px minmax(0, 1fr); align-items: center; gap: 7px; }
23728
- .sched-day-field span { color: var(--t-muted); font-size: 10px; text-align: right; }
23729
- .sched-day-field input {
23730
- min-height: 30px; border-radius: 6px; border: 1px solid rgba(255,255,255,0.08);
23731
- background: rgba(0,0,0,0.18); color: var(--t-bright); font-size: 11px; padding: 6px 8px;
23732
- }
23733
- .sched-editor-actions {
23734
- display: flex; justify-content: flex-end; gap: 8px; padding: 10px 14px;
23735
- border-top: 1px solid rgba(255,255,255,0.06);
23736
- }
23737
-
23738
- @container sched (max-width: 760px) {
23739
- .sched-body { flex-direction: column; }
23740
- .sched-sidebar { width: auto; max-height: 160px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,0.06); }
23741
- .sched-sidebar-summary { display: none; }
23742
- .sched-stat-strip { grid-template-columns: repeat(3, 1fr); }
23743
- .sched-stat-strip .sched-primary { grid-column: 1 / -1; }
23744
- .sched-card { grid-template-columns: 1fr; }
23745
- .sched-card-controls { flex-wrap: wrap; }
23746
- .sched-card-group-select { width: 100%; }
23747
- .sched-form-grid,
23748
- .sched-form-grid.compact { grid-template-columns: 1fr; }
23749
- .sched-field.wide { grid-column: span 1; }
23750
- .sched-activity-row { grid-template-columns: 1fr; }
23751
- .sched-day-grid { grid-template-columns: 1fr; }
23752
- }
23753
-
23754
23923
  /* ═══════════════════════════════════════════
23755
23924
  SCHEDULE QUEUE DROPDOWN
23756
23925
  ═══════════════════════════════════════════ */
@@ -26727,7 +26896,9 @@
26727
26896
  body .term-float-tab.term-float-tab > .term-float-tab-header .term-float-tab-title { font-size: var(--fs-xs); }
26728
26897
  body :is(.sched-header-icon, .sm-header-icon, .ig-icon),
26729
26898
  body :is(.sched-header-icon, .sm-header-icon, .ig-icon) svg { width: 16px; height: 16px; }
26730
- body .sp-sidepanel.sp-floating > :is(.cp-header, .cxp-header, .ocpv2-header, .asp-header) { flex-wrap: wrap; }
26899
+ /* The Claude Code, Codex and OpenCode headers stay one row: their session name gives way
26900
+ instead (the panels' own header styles). */
26901
+ body .sp-sidepanel.sp-floating > .asp-header { flex-wrap: wrap; }
26731
26902
 
26732
26903
  body .term-float-tab-title { flex: 1 1 100px; }
26733
26904
  body .term-float-tab-actions { flex-wrap: wrap; max-width: 100%; }