synabun 2.0.9 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/README.md +25 -2
  3. package/THIRD-PARTY-LICENSES.md +68 -4
  4. package/bin/synabun.js +71 -24
  5. package/docs/whatsapp.md +2 -2
  6. package/hooks/claude-code/pre-websearch.mjs +12 -1
  7. package/hooks/claude-code/shared.mjs +5 -0
  8. package/hooks/claude-code/stop.mjs +1 -1
  9. package/launcher.mjs +9 -3
  10. package/lib/claude-hooks.js +172 -18
  11. package/lib/client-config-repair.js +17 -8
  12. package/lib/desktop-app.js +7 -1
  13. package/lib/external-tools.js +1 -1
  14. package/lib/first-launch-protection.js +57 -12
  15. package/lib/mcp-dist.js +176 -0
  16. package/lib/release-npm-ci.mjs +138 -0
  17. package/lib/release-publish.mjs +91 -0
  18. package/lib/release-scan.mjs +50 -0
  19. package/lib/server-crash-record.js +123 -0
  20. package/lib/server-exit.js +318 -0
  21. package/lib/server-supervisor.js +508 -0
  22. package/lib/start-launcher.js +43 -5
  23. package/lib/tools-cli.js +45 -0
  24. package/lib/update-snapshot.js +228 -0
  25. package/lib/virustotal.mjs +192 -0
  26. package/lib/windows-crash-event.js +269 -0
  27. package/mcp-server/dist/http.d.ts +20 -1
  28. package/mcp-server/dist/http.d.ts.map +1 -1
  29. package/mcp-server/dist/http.js +59 -12
  30. package/mcp-server/dist/http.js.map +1 -1
  31. package/mcp-server/dist/index.d.ts +33 -27
  32. package/mcp-server/dist/index.d.ts.map +1 -1
  33. package/mcp-server/dist/index.js +128 -143
  34. package/mcp-server/dist/index.js.map +1 -1
  35. package/mcp-server/dist/preload.js +1 -1
  36. package/mcp-server/dist/preload.js.map +1 -1
  37. package/mcp-server/dist/services/codex-config-heal.d.ts +6 -2
  38. package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
  39. package/mcp-server/dist/services/codex-config-heal.js +81 -28
  40. package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
  41. package/mcp-server/dist/services/memory-judge-backfill.d.ts +6 -0
  42. package/mcp-server/dist/services/memory-judge-backfill.d.ts.map +1 -1
  43. package/mcp-server/dist/services/memory-judge-backfill.js +7 -1
  44. package/mcp-server/dist/services/memory-judge-backfill.js.map +1 -1
  45. package/mcp-server/dist/services/neural-interface.d.ts +16 -10
  46. package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
  47. package/mcp-server/dist/services/neural-interface.js +67 -11
  48. package/mcp-server/dist/services/neural-interface.js.map +1 -1
  49. package/mcp-server/dist/services/server-instructions.d.ts +7 -2
  50. package/mcp-server/dist/services/server-instructions.d.ts.map +1 -1
  51. package/mcp-server/dist/services/server-instructions.js +20 -62
  52. package/mcp-server/dist/services/server-instructions.js.map +1 -1
  53. package/mcp-server/dist/services/tool-catalog.d.ts +120 -0
  54. package/mcp-server/dist/services/tool-catalog.d.ts.map +1 -0
  55. package/mcp-server/dist/services/tool-catalog.js +339 -0
  56. package/mcp-server/dist/services/tool-catalog.js.map +1 -0
  57. package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts +12 -0
  58. package/mcp-server/dist/services/tool-list-refresh-barrier.d.ts.map +1 -0
  59. package/mcp-server/dist/services/tool-list-refresh-barrier.js +40 -0
  60. package/mcp-server/dist/services/tool-list-refresh-barrier.js.map +1 -0
  61. package/mcp-server/dist/services/tool-list.d.ts +108 -0
  62. package/mcp-server/dist/services/tool-list.d.ts.map +1 -0
  63. package/mcp-server/dist/services/tool-list.js +334 -0
  64. package/mcp-server/dist/services/tool-list.js.map +1 -0
  65. package/mcp-server/dist/services/tool-runtime.d.ts +161 -0
  66. package/mcp-server/dist/services/tool-runtime.d.ts.map +1 -0
  67. package/mcp-server/dist/services/tool-runtime.js +400 -0
  68. package/mcp-server/dist/services/tool-runtime.js.map +1 -0
  69. package/mcp-server/dist/services/whiteboard-geometry.d.ts +26 -2
  70. package/mcp-server/dist/services/whiteboard-geometry.d.ts.map +1 -1
  71. package/mcp-server/dist/services/whiteboard-geometry.js +91 -8
  72. package/mcp-server/dist/services/whiteboard-geometry.js.map +1 -1
  73. package/mcp-server/dist/tools/agents.d.ts +10 -10
  74. package/mcp-server/dist/tools/agents.d.ts.map +1 -1
  75. package/mcp-server/dist/tools/agents.js +22 -13
  76. package/mcp-server/dist/tools/agents.js.map +1 -1
  77. package/mcp-server/dist/tools/browser-batch.d.ts +3 -3
  78. package/mcp-server/dist/tools/image-tools.d.ts +1 -1
  79. package/mcp-server/dist/tools/image-tools.js +1 -1
  80. package/mcp-server/dist/tools/skill-tools.d.ts +505 -0
  81. package/mcp-server/dist/tools/skill-tools.d.ts.map +1 -0
  82. package/mcp-server/dist/tools/skill-tools.js +639 -0
  83. package/mcp-server/dist/tools/skill-tools.js.map +1 -0
  84. package/mcp-server/dist/tools/skill.d.ts +7 -0
  85. package/mcp-server/dist/tools/skill.d.ts.map +1 -0
  86. package/mcp-server/dist/tools/skill.js +11 -0
  87. package/mcp-server/dist/tools/skill.js.map +1 -0
  88. package/mcp-server/dist/tools/tool-groups.d.ts +68 -0
  89. package/mcp-server/dist/tools/tool-groups.d.ts.map +1 -0
  90. package/mcp-server/dist/tools/tool-groups.js +147 -0
  91. package/mcp-server/dist/tools/tool-groups.js.map +1 -0
  92. package/mcp-server/dist/tools/whiteboard-format.d.ts.map +1 -1
  93. package/mcp-server/dist/tools/whiteboard-format.js +7 -4
  94. package/mcp-server/dist/tools/whiteboard-format.js.map +1 -1
  95. package/mcp-server/dist/tools/whiteboard-tools.d.ts +64 -13
  96. package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
  97. package/mcp-server/dist/tools/whiteboard-tools.js +30 -5
  98. package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
  99. package/mcp-server/package-lock.json +2 -2
  100. package/mcp-server/package.json +1 -1
  101. package/mcp-server/src/http.ts +75 -12
  102. package/mcp-server/src/index.ts +147 -154
  103. package/mcp-server/src/preload.ts +12 -12
  104. package/mcp-server/src/services/codex-config-heal.ts +80 -29
  105. package/mcp-server/src/services/memory-judge-backfill.ts +7 -1
  106. package/mcp-server/src/services/neural-interface.ts +79 -20
  107. package/mcp-server/src/services/server-instructions.ts +27 -63
  108. package/mcp-server/src/services/tool-catalog.ts +403 -0
  109. package/mcp-server/src/services/tool-list-refresh-barrier.ts +33 -0
  110. package/mcp-server/src/services/tool-list.ts +410 -0
  111. package/mcp-server/src/services/tool-runtime.ts +457 -0
  112. package/mcp-server/src/services/whiteboard-geometry.ts +94 -9
  113. package/mcp-server/src/tools/agents.ts +22 -14
  114. package/mcp-server/src/tools/image-tools.ts +1 -1
  115. package/mcp-server/src/tools/skill-tools.ts +589 -0
  116. package/mcp-server/src/tools/skill.ts +13 -0
  117. package/mcp-server/src/tools/tool-groups.ts +164 -0
  118. package/mcp-server/src/tools/whiteboard-format.ts +9 -3
  119. package/mcp-server/src/tools/whiteboard-tools.ts +39 -5
  120. package/neural-interface/i18n/en.json +3680 -206
  121. package/neural-interface/i18n/pt-BR.json +3628 -157
  122. package/neural-interface/lib/account-usage.js +5 -3
  123. package/neural-interface/lib/app-controls-api.js +161 -0
  124. package/neural-interface/lib/assistant-api.js +148 -35
  125. package/neural-interface/lib/assistant-brains/claude.js +4 -3
  126. package/neural-interface/lib/assistant-brains/codex-browser-policy-hook.mjs +12 -2
  127. package/neural-interface/lib/assistant-brains/codex-route-gate-hook.mjs +32 -9
  128. package/neural-interface/lib/assistant-brains/codex.js +9 -5
  129. package/neural-interface/lib/assistant-brains/opencode.js +122 -44
  130. package/neural-interface/lib/assistant-brains/opencode2-browser-policy/index.js +59 -0
  131. package/neural-interface/lib/assistant-brains/opencode2-route-gate/index.js +97 -0
  132. package/neural-interface/lib/assistant-catalog.js +23 -9
  133. package/neural-interface/lib/assistant-dispatch.js +874 -156
  134. package/neural-interface/lib/assistant-envelope.js +22 -2
  135. package/neural-interface/lib/assistant-persona.js +80 -11
  136. package/neural-interface/lib/assistant-plan-permissions.js +10 -9
  137. package/neural-interface/lib/assistant-route-gate-codex.js +3 -0
  138. package/neural-interface/lib/assistant-route-gate.js +6 -4
  139. package/neural-interface/lib/assistant-router.js +13 -8
  140. package/neural-interface/lib/assistant-runtime.js +183 -26
  141. package/neural-interface/lib/assistant-task-prompt.js +78 -14
  142. package/neural-interface/lib/assistant-tools.js +51 -0
  143. package/neural-interface/lib/backup-service.js +620 -3
  144. package/neural-interface/lib/backup-zip-reader.js +10 -5
  145. package/neural-interface/lib/backup-zip-writer.js +257 -0
  146. package/neural-interface/lib/browser-execution.js +10 -2
  147. package/neural-interface/lib/browser-guard-cdp.js +83 -0
  148. package/neural-interface/lib/browser-network-guard.js +284 -0
  149. package/neural-interface/lib/browser-policy-roots.js +64 -0
  150. package/neural-interface/lib/browser-tool-policy.js +186 -31
  151. package/neural-interface/lib/claude-agent-bridge.js +4 -2
  152. package/neural-interface/lib/claude-hooks-status.js +103 -0
  153. package/neural-interface/lib/claude-model-catalog.js +64 -14
  154. package/neural-interface/lib/claude-temporary.js +5 -11
  155. package/neural-interface/lib/cli-install.js +18 -138
  156. package/neural-interface/lib/cli-resolver.js +4 -1
  157. package/neural-interface/lib/cli-update-planner.js +32 -31
  158. package/neural-interface/lib/cloudflared/tunnel.js +42 -2
  159. package/neural-interface/lib/codex-mcp-approvals.js +11 -0
  160. package/neural-interface/lib/codex-settings-schema.js +109 -47
  161. package/neural-interface/lib/codex-worker-app-server.js +172 -0
  162. package/neural-interface/lib/confined-fs.js +30 -3
  163. package/neural-interface/lib/crash-notice-api.js +98 -0
  164. package/neural-interface/lib/editor-completion-opencode.js +164 -67
  165. package/neural-interface/lib/exec-loop-command.js +4 -1
  166. package/neural-interface/lib/http-guards.js +8 -2
  167. package/neural-interface/lib/install-details.js +4 -1
  168. package/neural-interface/lib/launch-cache.js +293 -0
  169. package/neural-interface/lib/login-start.js +524 -0
  170. package/neural-interface/lib/mcp-agent-servers.js +67 -0
  171. package/neural-interface/lib/mcp-client-config.js +0 -29
  172. package/neural-interface/lib/mcp-external-servers.js +323 -0
  173. package/neural-interface/lib/{mcp-profile-refresh-coordinator.js → mcp-tools-refresh-coordinator.js} +4 -4
  174. package/neural-interface/lib/morelogin.js +30 -0
  175. package/neural-interface/lib/native-loop-providers.js +565 -50
  176. package/neural-interface/lib/native-loop-runtime.js +287 -41
  177. package/neural-interface/lib/opencode-config.js +557 -0
  178. package/neural-interface/lib/opencode-db-schema.js +58 -0
  179. package/neural-interface/lib/opencode-history.js +49 -204
  180. package/neural-interface/lib/opencode-mcp-ready.js +108 -0
  181. package/neural-interface/lib/opencode-native-boundary.js +44 -0
  182. package/neural-interface/lib/opencode-protocol.js +310 -0
  183. package/neural-interface/lib/opencode-provider-view.js +81 -0
  184. package/neural-interface/lib/opencode-runtime-config.js +32 -15
  185. package/neural-interface/lib/opencode-serve-records.js +624 -0
  186. package/neural-interface/lib/opencode-v2-client.js +53 -131
  187. package/neural-interface/lib/opencode-v2-ws-requests.js +35 -195
  188. package/neural-interface/lib/opencode-worker-activity.js +229 -0
  189. package/neural-interface/lib/opencode-worker-data.js +27 -0
  190. package/neural-interface/lib/opencode2-client.js +796 -0
  191. package/neural-interface/lib/opencode2-proxy.js +76 -0
  192. package/neural-interface/lib/opencode2-translate.js +1057 -0
  193. package/neural-interface/lib/owner-authority.js +249 -0
  194. package/neural-interface/lib/page-session.js +275 -0
  195. package/neural-interface/lib/peer-identity.js +763 -0
  196. package/neural-interface/lib/process-identity.js +361 -0
  197. package/neural-interface/lib/request-gate.js +17 -2
  198. package/neural-interface/lib/rulesets/api.js +1 -1
  199. package/neural-interface/lib/rulesets/fs-safe.js +1 -1
  200. package/neural-interface/lib/rulesets/installer.js +92 -27
  201. package/neural-interface/lib/rulesets/json-edit.js +1 -1
  202. package/neural-interface/lib/session-cache-builder.js +18 -10
  203. package/neural-interface/lib/session-title-generator.js +58 -18
  204. package/neural-interface/lib/skills/api-v2.js +495 -0
  205. package/neural-interface/lib/skills/bundle.js +418 -0
  206. package/neural-interface/lib/skills/catalog.js +294 -0
  207. package/neural-interface/lib/skills/creation-api.js +191 -0
  208. package/neural-interface/lib/skills/creation-brief.js +247 -0
  209. package/neural-interface/lib/skills/creation-sources.js +267 -0
  210. package/neural-interface/lib/skills/creation.js +843 -0
  211. package/neural-interface/lib/skills/deploy.js +564 -0
  212. package/neural-interface/lib/skills/digest.js +119 -0
  213. package/neural-interface/lib/skills/discover.js +111 -0
  214. package/neural-interface/lib/skills/draft-confinement.js +214 -0
  215. package/neural-interface/lib/skills/eval-confinement.js +397 -0
  216. package/neural-interface/lib/skills/eval-sandbox.js +280 -0
  217. package/neural-interface/lib/skills/eval-trace.js +119 -0
  218. package/neural-interface/lib/skills/evals-api.js +212 -0
  219. package/neural-interface/lib/skills/evals.js +1573 -0
  220. package/neural-interface/lib/skills/export.js +200 -0
  221. package/neural-interface/lib/skills/frontmatter.js +64 -0
  222. package/neural-interface/lib/skills/health.js +75 -0
  223. package/neural-interface/lib/skills/json-edit.js +165 -0
  224. package/neural-interface/lib/skills/known-bridge-digests.json +387 -0
  225. package/neural-interface/lib/skills/known-bridges.js +96 -0
  226. package/neural-interface/lib/skills/library.js +823 -0
  227. package/neural-interface/lib/skills/local-store.js +21 -0
  228. package/neural-interface/lib/skills/migration.js +433 -0
  229. package/neural-interface/lib/skills/operations.js +45 -0
  230. package/neural-interface/lib/skills/ownership.js +427 -0
  231. package/neural-interface/lib/skills/packages.js +88 -0
  232. package/neural-interface/lib/skills/reviews.js +212 -0
  233. package/neural-interface/lib/skills/revision.js +80 -0
  234. package/neural-interface/lib/skills/roots.js +262 -0
  235. package/neural-interface/lib/skills/runtime-checks.js +355 -0
  236. package/neural-interface/lib/skills/scan-assets.js +252 -0
  237. package/neural-interface/lib/skills/scan-context.js +26 -0
  238. package/neural-interface/lib/skills/scan-shell.js +324 -0
  239. package/neural-interface/lib/skills/scan.js +364 -0
  240. package/neural-interface/lib/skills/scanners.js +54 -0
  241. package/neural-interface/lib/skills/service.js +522 -0
  242. package/neural-interface/lib/skills/telemetry.js +113 -0
  243. package/neural-interface/lib/sqlite-integrity-worker.js +22 -0
  244. package/neural-interface/lib/style-guide/api.js +4 -3
  245. package/neural-interface/lib/tool-lists.js +124 -0
  246. package/neural-interface/lib/untrusted-file-headers.js +27 -0
  247. package/neural-interface/lib/whatsapp/bridge.js +6 -3
  248. package/neural-interface/lib/worker-confinement.js +1192 -0
  249. package/neural-interface/lib/worker-guard-setting.js +56 -0
  250. package/neural-interface/lib/worker-mcp-channel.js +175 -0
  251. package/neural-interface/lib/worker-relay-ports.js +227 -0
  252. package/neural-interface/lib/worker-resume.js +229 -0
  253. package/neural-interface/lib/worker-sandbox.js +299 -0
  254. package/neural-interface/package-lock.json +1354 -50
  255. package/neural-interface/package.json +6 -2
  256. package/neural-interface/public/index.html +5 -3
  257. package/neural-interface/public/index2d.html +19 -11
  258. package/neural-interface/public/onboarding.html +2 -2
  259. package/neural-interface/public/shared/account-menu.js +8 -5
  260. package/neural-interface/public/shared/agent-runtime-options.js +76 -16
  261. package/neural-interface/public/shared/api.js +1527 -1336
  262. package/neural-interface/public/shared/app-frame.js +192 -0
  263. package/neural-interface/public/shared/assistant/asst-agents-dock.js +205 -19
  264. package/neural-interface/public/shared/assistant/asst-api.js +11 -3
  265. package/neural-interface/public/shared/assistant/asst-ask-styles.js +270 -0
  266. package/neural-interface/public/shared/assistant/asst-ask-tail.js +118 -0
  267. package/neural-interface/public/shared/assistant/asst-ask.js +397 -0
  268. package/neural-interface/public/shared/assistant/asst-brain-picker.js +241 -112
  269. package/neural-interface/public/shared/assistant/asst-composer.js +1 -1
  270. package/neural-interface/public/shared/assistant/asst-control.js +157 -26
  271. package/neural-interface/public/shared/assistant/asst-followups-card.js +383 -0
  272. package/neural-interface/public/shared/assistant/asst-followups.js +417 -0
  273. package/neural-interface/public/shared/assistant/asst-hosts.js +49 -2
  274. package/neural-interface/public/shared/assistant/asst-limit-dock.js +40 -0
  275. package/neural-interface/public/shared/assistant/asst-limit-wait.js +294 -0
  276. package/neural-interface/public/shared/assistant/asst-limit.js +168 -0
  277. package/neural-interface/public/shared/assistant/asst-mascot.js +49 -12
  278. package/neural-interface/public/shared/assistant/asst-menu.js +84 -12
  279. package/neural-interface/public/shared/assistant/asst-panel.js +303 -44
  280. package/neural-interface/public/shared/assistant/asst-rack-styles.js +93 -58
  281. package/neural-interface/public/shared/assistant/asst-redact.js +186 -0
  282. package/neural-interface/public/shared/assistant/asst-render.js +770 -100
  283. package/neural-interface/public/shared/assistant/asst-route.js +83 -12
  284. package/neural-interface/public/shared/assistant/asst-run-stage.js +231 -0
  285. package/neural-interface/public/shared/assistant/asst-sanitize.js +193 -3
  286. package/neural-interface/public/shared/assistant/asst-scene-styles.js +273 -0
  287. package/neural-interface/public/shared/assistant/asst-scenes.js +530 -0
  288. package/neural-interface/public/shared/assistant/asst-sidepanel-styles.js +3 -15
  289. package/neural-interface/public/shared/assistant/asst-sidepanel.js +67 -4
  290. package/neural-interface/public/shared/assistant/asst-slash.js +9 -7
  291. package/neural-interface/public/shared/assistant/asst-state.js +25 -15
  292. package/neural-interface/public/shared/assistant/asst-stop.js +127 -0
  293. package/neural-interface/public/shared/assistant/asst-styles.js +102 -21
  294. package/neural-interface/public/shared/assistant/asst-tool-kinds.js +165 -13
  295. package/neural-interface/public/shared/automation-context.js +5 -2
  296. package/neural-interface/public/shared/cc-dropdown.js +550 -0
  297. package/neural-interface/public/shared/cdx/cdx-context-menu.js +10 -9
  298. package/neural-interface/public/shared/cdx/cdx-copy.js +16 -0
  299. package/neural-interface/public/shared/cdx/cdx-output-model.js +22 -1
  300. package/neural-interface/public/shared/cdx/cdx-output.js +8 -7
  301. package/neural-interface/public/shared/cdx/cdx-panel.js +58 -150
  302. package/neural-interface/public/shared/cdx/cdx-protocol.js +28 -1
  303. package/neural-interface/public/shared/cdx/cdx-render.js +62 -32
  304. package/neural-interface/public/shared/cdx/cdx-requests.js +3 -3
  305. package/neural-interface/public/shared/cdx/cdx-skill-hints.js +54 -0
  306. package/neural-interface/public/shared/cdx/cdx-styles.js +15 -3
  307. package/neural-interface/public/shared/cdx/cdx-tabs.js +201 -74
  308. package/neural-interface/public/shared/cdx/cdx-ws.js +0 -1
  309. package/neural-interface/public/shared/cli-install-view.js +4 -8
  310. package/neural-interface/public/shared/cli-status.js +2 -2
  311. package/neural-interface/public/shared/constants.js +2 -2
  312. package/neural-interface/public/shared/context-menu-areas.js +34 -0
  313. package/neural-interface/public/shared/context-menu-logic.js +243 -0
  314. package/neural-interface/public/shared/context-menu-model.js +366 -0
  315. package/neural-interface/public/shared/context-menu.js +372 -0
  316. package/neural-interface/public/shared/cp/cp-context-menu.js +10 -9
  317. package/neural-interface/public/shared/cp/cp-markdown.js +4 -57
  318. package/neural-interface/public/shared/crash-notice-view.js +168 -0
  319. package/neural-interface/public/shared/data-cache.js +223 -0
  320. package/neural-interface/public/shared/desktop-bridge.js +11 -0
  321. package/neural-interface/public/shared/desktop-titlebar-view.js +78 -1
  322. package/neural-interface/public/shared/desktop-titlebar.js +214 -28
  323. package/neural-interface/public/shared/desktop-update-view.js +35 -5
  324. package/neural-interface/public/shared/editor/editor-panel-logic.js +2 -2
  325. package/neural-interface/public/shared/file-links.js +73 -8
  326. package/neural-interface/public/shared/html-shell.js +78 -86
  327. package/neural-interface/public/shared/i18n.js +2 -0
  328. package/neural-interface/public/shared/launch-prefetch.js +59 -0
  329. package/neural-interface/public/shared/ocp-v2/ocp-v2-approvals.js +7 -7
  330. package/neural-interface/public/shared/ocp-v2/ocp-v2-binding.js +4 -4
  331. package/neural-interface/public/shared/ocp-v2/ocp-v2-caps.js +3 -2
  332. package/neural-interface/public/shared/ocp-v2/ocp-v2-changes-logic.js +3 -101
  333. package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +9 -2
  334. package/neural-interface/public/shared/ocp-v2/ocp-v2-compact-button.js +1 -3
  335. package/neural-interface/public/shared/ocp-v2/ocp-v2-composer-logic.js +2 -6
  336. package/neural-interface/public/shared/ocp-v2/ocp-v2-context-menu.js +11 -11
  337. package/neural-interface/public/shared/ocp-v2/ocp-v2-context-model.js +0 -3
  338. package/neural-interface/public/shared/ocp-v2/ocp-v2-events.js +8 -4
  339. package/neural-interface/public/shared/ocp-v2/ocp-v2-manager.js +7 -7
  340. package/neural-interface/public/shared/ocp-v2/ocp-v2-modelpicker.js +54 -17
  341. package/neural-interface/public/shared/ocp-v2/ocp-v2-outcome-notifications.js +16 -0
  342. package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +140 -254
  343. package/neural-interface/public/shared/ocp-v2/ocp-v2-plan.js +1 -2
  344. package/neural-interface/public/shared/ocp-v2/ocp-v2-projectbar.js +97 -203
  345. package/neural-interface/public/shared/ocp-v2/ocp-v2-providers.js +11 -9
  346. package/neural-interface/public/shared/ocp-v2/ocp-v2-rehydrate.js +15 -4
  347. package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -22
  348. package/neural-interface/public/shared/ocp-v2/ocp-v2-send-logic.js +401 -0
  349. package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +20 -13
  350. package/neural-interface/public/shared/ocp-v2/ocp-v2-session-actions.js +8 -61
  351. package/neural-interface/public/shared/ocp-v2/ocp-v2-sessions-logic.js +53 -82
  352. package/neural-interface/public/shared/ocp-v2/ocp-v2-slash-hints.js +16 -15
  353. package/neural-interface/public/shared/ocp-v2/ocp-v2-state.js +8 -21
  354. package/neural-interface/public/shared/ocp-v2/ocp-v2-status-logic.js +1 -99
  355. package/neural-interface/public/shared/ocp-v2/ocp-v2-status.js +5 -35
  356. package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +48 -40
  357. package/neural-interface/public/shared/ocp-v2/{ocp-v2-profile-inheritance.js → ocp-v2-tools-inheritance.js} +16 -16
  358. package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +205 -62
  359. package/neural-interface/public/shared/opencode-providers.js +39 -0
  360. package/neural-interface/public/shared/page-session.js +96 -0
  361. package/neural-interface/public/shared/registry.js +5 -3
  362. package/neural-interface/public/shared/retired-2d.js +3 -0
  363. package/neural-interface/public/shared/schedules-view.js +452 -0
  364. package/neural-interface/public/shared/settings/settings-app-pane.js +335 -0
  365. package/neural-interface/public/shared/settings/settings-app.js +243 -0
  366. package/neural-interface/public/shared/settings/settings-claude-hooks.js +135 -0
  367. package/neural-interface/public/shared/settings/settings-data.js +90 -0
  368. package/neural-interface/public/shared/settings/settings-ia.js +23 -6
  369. package/neural-interface/public/shared/settings/settings-opencode.js +89 -0
  370. package/neural-interface/public/shared/settings/settings-skill-folders-pane.js +265 -0
  371. package/neural-interface/public/shared/settings/settings-skill-folders.js +130 -0
  372. package/neural-interface/public/shared/settings/settings-worker-guard.js +72 -0
  373. package/neural-interface/public/shared/sidepanel-session-status.js +49 -0
  374. package/neural-interface/public/shared/skills/ss-args.js +96 -0
  375. package/neural-interface/public/shared/skills/ss-creation.js +219 -0
  376. package/neural-interface/public/shared/skills/ss-dialog.js +130 -0
  377. package/neural-interface/public/shared/skills/ss-doc.js +173 -0
  378. package/neural-interface/public/shared/skills/ss-eval-adapters.js +269 -0
  379. package/neural-interface/public/shared/skills/ss-eval-grade.js +359 -0
  380. package/neural-interface/public/shared/skills/ss-eval-optimise.js +153 -0
  381. package/neural-interface/public/shared/skills/ss-eval-plan.js +315 -0
  382. package/neural-interface/public/shared/skills/ss-evals.js +417 -0
  383. package/neural-interface/public/shared/skills/ss-form.js +159 -0
  384. package/neural-interface/public/shared/skills/ss-frontmatter.js +376 -0
  385. package/neural-interface/public/shared/skills/ss-ids.js +32 -0
  386. package/neural-interface/public/shared/skills/ss-lint.js +141 -0
  387. package/neural-interface/public/shared/skills/ss-presets.js +117 -0
  388. package/neural-interface/public/shared/skills/ss-profiles.js +475 -0
  389. package/neural-interface/public/shared/skills/ss-resources.js +165 -0
  390. package/neural-interface/public/shared/skills/ss-review-view.js +190 -0
  391. package/neural-interface/public/shared/skills/ss-tabs.js +79 -0
  392. package/neural-interface/public/shared/skills/ss-unicode.js +135 -0
  393. package/neural-interface/public/shared/skills/studio/sx-actions.js +222 -0
  394. package/neural-interface/public/shared/skills/studio/sx-cm.js +101 -0
  395. package/neural-interface/public/shared/skills/studio/sx-create-ai-view.js +749 -0
  396. package/neural-interface/public/shared/skills/studio/sx-create-ai.js +236 -0
  397. package/neural-interface/public/shared/skills/studio/sx-create-view.js +254 -0
  398. package/neural-interface/public/shared/skills/studio/sx-create.js +126 -0
  399. package/neural-interface/public/shared/skills/studio/sx-diff-view.js +43 -0
  400. package/neural-interface/public/shared/skills/studio/sx-diff.js +133 -0
  401. package/neural-interface/public/shared/skills/studio/sx-docs.js +480 -0
  402. package/neural-interface/public/shared/skills/studio/sx-dom.js +229 -0
  403. package/neural-interface/public/shared/skills/studio/sx-edit-view.js +848 -0
  404. package/neural-interface/public/shared/skills/studio/sx-editor-model.js +193 -0
  405. package/neural-interface/public/shared/skills/studio/sx-errors.js +22 -0
  406. package/neural-interface/public/shared/skills/studio/sx-geometry.js +82 -0
  407. package/neural-interface/public/shared/skills/studio/sx-import.js +262 -0
  408. package/neural-interface/public/shared/skills/studio/sx-inspector.js +308 -0
  409. package/neural-interface/public/shared/skills/studio/sx-install-flow.js +279 -0
  410. package/neural-interface/public/shared/skills/studio/sx-install.js +296 -0
  411. package/neural-interface/public/shared/skills/studio/sx-library-view.js +639 -0
  412. package/neural-interface/public/shared/skills/studio/sx-library.js +475 -0
  413. package/neural-interface/public/shared/skills/studio/sx-main.js +681 -0
  414. package/neural-interface/public/shared/skills/studio/sx-operations-view.js +98 -0
  415. package/neural-interface/public/shared/skills/studio/sx-operations.js +11 -0
  416. package/neural-interface/public/shared/skills/studio/sx-plan.js +158 -0
  417. package/neural-interface/public/shared/skills/studio/sx-publish-view.js +621 -0
  418. package/neural-interface/public/shared/skills/studio/sx-review-view.js +369 -0
  419. package/neural-interface/public/shared/skills/studio/sx-review.js +148 -0
  420. package/neural-interface/public/shared/skills/studio/sx-scan.js +35 -0
  421. package/neural-interface/public/shared/skills/studio/sx-snippets.js +96 -0
  422. package/neural-interface/public/shared/skills/studio/sx-subject.js +248 -0
  423. package/neural-interface/public/shared/skills/studio/sx-test-view.js +994 -0
  424. package/neural-interface/public/shared/skills/studio/sx-test.js +328 -0
  425. package/neural-interface/public/shared/skills/studio/sx-versions-view.js +241 -0
  426. package/neural-interface/public/shared/skills/studio/sx-workspace-view.js +425 -0
  427. package/neural-interface/public/shared/styleguide/sg-panel.js +4 -2
  428. package/neural-interface/public/shared/styles.css +2065 -2150
  429. package/neural-interface/public/shared/synabun-mascot.js +1115 -9
  430. package/neural-interface/public/shared/tool-list-picker.js +55 -0
  431. package/neural-interface/public/shared/tool-list-storage.js +24 -0
  432. package/neural-interface/public/shared/tool-list-view.js +112 -0
  433. package/neural-interface/public/shared/tour/tour-actor.js +268 -0
  434. package/neural-interface/public/shared/tour/tour-beats.js +336 -0
  435. package/neural-interface/public/shared/tour/tour-engine.js +884 -0
  436. package/neural-interface/public/shared/tour/tour-ink.js +390 -0
  437. package/neural-interface/public/shared/tour/tour-stage.js +440 -0
  438. package/neural-interface/public/shared/tour/tour-state.js +40 -0
  439. package/neural-interface/public/shared/tour/tour-tips.js +99 -0
  440. package/neural-interface/public/shared/tour/tour.css +144 -0
  441. package/neural-interface/public/shared/ui-assistant.js +27 -5
  442. package/neural-interface/public/shared/ui-automation-studio.js +155 -152
  443. package/neural-interface/public/shared/ui-bookmarks.js +2 -1
  444. package/neural-interface/public/shared/ui-claude-panel.js +153 -13
  445. package/neural-interface/public/shared/ui-codex-panel.js +1 -0
  446. package/neural-interface/public/shared/ui-command-runner.js +6 -3
  447. package/neural-interface/public/shared/ui-context-menu.js +295 -0
  448. package/neural-interface/public/shared/ui-cost-widget.js +57 -59
  449. package/neural-interface/public/shared/ui-crash-notice.js +187 -0
  450. package/neural-interface/public/shared/ui-detail.js +21 -9
  451. package/neural-interface/public/shared/ui-file-links.js +1 -0
  452. package/neural-interface/public/shared/ui-image-gallery.js +56 -52
  453. package/neural-interface/public/shared/ui-invite.js +18 -2
  454. package/neural-interface/public/shared/ui-keybinds.js +26 -1
  455. package/neural-interface/public/shared/ui-link.js +9 -9
  456. package/neural-interface/public/shared/ui-menubar.js +229 -40
  457. package/neural-interface/public/shared/ui-native-loop-router-state.js +5 -0
  458. package/neural-interface/public/shared/ui-native-loop-router.js +9 -1
  459. package/neural-interface/public/shared/ui-navbar.js +4 -24
  460. package/neural-interface/public/shared/ui-opencode-panel-v2.js +1 -0
  461. package/neural-interface/public/shared/ui-panels.js +96 -65
  462. package/neural-interface/public/shared/ui-schedules-studio.js +2267 -953
  463. package/neural-interface/public/shared/ui-sessions.js +20 -7
  464. package/neural-interface/public/shared/ui-settings.js +679 -496
  465. package/neural-interface/public/shared/ui-sidebar.js +4 -4
  466. package/neural-interface/public/shared/ui-sidepanel-session-entry.js +13 -0
  467. package/neural-interface/public/shared/ui-sidepanel-sessions.js +56 -5
  468. package/neural-interface/public/shared/ui-sidepanel-state.js +23 -12
  469. package/neural-interface/public/shared/ui-sidepanel-tray.js +84 -8
  470. package/neural-interface/public/shared/ui-sidepanel-windows.js +16 -11
  471. package/neural-interface/public/shared/ui-skills.js +42 -2781
  472. package/neural-interface/public/shared/ui-styleguide.js +5 -2
  473. package/neural-interface/public/shared/ui-sync.js +22 -5
  474. package/neural-interface/public/shared/ui-terminal.js +159 -199
  475. package/neural-interface/public/shared/ui-tool-updates.js +3 -1
  476. package/neural-interface/public/shared/ui-tooltip.js +10 -5
  477. package/neural-interface/public/shared/ui-trash.js +14 -5
  478. package/neural-interface/public/shared/ui-tutorial-layout.js +3 -117
  479. package/neural-interface/public/shared/ui-tutorial-preview.js +103 -0
  480. package/neural-interface/public/shared/ui-tutorial-steps.js +3 -61
  481. package/neural-interface/public/shared/ui-tutorial.css +47 -100
  482. package/neural-interface/public/shared/ui-tutorial.js +285 -499
  483. package/neural-interface/public/shared/ui-update.js +121 -16
  484. package/neural-interface/public/shared/ui-whiteboard.js +313 -59
  485. package/neural-interface/public/shared/ui-worker-end.js +4 -0
  486. package/neural-interface/public/shared/ui-workspaces.js +3 -2
  487. package/neural-interface/public/shared/view-variant.js +66 -0
  488. package/neural-interface/public/shared/whatsapp/wa-view.js +1 -1
  489. package/neural-interface/public/shared/whiteboard-list.js +172 -0
  490. package/neural-interface/public/shared/worker-end.js +10 -3
  491. package/neural-interface/public/shared/worker-restart.js +12 -0
  492. package/neural-interface/public/sidepanel-session.html +1 -1
  493. package/neural-interface/public/variant/2d/background.js +2 -1
  494. package/neural-interface/public/variant/2d/context-menu.js +8 -2
  495. package/neural-interface/public/variant/2d/graph.js +42 -20
  496. package/neural-interface/public/variant/2d/hulls.js +14 -9
  497. package/neural-interface/public/variant/2d/lasso.js +11 -7
  498. package/neural-interface/public/variant/2d/main.js +36 -2
  499. package/neural-interface/public/variant/2d/minimap.js +11 -13
  500. package/neural-interface/public/variant/3d/main.js +72 -6
  501. package/neural-interface/public/variant/3d/map-controls.js +24 -9
  502. package/neural-interface/public/vendor/caveat/OFL.txt +93 -0
  503. package/neural-interface/public/vendor/caveat/caveat-latin-400-normal.woff2 +0 -0
  504. package/neural-interface/public/vendor/caveat/caveat-latin-700-normal.woff2 +0 -0
  505. package/neural-interface/public/vendor/caveat/caveat.css +17 -0
  506. package/neural-interface/public/vendor/caveat/manifest.json +12 -0
  507. package/neural-interface/public/vendor/highlight/LICENSE +29 -0
  508. package/neural-interface/public/vendor/highlight/github-dark-dimmed-11.12.0.min.css +9 -0
  509. package/neural-interface/public/vendor/highlight/highlight-11.12.0.min.js +1262 -0
  510. package/neural-interface/public/vendor/highlight/manifest.json +5 -0
  511. package/neural-interface/public/vendor/html2canvas/LICENSE +22 -0
  512. package/neural-interface/public/vendor/html2canvas/html2canvas-1.4.1.min.js +20 -0
  513. package/neural-interface/public/vendor/html2canvas/manifest.json +4 -0
  514. package/neural-interface/public/vendor/marked/LICENSE.md +44 -0
  515. package/neural-interface/public/vendor/marked/manifest.json +4 -0
  516. package/neural-interface/public/vendor/marked/marked-14.1.4.esm.js +2502 -0
  517. package/neural-interface/public/vendor/mermaid/LICENSE +21 -0
  518. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/abnfDiagram-PAR5IXJI.mjs +1 -0
  519. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architecture-7GRP2DOG-M7G3SWCO.mjs +1 -0
  520. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/architectureDiagram-2PNWDENW.mjs +36 -0
  521. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/blockDiagram-PUWGUBOA.mjs +129 -0
  522. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/c4Diagram-3NLNHZP5.mjs +38 -0
  523. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-2NMSUPJH.mjs +1 -0
  524. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-32MCUW2P.mjs +206 -0
  525. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3NPNU5GP.mjs +1 -0
  526. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-3SMGFRGC.mjs +1 -0
  527. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4CAJECRU.mjs +14 -0
  528. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-4OADUZ5Q.mjs +10 -0
  529. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IMINLNL.mjs +1 -0
  530. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5IQCK5RY.mjs +3 -0
  531. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-5MVFYWFU.mjs +1 -0
  532. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AQ6EADP3.mjs +1 -0
  533. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-AZZRMDJM.mjs +15 -0
  534. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-CLS4B6BI.mjs +168 -0
  535. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-DZP67EKU.mjs +70 -0
  536. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-EICP7K5X.mjs +1 -0
  537. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-GDY2UAB4.mjs +1 -0
  538. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-H7VHZCWX.mjs +1 -0
  539. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-IJBDOHL6.mjs +1 -0
  540. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JFFVMJIA.mjs +1 -0
  541. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JQRUD6KW.mjs +1 -0
  542. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-JZGDI5JK.mjs +1 -0
  543. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-KD6SPIPN.mjs +2 -0
  544. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NF366YI6.mjs +231 -0
  545. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-NUDPKBEF.mjs +32 -0
  546. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-OJINMHTS.mjs +1 -0
  547. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Q6NGPIAH.mjs +2 -0
  548. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-QJSWEUOL.mjs +132 -0
  549. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-R7JDMUKV.mjs +1 -0
  550. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RCXAM2GK.mjs +1 -0
  551. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-RT4MAWR3.mjs +1 -0
  552. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SFMINX4W.mjs +1 -0
  553. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-SLDQ463B.mjs +88 -0
  554. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-STOV2HOB.mjs +1 -0
  555. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-T5OCTHI4.mjs +1 -0
  556. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-TCEHX7R3.mjs +1 -0
  557. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VQC2EELJ.mjs +1 -0
  558. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VRZKL3EH.mjs +1 -0
  559. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VTHDQ7BV.mjs +1 -0
  560. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-VY2OSTJR.mjs +2 -0
  561. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-WUBWJARI.mjs +1 -0
  562. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YBMQ5JGJ.mjs +2 -0
  563. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-YDMLL4PJ.mjs +1 -0
  564. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-Z6V44ARX.mjs +62 -0
  565. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZJJ7VQJP.mjs +339 -0
  566. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZNLK7HRR.mjs +1 -0
  567. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZQN7UHIL.mjs +1 -0
  568. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZS6VBONO.mjs +174 -0
  569. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/chunk-ZUNWM646.mjs +1 -0
  570. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-FGAMPOII.mjs +1 -0
  571. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/classDiagram-v2-AI5RJEK4.mjs +1 -0
  572. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cose-bilkent-Q72C2OJ3.mjs +1 -0
  573. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefin-OW5HDTMX-6OCTWOGG.mjs +1 -0
  574. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/cynefinDiagram-2OOWUY4M.mjs +62 -0
  575. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/dagre-MPVFI544.mjs +4 -0
  576. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-AE4NWXFW.mjs +24 -0
  577. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-BUJID5UG.mjs +41 -0
  578. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-C44CZ5NI.mjs +24 -0
  579. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-EYOLEXXS.mjs +30 -0
  580. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/diagram-P7B6PWOJ.mjs +3 -0
  581. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ebnfDiagram-FTPZ3PV6.mjs +1 -0
  582. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/erDiagram-H3ERR26V.mjs +99 -0
  583. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/eventmodeling-NTZA5JFV-WKSWQHFS.mjs +1 -0
  584. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/flowDiagram-YHGXBVSY.mjs +1 -0
  585. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ganttDiagram-RWFTB7ED.mjs +292 -0
  586. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraph-4MIJSDKK-JH2HKYUO.mjs +1 -0
  587. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/gitGraphDiagram-MAR6GKOP.mjs +106 -0
  588. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/info-A6RAGUB7-3TX3OFWW.mjs +1 -0
  589. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/infoDiagram-LV547AFH.mjs +2 -0
  590. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/ishikawaDiagram-PUJQGNDS.mjs +70 -0
  591. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/journeyDiagram-EW5QJT4W.mjs +139 -0
  592. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/kanban-definition-JSQERAZB.mjs +89 -0
  593. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/katex-CZ4GXH2S.mjs +257 -0
  594. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/mindmap-definition-VBJCLQLM.mjs +96 -0
  595. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/packet-AYTQ26CC-MKII6P3Y.mjs +1 -0
  596. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pegDiagram-7WILOQTJ.mjs +1 -0
  597. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pie-WAS4IAKB-6B4OPMJ5.mjs +1 -0
  598. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/pieDiagram-EFA7CBSB.mjs +39 -0
  599. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/quadrantDiagram-WARVYA7P.mjs +7 -0
  600. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/radar-RG4KPBEZ-UPTR3XUL.mjs +1 -0
  601. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-74A4TZTK-MEFUPFMS.mjs +1 -0
  602. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-abnf-HS5TGJTU-R5YG2S5D.mjs +1 -0
  603. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-ebnf-LZEXJU2U-G5QEX2L6.mjs +1 -0
  604. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroad-peg-WCYAUIDC-H5I2ZRY2.mjs +1 -0
  605. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/railroadDiagram-5NIQVNLQ.mjs +1 -0
  606. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/requirementDiagram-SXREGOKZ.mjs +84 -0
  607. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sankeyDiagram-VV74M2VP.mjs +40 -0
  608. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sequenceDiagram-52ZFIFDL.mjs +162 -0
  609. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/sizeCapture-FGA5AGYP.mjs +1 -0
  610. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-3QAKPIVI.mjs +1 -0
  611. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/stateDiagram-v2-HN2P4RDZ.mjs +1 -0
  612. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanes-QLVP42QD.mjs +1 -0
  613. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/swimlanesDiagram-JKPDBFCN.mjs +8 -0
  614. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/timeline-definition-GS45XAXW.mjs +120 -0
  615. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treeView-Q6P3EWNA-ZRJGANNQ.mjs +1 -0
  616. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/treemap-WGGIJYW6-K64VN5AS.mjs +1 -0
  617. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/vennDiagram-QIQU2ZRJ.mjs +34 -0
  618. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardley-WFR3VGLG-D67OWCCH.mjs +1 -0
  619. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/wardleyDiagram-U6YNM66N.mjs +78 -0
  620. package/neural-interface/public/vendor/mermaid/chunks/mermaid.esm.min/xychartDiagram-XJAZEDNM.mjs +7 -0
  621. package/neural-interface/public/vendor/mermaid/manifest.json +4 -0
  622. package/neural-interface/public/vendor/mermaid/mermaid-11.17.2.esm.min.mjs +14 -0
  623. package/neural-interface/public/vendor/yaml/LICENSE +13 -0
  624. package/neural-interface/public/vendor/yaml/manifest.json +4 -0
  625. package/neural-interface/public/vendor/yaml/yaml-2.9.1.min.js +137 -0
  626. package/neural-interface/scripts/build-vendor.mjs +116 -3
  627. package/neural-interface/server.js +4834 -2541
  628. package/neural-interface/templates/rulesets/core.md +1 -1
  629. package/neural-interface/templates/rulesets/legacy-hashes.json +18 -0
  630. package/neural-interface/templates/rulesets/manifest.json +8 -8
  631. package/npm-shrinkwrap.json +18 -12
  632. package/package.json +16 -3
  633. package/postinstall.js +9 -4
  634. package/preuninstall.js +1 -1
  635. package/setup.js +97 -322
  636. package/skills/skill-forge/SKILL.md +177 -0
  637. package/skills/skill-forge/evals/evals.json +54 -0
  638. package/skills/skill-forge/references/package.md +105 -0
  639. package/skills/skill-forge/references/review-and-recovery.md +63 -0
  640. package/skills/skill-forge/references/runtime-profiles.md +20 -0
  641. package/skills/skill-forge/references/sources-and-capabilities.md +51 -0
  642. package/skills/synabun/SKILL.md +10 -7
  643. package/skills/synabun/modules/audit.md +1 -5
  644. package/skills/synabun/modules/changelog.md +1 -5
  645. package/skills/synabun/modules/idea.md +1 -1
  646. package/skills/synabun/modules/memorize.md +6 -9
  647. package/skills/synabun/modules/schedule.md +5 -5
  648. package/mcp-server/dist/services/profiles.d.ts +0 -120
  649. package/mcp-server/dist/services/profiles.d.ts.map +0 -1
  650. package/mcp-server/dist/services/profiles.js +0 -387
  651. package/mcp-server/dist/services/profiles.js.map +0 -1
  652. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +0 -97
  653. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +0 -1
  654. package/mcp-server/dist/tools/leonardo-browser-tools.js +0 -228
  655. package/mcp-server/dist/tools/leonardo-browser-tools.js.map +0 -1
  656. package/mcp-server/dist/tools/leonardo.d.ts +0 -13
  657. package/mcp-server/dist/tools/leonardo.d.ts.map +0 -1
  658. package/mcp-server/dist/tools/leonardo.js +0 -21
  659. package/mcp-server/dist/tools/leonardo.js.map +0 -1
  660. package/mcp-server/dist/tools/profile.d.ts +0 -17
  661. package/mcp-server/dist/tools/profile.d.ts.map +0 -1
  662. package/mcp-server/dist/tools/profile.js +0 -114
  663. package/mcp-server/dist/tools/profile.js.map +0 -1
  664. package/mcp-server/src/services/profiles.ts +0 -428
  665. package/mcp-server/src/tools/leonardo-browser-tools.ts +0 -291
  666. package/mcp-server/src/tools/leonardo.ts +0 -30
  667. package/mcp-server/src/tools/profile.ts +0 -122
  668. package/neural-interface/lib/assistant-brains/opencode-browser-policy.js +0 -47
  669. package/neural-interface/lib/assistant-brains/opencode-route-gate.js +0 -62
  670. package/neural-interface/lib/mcp-profile-servers.js +0 -120
  671. package/neural-interface/public/shared/ui-tutorial-draw.js +0 -311
  672. package/skills/leonardo/SKILL.md +0 -168
  673. package/skills/leonardo/icon.svg +0 -1
  674. package/skills/leonardo/modules/browser-guide.md +0 -378
  675. package/skills/leonardo/modules/image-prompter.md +0 -283
  676. package/skills/leonardo/modules/model-advisor.md +0 -100
  677. package/skills/leonardo/modules/prompt-library.md +0 -110
  678. package/skills/leonardo/modules/style-guide.md +0 -186
  679. package/skills/leonardo/modules/video-prompter.md +0 -317
@@ -1,4 +1,8 @@
1
1
  {
2
+ "workerRestart": {
3
+ "suspended": "Suspended — this run resumes as soon as SynaBun is back.",
4
+ "resumed": "Resumed after the server restart — this run continues here."
5
+ },
2
6
  "common": {
3
7
  "save": "Save",
4
8
  "cancel": "Cancel",
@@ -44,7 +48,6 @@
44
48
  "move": "Move",
45
49
  "discard": "Discard"
46
50
  },
47
-
48
51
  "greeting": {
49
52
  "label": "Greeting from SynaBun",
50
53
  "back": "Back after {time}",
@@ -98,12 +101,12 @@
98
101
  "prepared": "written {time} ago",
99
102
  "free": "no tokens spent"
100
103
  },
101
-
102
104
  "nav": {
103
105
  "view": "View",
104
106
  "graph": "Graph",
105
107
  "skills": "Skills",
106
108
  "automations": "Automations",
109
+ "schedules": "Schedules",
107
110
  "games": "Games",
108
111
  "apps": "Apps",
109
112
  "bookmarks": "Bookmarks",
@@ -114,7 +117,6 @@
114
117
  "toggle3d": "3D",
115
118
  "map": "Map"
116
119
  },
117
-
118
120
  "menu": {
119
121
  "view": {
120
122
  "categories": "Categories",
@@ -152,11 +154,104 @@
152
154
  "openCode": "OpenCode",
153
155
  "shell": "Shell",
154
156
  "browser": "Browser",
157
+ "browserApps": "Browser apps",
155
158
  "youtube": "YouTube",
156
159
  "showTerminal": "Show Terminal"
157
160
  }
158
161
  },
159
-
162
+ "contextMenu": {
163
+ "label": "Context menu",
164
+ "page": {
165
+ "back": "Back",
166
+ "forward": "Forward",
167
+ "reload": "Reload",
168
+ "copyUrl": "Copy page URL",
169
+ "fullscreen": "Full screen",
170
+ "exitFullscreen": "Exit full screen",
171
+ "submenu": "Page"
172
+ },
173
+ "selection": {
174
+ "copy": "Copy",
175
+ "search": "Search memories for “{text}”",
176
+ "sendToAi": "Send to AI panel"
177
+ },
178
+ "link": {
179
+ "open": "Open link in new tab",
180
+ "copy": "Copy link address"
181
+ },
182
+ "image": {
183
+ "open": "Open image in new tab",
184
+ "copy": "Copy image address"
185
+ },
186
+ "memory": {
187
+ "open": "Open memory",
188
+ "linked": "Show linked memories",
189
+ "copyId": "Copy memory ID",
190
+ "sendToAi": "Send to AI panel",
191
+ "select": "Add to selection",
192
+ "deselect": "Remove from selection",
193
+ "goToIsland": "Go to {name}",
194
+ "closeCard": "Close card"
195
+ },
196
+ "map": {
197
+ "goTo": "Go to {name}",
198
+ "frameAll": "Frame whole map",
199
+ "options": "Map options",
200
+ "neighbors": "Neighbours on select",
201
+ "recency": "Recency glow",
202
+ "grid": "Chart grid",
203
+ "clearSearch": "Clear search",
204
+ "clearSelection": "Clear selection",
205
+ "switchTo2d": "Switch to 2D view",
206
+ "switchTo3d": "Switch to 3D view",
207
+ "minimap": "Minimap",
208
+ "regionGlow": "Region glow"
209
+ },
210
+ "focus": {
211
+ "tool": "Tool",
212
+ "tools": {
213
+ "select": "Select",
214
+ "text": "Text",
215
+ "list": "List",
216
+ "arrow": "Arrow",
217
+ "shape": "Shape",
218
+ "pen": "Pencil",
219
+ "section": "Wireframe section"
220
+ },
221
+ "multiSelect": "Multi-select",
222
+ "undo": "Undo",
223
+ "redo": "Redo",
224
+ "selectAll": "Select all",
225
+ "exit": "Exit focus mode"
226
+ },
227
+ "app": {
228
+ "open": "Open",
229
+ "search": "Search memories",
230
+ "shortcuts": "Keyboard shortcuts",
231
+ "settings": "Settings"
232
+ },
233
+ "open": {
234
+ "assistant": "Assistant",
235
+ "claudePanel": "Claude Code panel",
236
+ "codexPanel": "Codex panel",
237
+ "opencodePanel": "OpenCode panel",
238
+ "terminal": "New terminal",
239
+ "claudeTerminal": "Claude Code terminal",
240
+ "browser": "Browser",
241
+ "fileExplorer": "File Explorer",
242
+ "memoryExplorer": "Memory Explorer",
243
+ "categories": "Categories",
244
+ "focusMode": "Focus mode",
245
+ "skills": "Skills Studio",
246
+ "automations": "Automation Studio",
247
+ "schedules": "Schedules",
248
+ "styleGuide": "Style Guide",
249
+ "commandRunner": "Command Runner",
250
+ "imageGallery": "Image gallery",
251
+ "notifications": "Notifications",
252
+ "help": "Help"
253
+ }
254
+ },
160
255
  "search": {
161
256
  "placeholder": "Search memories...",
162
257
  "searching": "Searching...",
@@ -168,13 +263,11 @@
168
263
  },
169
264
  "matchCount": "Search: {count} matches"
170
265
  },
171
-
172
266
  "stats": {
173
267
  "memories": "Memories:",
174
268
  "visible": "Visible:",
175
269
  "links": "Links:"
176
270
  },
177
-
178
271
  "loading": {
179
272
  "connecting": "Connecting",
180
273
  "initializingNeural": "Initializing neural pathways...",
@@ -187,7 +280,7 @@
187
280
  "checking": "Checking...",
188
281
  "connectedLoading": "Connected! Loading...",
189
282
  "notReadyYet": "Server responded but is not ready yet",
190
- "stillOffline": "Still offline \u2014 start the server and try again",
283
+ "stillOffline": "Still offline — start the server and try again",
191
284
  "runCommand": "Run this command to start the server:",
192
285
  "copyToClipboard": "Copy to clipboard",
193
286
  "start": {
@@ -269,7 +362,6 @@
269
362
  }
270
363
  }
271
364
  },
272
-
273
365
  "sidebar": {
274
366
  "title": "Categories",
275
367
  "allMemories": "All Memories",
@@ -313,7 +405,6 @@
313
405
  "addDescription": "Add description...",
314
406
  "editDescription": "Edit description"
315
407
  },
316
-
317
408
  "explorer": {
318
409
  "title": "Explorer",
319
410
  "filterPlaceholder": "Filter memories...",
@@ -348,7 +439,6 @@
348
439
  "copyId": "Copy ID"
349
440
  }
350
441
  },
351
-
352
442
  "editor": {
353
443
  "header": {
354
444
  "close": "Close editor",
@@ -689,6 +779,7 @@
689
779
  "reasonMaxTurns": "The run reached its turn limit.",
690
780
  "reasonIdle": "The worker waited for a follow-up that did not come, and closed.",
691
781
  "reasonRestart": "The server restarted while the run was open.",
782
+ "reasonRestartNotResumed": "The server restarted while the run was open, and it could not continue: {reason}",
692
783
  "reasonKillAll": "Stopped together with every other run.",
693
784
  "reasonCleared": "The run's state was removed.",
694
785
  "reasonOther": "Stopped ({reason}).",
@@ -1143,14 +1234,12 @@
1143
1234
  "importanceValue": "{n}/10",
1144
1235
  "focusLinked": "Show only linked memories"
1145
1236
  },
1146
-
1147
1237
  "bookmarks": {
1148
1238
  "title": "Bookmarks",
1149
1239
  "emptyState": "No bookmarks yet",
1150
1240
  "dragHint": "Drag memories here or right-click a node to bookmark",
1151
1241
  "remove": "Remove"
1152
1242
  },
1153
-
1154
1243
  "layouts": {
1155
1244
  "placeholder": "Layout name...",
1156
1245
  "save": "Save",
@@ -1159,7 +1248,6 @@
1159
1248
  "auto": "auto",
1160
1249
  "deleteTooltip": "Delete"
1161
1250
  },
1162
-
1163
1251
  "trash": {
1164
1252
  "title": "Trash",
1165
1253
  "emptyTrash": "Empty Trash",
@@ -1177,7 +1265,6 @@
1177
1265
  "message": "This will permanently delete all {count} trashed memories."
1178
1266
  }
1179
1267
  },
1180
-
1181
1268
  "multiselect": {
1182
1269
  "selected": {
1183
1270
  "one": "1 selected",
@@ -1188,7 +1275,6 @@
1188
1275
  "trash": "Trash",
1189
1276
  "clear": "Clear"
1190
1277
  },
1191
-
1192
1278
  "help": {
1193
1279
  "title": "Controls",
1194
1280
  "tabs": {
@@ -1228,7 +1314,6 @@
1228
1314
  "rotate": "Rotate"
1229
1315
  }
1230
1316
  },
1231
-
1232
1317
  "settings": {
1233
1318
  "title": "Settings",
1234
1319
  "tabs": {
@@ -1321,8 +1406,8 @@
1321
1406
  },
1322
1407
  "memory": {
1323
1408
  "title": "Memory Sync",
1324
- "allClear": "All clear \u2014 no stale memories detected",
1325
- "staleCount": "{stale} of {total} memories are stale \u2014 their related files have changed since the memory was stored.",
1409
+ "allClear": "All clear — no stale memories detected",
1410
+ "staleCount": "{stale} of {total} memories are stale — their related files have changed since the memory was stored.",
1326
1411
  "deselectAll": "Deselect all",
1327
1412
  "refresh": "Refresh",
1328
1413
  "updateSelected": "Update Selected"
@@ -1361,8 +1446,8 @@
1361
1446
  "regenerate": "Regenerate",
1362
1447
  "copyKey": "Copy Key",
1363
1448
  "revoke": "Revoke",
1364
- "noKey": "No key configured \u2014 tunnel is open",
1365
- "saveNow": "Save this key now \u2014 it won't be shown again"
1449
+ "noKey": "No key configured — tunnel is open",
1450
+ "saveNow": "Save this key now — it won't be shown again"
1366
1451
  },
1367
1452
  "redesign": {
1368
1453
  "group": {
@@ -1396,7 +1481,7 @@
1396
1481
  },
1397
1482
  "connected_tools": {
1398
1483
  "label": "Connected tools",
1399
- "help": "Servers and profiles"
1484
+ "help": "Default tools and MCP servers"
1400
1485
  },
1401
1486
  "tool_access": {
1402
1487
  "label": "Tool access",
@@ -1425,6 +1510,10 @@
1425
1510
  "about": {
1426
1511
  "label": "About",
1427
1512
  "help": "Version, links and licenses"
1513
+ },
1514
+ "app": {
1515
+ "label": "App",
1516
+ "help": "Updates, startup and the window"
1428
1517
  }
1429
1518
  },
1430
1519
  "page": {
@@ -1450,7 +1539,7 @@
1450
1539
  },
1451
1540
  "connected_tools": {
1452
1541
  "title": "Connected tools",
1453
- "purpose": "Choose which tools each assistant profile can use, add tool servers, and manage MoreLogin browser profiles."
1542
+ "purpose": "Choose default SynaBun tools, add tool servers, and manage MoreLogin browser profiles."
1454
1543
  },
1455
1544
  "tool_access": {
1456
1545
  "title": "Tool access",
@@ -1479,6 +1568,10 @@
1479
1568
  "about": {
1480
1569
  "title": "About",
1481
1570
  "purpose": "The version you run, what it runs on, and the open-source software SynaBun is built with."
1571
+ },
1572
+ "app": {
1573
+ "title": "App",
1574
+ "purpose": "How SynaBun updates, starts and runs on this computer."
1482
1575
  }
1483
1576
  },
1484
1577
  "section": {
@@ -1605,10 +1698,6 @@
1605
1698
  }
1606
1699
  },
1607
1700
  "connected_tools": {
1608
- "tool_profiles": {
1609
- "title": "Tool profiles",
1610
- "purpose": "Choose which groups of SynaBun tools each profile loads. Fewer tools mean faster, cheaper replies."
1611
- },
1612
1701
  "added_servers": {
1613
1702
  "title": "Added servers",
1614
1703
  "purpose": "Tool servers from other makers that are registered with your assistants, and Claude Code plugins."
@@ -1628,6 +1717,10 @@
1628
1717
  "morelogin_tool_server": {
1629
1718
  "title": "MoreLogin tool server",
1630
1719
  "purpose": "Optionally add MoreLogin's own tool server to your assistants."
1720
+ },
1721
+ "default_tools": {
1722
+ "title": "Default tools",
1723
+ "purpose": "Choose the SynaBun groups new runtimes start with."
1631
1724
  }
1632
1725
  },
1633
1726
  "projects": {
@@ -1819,6 +1912,24 @@
1819
1912
  "title": "Dependencies",
1820
1913
  "purpose": "Every package SynaBun ships with, the version installed here and its license."
1821
1914
  }
1915
+ },
1916
+ "app": {
1917
+ "updates": {
1918
+ "title": "Updates",
1919
+ "purpose": "The version you run, and how SynaBun gets new ones."
1920
+ },
1921
+ "startup": {
1922
+ "title": "Startup",
1923
+ "purpose": "Whether SynaBun starts when you log in."
1924
+ },
1925
+ "window": {
1926
+ "title": "Window",
1927
+ "purpose": "What the SynaBun app's window does."
1928
+ },
1929
+ "maintenance": {
1930
+ "title": "Maintenance",
1931
+ "purpose": "SynaBun's folders, and a restart when something needs one."
1932
+ }
1822
1933
  }
1823
1934
  },
1824
1935
  "common": {
@@ -2008,10 +2119,6 @@
2008
2119
  "label": "Shorten long conversations automatically",
2009
2120
  "help": "Summarizes older messages before the model runs out of room."
2010
2121
  },
2011
- "ocp014": {
2012
- "label": "Drop old tool output",
2013
- "help": "Removes old command and tool results from the conversation to save room."
2014
- },
2015
2122
  "ocp015": {
2016
2123
  "label": "Room kept free (tokens)",
2017
2124
  "help": "How much room is always left for the model's next answer."
@@ -2449,8 +2556,8 @@
2449
2556
  "help": "Puts every field back to its default. Nothing is saved until you press Save."
2450
2557
  },
2451
2558
  "mcp001": {
2452
- "label": "Tool profiles or added servers",
2453
- "help": "Switches between the tool profiles and the servers you added."
2559
+ "label": "Default tools or added servers",
2560
+ "help": "Switches between default tools and the servers you added."
2454
2561
  },
2455
2562
  "mcp006": {
2456
2563
  "label": "+ Add a server",
@@ -2864,10 +2971,6 @@
2864
2971
  "label": "All Automation tools",
2865
2972
  "help": "Switches every tool of this group on or off at once."
2866
2973
  },
2867
- "per007": {
2868
- "label": "All Leonardo tools",
2869
- "help": "Switches every tool of this group on or off at once."
2870
- },
2871
2974
  "per008": {
2872
2975
  "label": "All Images tools",
2873
2976
  "help": "Switches every tool of this group on or off at once."
@@ -3101,16 +3204,16 @@
3101
3204
  "help": "Shows whether the browser settings were saved."
3102
3205
  },
3103
3206
  "mcp022": {
3104
- "label": "Tool groups by profile",
3105
- "help": "One column per profile, one row per group of tools."
3207
+ "label": "Default tools",
3208
+ "help": "Choose SynaBun groups for future runtimes. Running sessions keep their own tools."
3106
3209
  },
3107
3210
  "mcp024": {
3108
3211
  "label": "Always-on tools",
3109
- "help": "Tools every profile keeps."
3212
+ "help": "Tools every runtime keeps."
3110
3213
  },
3111
3214
  "mcp026": {
3112
3215
  "label": "Added servers",
3113
- "help": "Tool servers registered with your assistants."
3216
+ "help": "Review each added server, its connection type, and agent access."
3114
3217
  },
3115
3218
  "mcp027": {
3116
3219
  "label": "Command arguments",
@@ -3376,6 +3479,10 @@
3376
3479
  "label": "Write it now",
3377
3480
  "help": "Asks the writer for this sentence now instead of waiting for the background: one small call on the cheapest Claude model."
3378
3481
  },
3482
+ "aut061": {
3483
+ "label": "Protect workers",
3484
+ "help": "What a worker the Assistant dispatches with capability read-only or workspace may touch, on Claude Code, Codex and OpenCode alike: writes inside its working directory, the temp folder and its own scratch folder only; never ~/.claude, ~/.codex, ~/.agents, ~/.config/opencode, ~/.synabun or another project; a read-only worker runs read-only commands only. Capability full is never limited."
3485
+ },
3379
3486
  "edt001": {
3380
3487
  "label": "Suggest code as I type",
3381
3488
  "help": "Each time you pause typing, the code around the caret is sent to the model you choose below, and its suggestion appears as grey text. Files on the “Never sent” list are not sent. Off: nothing is sent and no model is asked."
@@ -3479,6 +3586,62 @@
3479
3586
  "abt003": {
3480
3587
  "label": "Filter dependencies",
3481
3588
  "help": "Shows only the packages whose name contains what you type."
3589
+ },
3590
+ "sys001": {
3591
+ "label": "Check for updates",
3592
+ "help": "Looks for a newer version of SynaBun now."
3593
+ },
3594
+ "sys002": {
3595
+ "label": "Automatic updates",
3596
+ "help": "Looks for new versions by itself. In the desktop app it also installs them when SynaBun is idle."
3597
+ },
3598
+ "sys003": {
3599
+ "label": "Install update",
3600
+ "help": "Opens the update with its release notes, and a backup first if you want one."
3601
+ },
3602
+ "sys004": {
3603
+ "label": "Start at login",
3604
+ "help": "Starts SynaBun when you log in to this computer."
3605
+ },
3606
+ "sys005": {
3607
+ "label": "Start in the background",
3608
+ "help": "At login, SynaBun starts without opening its window. Open SynaBun to show it."
3609
+ },
3610
+ "sys006": {
3611
+ "label": "Keep running when the window closes",
3612
+ "help": "Closing the window leaves SynaBun in the tray, so your AI tools keep their memory. Off: closing the window quits SynaBun."
3613
+ },
3614
+ "sys007": {
3615
+ "label": "Hardware acceleration",
3616
+ "help": "Draws the window with the graphics card. Turn it off if the window flickers or stays blank. Applies after a restart."
3617
+ },
3618
+ "sys008": {
3619
+ "label": "Restart now",
3620
+ "help": "Quits SynaBun and opens it again."
3621
+ },
3622
+ "sys009": {
3623
+ "label": "Open data folder",
3624
+ "help": "Shows the folder with your memories, settings and backups."
3625
+ },
3626
+ "sys010": {
3627
+ "label": "Open logs folder",
3628
+ "help": "Shows the folder with SynaBun's logs, for a bug report."
3629
+ },
3630
+ "sys011": {
3631
+ "label": "Restart SynaBun",
3632
+ "help": "Restarts SynaBun's server: the same as Restart Server in the Apps menu."
3633
+ },
3634
+ "aut062": {
3635
+ "label": "SynaBun hooks in Claude Code",
3636
+ "help": "Memory, recall and plan capture for the Claude Code sessions you start yourself (a terminal, VS Code, the desktop app) and for the Assistant's Claude brain, which reads them from the same ~/.claude/settings.json."
3637
+ },
3638
+ "mcp004": {
3639
+ "label": "Remove added server",
3640
+ "help": "Removes this server from SynaBun."
3641
+ },
3642
+ "mcp005": {
3643
+ "label": "Agents may use it",
3644
+ "help": "Allows this server in Codex, OpenCode and Claude task runs and the OpenCode tools picker."
3482
3645
  }
3483
3646
  },
3484
3647
  "pane": {
@@ -3539,8 +3702,6 @@
3539
3702
  "permanentlyClearOpencodeHistory": "Permanently clear OpenCode history?",
3540
3703
  "currentlyStored": "· {formatBytes} currently stored",
3541
3704
  "thisCannotBeUndone": "This cannot be undone.",
3542
- "activeConversationsOrAutomationsMustBe": "Active conversations or automations must be stopped first; SynaBun will refuse the wipe if any are running. It will then stop OpenCode, erase the history database and related artifacts, compact the database, and restart OpenCode if it was running. A large history can take several minutes.",
3543
- "deletesConversationsMessagesToolOutputTo": "Deletes conversations, messages, tool output, todos, shares, snapshots, diffs, and rendered transcript caches.",
3544
3705
  "deletesSynabunSDerivedOpencodeResume": "Deletes SynaBun's derived OpenCode Resume and search index.",
3545
3706
  "keepsProviderCredentialsAccountConfigSet": "Keeps provider credentials, account/config settings, project files, and your git history.",
3546
3707
  "type": "Type",
@@ -3548,7 +3709,6 @@
3548
3709
  "cancel": "Cancel",
3549
3710
  "clearHistoryPermanently": "Clear history permanently",
3550
3711
  "clearing": "Clearing…",
3551
- "stoppingOpencodeAndClearingItsHistory": "Stopping OpenCode and clearing its history. Keep SynaBun open…",
3552
3712
  "historyWasClearedWarningReloadingSynabun": "History was cleared. Warning: {value} Reloading SynaBun…",
3553
3713
  "clearedReloadingSynabun": "Cleared {formatCount}{reclaimed}. Reloading SynaBun…",
3554
3714
  "andReclaimed": "and reclaimed {formatBytes}",
@@ -3556,7 +3716,6 @@
3556
3716
  "opencodeHistoryClearedWithAWarning": "OpenCode history cleared with a warning",
3557
3717
  "opencodeHistoryCleared": "OpenCode history cleared",
3558
3718
  "couldNotClearOpencodeHistory": "Could not clear OpenCode history",
3559
- "writingProviderConfigAndRestartingOpenco": "Writing provider config and restarting OpenCode…",
3560
3719
  "installFrom": "Install from",
3561
3720
  "orRun": "or run",
3562
3721
  "noModelsRun": "No models — run",
@@ -3566,7 +3725,6 @@
3566
3725
  "modelReadyToConfigure": "model{count} · Ready to configure…",
3567
3726
  "local": "(local)",
3568
3727
  "removing": "Removing…",
3569
- "ollamaProviderRemovedServerRestarting": "Ollama provider removed — server restarting…",
3570
3728
  "noProvidersFound": "No providers found",
3571
3729
  "changeKey": "Change Key",
3572
3730
  "enterApiKey": "Enter API Key",
@@ -3578,9 +3736,7 @@
3578
3736
  "disableAll": "Disable all",
3579
3737
  "noProvidersMatchThisFilter": "No providers match this filter",
3580
3738
  "saving": "Saving…",
3581
- "apiKeySavedForServerRestarting": "API key saved for {provId} — server restarting…",
3582
3739
  "removeApiKeyFor": "Remove API key for {provId}?",
3583
- "apiKeyRemovedForServerRestarting": "API key removed for {provId} — server restarting…",
3584
3740
  "failedToRemoveKey": "Failed to remove key",
3585
3741
  "connecting": "Connecting…",
3586
3742
  "connected": "{provId} connected",
@@ -3593,7 +3749,6 @@
3593
3749
  "failedToLoadTools": "Failed to load tools",
3594
3750
  "failedToOpenOpencodeConfig": "Failed to open OpenCode config",
3595
3751
  "startTheServerToSeeProviders": "Start the server to see providers",
3596
- "startTheServerToLoadTools": "Start the server to load tools",
3597
3752
  "historyWipeFailedHttp": "History wipe failed (HTTP {status})",
3598
3753
  "configuring": "Configuring…",
3599
3754
  "notDetected": "Not detected",
@@ -3637,7 +3792,33 @@
3637
3792
  },
3638
3793
  "removeConfirm": "Remove…",
3639
3794
  "envVarTitle": "Environment variable: {env}",
3640
- "storedConversations": "Stored conversations"
3795
+ "storedConversations": "Stored conversations",
3796
+ "bufferDefault": "OpenCode's default",
3797
+ "saveFailed": "Not saved: {message}",
3798
+ "installedVersion": "OpenCode {version} · {path}",
3799
+ "notInstalled": "SynaBun did not find OpenCode. Install OpenCode 2 ({commands}), or choose one under Executable paths.",
3800
+ "refusal": {
3801
+ "opencode1": "SynaBun works with OpenCode 2 only, and the OpenCode it found ({path}) is version {version}. Install OpenCode 2 ({commands}; npm's opencode-ai package is still OpenCode 1), or choose an OpenCode 2 under Executable paths.",
3802
+ "outdated": "SynaBun needs OpenCode {minimum} or newer, and the OpenCode it found ({path}) is version {version}. Update it with {update}.",
3803
+ "newer": "OpenCode {version} ({path}) is newer than SynaBun supports: SynaBun works with OpenCode 2 only, so install OpenCode 2 ({commands}), or choose an OpenCode 2 under Executable paths."
3804
+ },
3805
+ "commandOr": "{first} or {second}",
3806
+ "notSupportedStatus": "Not supported",
3807
+ "notInstalledStatus": "Not installed",
3808
+ "jsoncWins": "OpenCode also reads {path}, and what it sets wins over the file above.",
3809
+ "apiKeySaved": "API key saved for {provId}",
3810
+ "apiKeyRemoved": "API key removed for {provId}",
3811
+ "oauthCodePlaceholder": "Paste the code…",
3812
+ "oauthCodeFor": "Authorization code for {name}",
3813
+ "oauthConnect": "Connect",
3814
+ "oauthFailed": "Sign-in failed: {message}",
3815
+ "oauthExpired": "The sign-in expired. Start it again.",
3816
+ "oauthGaveUp": "The sign-in has not finished. Start it again when you are ready.",
3817
+ "writingProviderConfig": "Writing the provider configuration…",
3818
+ "ollamaProviderRemoved": "Ollama provider removed",
3819
+ "historyClearSteps": "Active conversations or automations must be stopped first; SynaBun refuses the wipe while any are running. SynaBun then ends its own OpenCode sessions and has OpenCode delete every conversation. A large history can take a few minutes.",
3820
+ "historyClearDeletes": "Deletes conversations with their messages, tool output, todos and diffs, and SynaBun's rendered transcript caches.",
3821
+ "historyClearWorking": "Deleting OpenCode's conversations. Keep SynaBun open…"
3641
3822
  },
3642
3823
  "setup": {
3643
3824
  "registeredIn": "Connected through {file}",
@@ -3705,7 +3886,7 @@
3705
3886
  "versionOfTheRulesIsAvailable": "Version {version} of the rules is available.",
3706
3887
  "aNewerVersionOfTheRules": "A newer version of the rules is available.",
3707
3888
  "theLastRemovalDidNotFinish": "The last removal did not finish. {error}",
3708
- "theLineInConfigJsonThat": "The line in config.json that lists them was not added by SynaBun and is removed too.",
3889
+ "theLineInConfigJsonThat": "The line in opencode.json that lists them was not added by SynaBun and is removed too.",
3709
3890
  "yourEditedRulesWereLeftIn": "Your edited {label} rules were left in place: {path}",
3710
3891
  "pastedCopyRemoved": "Pasted copy removed",
3711
3892
  "nothingToRemove": "Nothing to remove",
@@ -3721,7 +3902,7 @@
3721
3902
  "failed2": "Failed: {message}",
3722
3903
  "wasNotFoundOnThisMachine": "{label} was not found on this machine, so there is nowhere to install its rules.",
3723
3904
  "rulesAreAlreadyCurrent": "{label} rules are already current",
3724
- "rulesWereLeftInPlaceConfig": "{label} rules were left in place: config.json lists them on a line SynaBun did not add. Remove again to take out both.",
3905
+ "rulesWereLeftInPlaceConfig": "{label} rules were left in place: opencode.json lists them on a line SynaBun did not add. Remove again to take out both.",
3725
3906
  "rulesRemoved2": "{label} rules removed",
3726
3907
  "rulesInstalled2": "{label} rules installed",
3727
3908
  "rulesUpdated2": "{label} rules updated",
@@ -4144,14 +4325,13 @@
4144
4325
  },
4145
4326
  "mcp": {
4146
4327
  "tab": {
4147
- "profiles": "Tool profiles",
4148
- "installed": "Added servers"
4149
- },
4150
- "profilesHelp": "Switch groups of tools on or off for each profile. Click a profile name to make it the active one.",
4151
- "noteTitle": "Only where tools are used.",
4152
- "noteBody": "A profile loads just the tools a kind of work needs, which saves tokens and time.",
4153
- "externalServers": "Servers you added",
4154
- "externalServersHelp": "Switch each added server on or off per profile.",
4328
+ "installed": "Added servers",
4329
+ "tools": "Default tools"
4330
+ },
4331
+ "noteTitle": "Scope",
4332
+ "noteBody": "OpenCode and Gemini load the selected groups. Claude Code and Codex reach every SynaBun tool on demand.",
4333
+ "externalServers": "Your other MCP servers",
4334
+ "externalServersHelp": "Applies to task workers and automations on Codex, OpenCode and Claude, including FleetView, plus the OpenCode tools picker. Other sessions you drive keep their servers.",
4155
4335
  "installedHelp": "Every tool server from another maker that is registered with Claude Code, OpenCode, Codex, Gemini or SynaBun. SynaBun's own tool groups are not listed here.",
4156
4336
  "plugins": "Claude Code plugins",
4157
4337
  "pluginsHelp": "Plugins installed from GitHub repositories that ship a .claude-plugin folder. They are linked into ~/.claude/plugins.",
@@ -4175,15 +4355,10 @@
4175
4355
  "env": "Environment variables",
4176
4356
  "envHelp": "Values the server reads when it starts, such as an API key.",
4177
4357
  "addVariable": "+ Add variable",
4178
- "noProfiles": "No profiles",
4179
4358
  "toolGroups": "Tool Groups",
4180
- "deleteProfile": "Delete profile",
4181
- "newProfile": "New profile",
4182
- "profileSwitchedTo": "Profile switched to {name}",
4183
4359
  "name": "name",
4184
4360
  "alwaysOn": "Always On",
4185
4361
  "noExternalServersConfigured": "No external servers configured",
4186
- "availableToAnyProfileYouEnable": "Available to any profile you enable below.",
4187
4362
  "removeServer": "Remove server",
4188
4363
  "disable": "Disable",
4189
4364
  "enable": "Enable",
@@ -4208,7 +4383,8 @@
4208
4383
  "synabunRegistry": "SynaBun registry",
4209
4384
  "repoAlsoShipsAClaudeCode": "(repo also ships a Claude Code plugin — install separately if desired)",
4210
4385
  "skippedLocalDeps": "⚙ Skipped local deps — {reason}",
4211
- "error": "Error: {message}"
4386
+ "error": "Error: {message}",
4387
+ "defaultToolsHelp": "Choose which groups new runtimes start with. Running sessions keep their own tools."
4212
4388
  },
4213
4389
  "product": {
4214
4390
  "claudeCode": "Claude Code",
@@ -4263,7 +4439,63 @@
4263
4439
  "skills": {
4264
4440
  "installFor": "Install /{skill} for {assistant}",
4265
4441
  "targets": "Assistants that have /{skill}",
4266
- "none": "No skills are registered."
4442
+ "none": "No skills are registered.",
4443
+ "folders": {
4444
+ "title": "Skill folders",
4445
+ "loading": "Reading the skill folders…",
4446
+ "unavailable": "The server that is running does not know about skill folders yet: restart SynaBun to see them here.",
4447
+ "bridgesNone": "Every skill SynaBun installed for Codex and OpenCode has a skill folder of its own. Nothing to move.",
4448
+ "bridgesOne": "One skill still reaches Codex or OpenCode through an old bridge file. Review the move to give it a skill folder of its own: the bridge is kept in the move’s record, and the move can be undone.",
4449
+ "bridgesMany": "{count} skills still reach Codex or OpenCode through old bridge files. Review the move to give each a skill folder of its own: the bridges are kept in the move’s record, and the move can be undone.",
4450
+ "othersOne": "One other file in those prompt and command folders is not SynaBun’s bridge (or was changed since SynaBun wrote it): it is never moved.",
4451
+ "othersMany": "{count} other files in those prompt and command folders are not SynaBun’s bridges (or were changed since SynaBun wrote them): they are never moved.",
4452
+ "review": "Review the move",
4453
+ "move": "Move them",
4454
+ "cancel": "Cancel",
4455
+ "undo": "Undo the last move",
4456
+ "stepMigrate": "{runtime} {name}: becomes a skill folder at {destination}; the bridge file is removed once it is saved in the move’s record.",
4457
+ "stepLeave": "{runtime} {name}: left as it is. {why}",
4458
+ "stepBlocked": "{runtime} {name}: cannot move yet. {why}",
4459
+ "planChanged": "The bridges or their skill folders changed since the plan was shown. Nothing was moved: here is the new plan.",
4460
+ "nothing": "Nothing to move: no bridge of SynaBun’s is left to give a skill folder.",
4461
+ "moved": "Moved. The old bridge files are kept in the move’s record ({id}); Undo the last move puts them back.",
4462
+ "movedPartly": "Moved in part. Not moved: {details}",
4463
+ "undone": "The move is undone: the bridge files are back, and the skill folders it made are removed.",
4464
+ "undonePartly": "Undone in part: {details}",
4465
+ "failed": "That did not work: {message}",
4466
+ "sharedLabel": "Shared skills folder (~/.agents/skills)",
4467
+ "sharedHelp": "Off: SynaBun installs a skill into each assistant’s own folder. On: an install can also go into ~/.agents/skills, which Codex and OpenCode both read.",
4468
+ "sharedOn": "On",
4469
+ "sharedOff": "Off",
4470
+ "stepOffer": "{runtime} {name}: a bridge file SynaBun cannot prove is its own ({why}) Tick it to move it too: it becomes SynaBun’s {name} skill folder, and the file is kept in the move’s record.",
4471
+ "stepConfirmed": "{runtime} {name}: moved too, as you confirmed: becomes a skill folder at {destination}; the file is kept in the move’s record.",
4472
+ "offerTick": "Move {name} too",
4473
+ "autoNote": "SynaBun moves the bridge files it recognises as its own by itself when it starts (Skills Studio says so once, with Undo). What it cannot recognise waits here for you."
4474
+ },
4475
+ "assistants": {
4476
+ "title": "My assistants",
4477
+ "help": "A new install goes to these assistants unless a review names others; Skills Studio ticks them in Publish.",
4478
+ "detected": "Detected on this computer: {detected}.",
4479
+ "chosen": "Your choice; detected on this computer: {detected}.",
4480
+ "useDetected": "Use what is detected",
4481
+ "chipOn": "New skills install for {assistant}. Click to leave it out.",
4482
+ "chipOff": "New skills do not install for {assistant}. Click to include it."
4483
+ },
4484
+ "chip": {
4485
+ "installed": "/{skill} is installed for {assistant}. Click to remove it.",
4486
+ "native": "/{skill} is installed for {assistant} as a skill folder of its own. Click to remove it.",
4487
+ "bridge": "/{skill} reaches {assistant} through an old bridge file. Click to remove it, or move it to a skill folder under Skill folders.",
4488
+ "other": "{assistant} has a /{skill} that SynaBun did not install. Click to install SynaBun’s: you are asked before anything is replaced.",
4489
+ "shared": "/{skill} reaches {assistant} through the shared ~/.agents/skills folder (Codex and OpenCode both read it). Click to remove it from there.",
4490
+ "otherShared": "{assistant} reads a /{skill} in ~/.agents/skills that SynaBun did not install: another copy would list it twice.",
4491
+ "installedShared": "/{skill} already reaches {runtime} through the shared ~/.agents/skills folder: nothing was added.",
4492
+ "installedNative": "/{skill} is installed for {runtime} as a skill folder of its own.",
4493
+ "installedReload": "/{skill} is installed for {runtime}. Its skills folder is new: run /reload-skills in sessions that are already open.",
4494
+ "installedNewSession": "/{skill} is installed for {runtime}: start a new {runtime} session to use it.",
4495
+ "installedBridgeLeft": "/{skill} is installed for {runtime} as a skill folder of its own. Its old bridge file is still there: move it under Skill folders."
4496
+ },
4497
+ "openStudio": "Open Skills Studio",
4498
+ "openStudioHelp": "Edit, version and publish skills, agents and commands, and review what the Assistant makes, in Skills Studio."
4267
4499
  },
4268
4500
  "permissions": {
4269
4501
  "all": "All",
@@ -4383,6 +4615,31 @@
4383
4615
  "noKeyConfiguredTunnelIsOpen": "No key configured - tunnel is open",
4384
4616
  "generateKey": "Generate Key",
4385
4617
  "failed2": "Failed: {message}",
4618
+ "workerGuard": {
4619
+ "mode": {
4620
+ "enforce": "Enforce",
4621
+ "warn": "Warn only",
4622
+ "off": "Off"
4623
+ },
4624
+ "modeHelp": {
4625
+ "enforce": "A call outside the capability is refused, with the reason in the run's transcript. On macOS, Claude Code and OpenCode workers also run under an OS sandbox (Seatbelt) that blocks SynaBun's own control port, so nothing they run can reach it; a guarded Codex worker runs with its shell network off (no internet — Codex's sandbox network is all-or-nothing). Off macOS the in-code guard applies, without the OS sandbox. Claude Code: a hook on every tool call. Codex: its sandbox, without the parent folder. OpenCode: rules in the run's config, each ask answered by the policy.",
4626
+ "warn": "Nothing new is refused and no OS sandbox is applied. Claude Code keeps its read-only tool list from before (no shell under read-only); Codex keeps its sandbox and internet as before (the parent folder writable under workspace); OpenCode answers every ask \"once\". Each call Enforce would refuse — and the internet it would cut from a Codex worker — is noted in the run's transcript.",
4627
+ "off": "The capability is instructions only, as before this setting: Codex keeps its sandbox (the parent folder writable), Claude Code and OpenCode are not held back."
4628
+ },
4629
+ "applies": "Applies to workers started from now on; a running worker keeps the mode it started with.",
4630
+ "sandboxFallback": "Protect workers couldn't apply the macOS sandbox to this run ({reason}); the built-in guard is active.",
4631
+ "sandboxStrict": "Protect workers couldn't check which local programs could relay this run to SynaBun ({reason}), so its sandbox is stricter: local servers aren't reachable in this run (dev servers, tests that start a server, local proxies); the internet's web, SSH and DNS ports and SynaBun's own tools still work.",
4632
+ "restart": "Restart SynaBun to use this: the server that is running was started before it was added. Until then workers are not held back.",
4633
+ "failed": "This setting did not start ({reason}). Restart SynaBun; if it happens again, the server log says why.",
4634
+ "failedNoReason": "This setting did not start. Restart SynaBun; if it happens again, the server log says why.",
4635
+ "unreadable": "The setting could not be read ({reason}).",
4636
+ "unreadableNoReason": "The setting could not be read.",
4637
+ "save": {
4638
+ "failed": "\"{mode}\" was not saved: {reason}.",
4639
+ "noAnswer": "\"{mode}\" was not saved: SynaBun did not answer. Is the server running?",
4640
+ "oldServer": "\"{mode}\" was not saved: the server that is running was started before this setting existed. Restart SynaBun."
4641
+ }
4642
+ },
4386
4643
  "uc": {
4387
4644
  "restart": "Restart SynaBun to use these: the server that is running was started before they were added.",
4388
4645
  "failed": "The Assistant is running without these: this part of SynaBun did not start ({reason}). Restart SynaBun; if it happens again, the server log says why.",
@@ -4455,6 +4712,52 @@
4455
4712
  "forbidden": "Could not save: this window is not allowed to change settings.",
4456
4713
  "noAnswer": "Could not save: the server did not answer. The switch is back where it was."
4457
4714
  }
4715
+ },
4716
+ "claudeHooks": {
4717
+ "on": "On in {path}. Every Claude Code session you start yourself runs them, from a terminal, VS Code or the desktop app.",
4718
+ "partial": "On for {on} of {total} moments; the others are off in Hooks for standalone Claude Code below.",
4719
+ "off": "Off. The Claude Code sessions you start yourself run without SynaBun's memory, and so does the Assistant's Claude brain.",
4720
+ "applies": "Claude Code reads its hooks when a session starts: a session that is already open keeps the ones it started with.",
4721
+ "blocked": {
4722
+ "user": "Claude Code's own disableAllHooks setting is on in {path}, so no hook runs, SynaBun's included. Turning this on turns that setting off.",
4723
+ "managed": {
4724
+ "disableAll": "Your organization's managed settings turn every Claude Code hook off ({path}). SynaBun cannot change that.",
4725
+ "managedOnly": "Your organization's managed settings run only their own hooks ({path}), so SynaBun's do not run. SynaBun cannot change that."
4726
+ }
4727
+ },
4728
+ "repair": {
4729
+ "stale": "{count} use an older command that a Claude Code started from the Dock, Finder or a desktop app cannot run.",
4730
+ "duplicates": "{count} are listed twice, so they run twice.",
4731
+ "projects": "{names} hold a different copy, so sessions there run each hook twice.",
4732
+ "node": "A Claude Code started from the Dock, Finder or a desktop app would not find Node.js to run them.",
4733
+ "action": "Repair",
4734
+ "title": "Write the current hooks to every settings file again"
4735
+ },
4736
+ "projectsOff": "Claude Code's disableAllHooks is on in {names}: no hook runs there.",
4737
+ "projectsStillOn": "Still on in {names}, in that project's own settings. Turn this on and off again to remove them.",
4738
+ "restart": "Restart SynaBun to see and change this: the server that is running was started before this version and cannot tell whether the hooks are on.",
4739
+ "refused": "This browser cannot see or change the owner's Claude Code settings: it is SynaBun's automation browser. Open Settings in your own browser or in the SynaBun app.",
4740
+ "forbidden": "Only SynaBun's owner can see and change its Claude Code hooks.",
4741
+ "unreadable": "The hooks' state could not be read ({reason}).",
4742
+ "unreadableNoReason": "The hooks' state could not be read.",
4743
+ "settingsUnreadable": "SynaBun cannot read {path} ({reason}), so it cannot tell whether the hooks are on. Fix or remove that file, then open Settings again.",
4744
+ "save": {
4745
+ "failed": {
4746
+ "on": "The hooks were not turned on: {reason}.",
4747
+ "off": "The hooks were not turned off: {reason}.",
4748
+ "repair": "The hooks were not repaired: {reason}."
4749
+ },
4750
+ "noAnswer": {
4751
+ "on": "The hooks were not turned on: SynaBun did not answer. Is the server running?",
4752
+ "off": "The hooks were not turned off: SynaBun did not answer. Is the server running?",
4753
+ "repair": "The hooks were not repaired: SynaBun did not answer. Is the server running?"
4754
+ },
4755
+ "refused": {
4756
+ "on": "The hooks were not turned on: this browser cannot change the owner's settings.",
4757
+ "off": "The hooks were not turned off: this browser cannot change the owner's settings.",
4758
+ "repair": "The hooks were not repaired: this browser cannot change the owner's settings."
4759
+ }
4760
+ }
4458
4761
  }
4459
4762
  },
4460
4763
  "discord": {
@@ -4587,7 +4890,7 @@
4587
4890
  "allCustomIconsReset": "All custom icons reset"
4588
4891
  },
4589
4892
  "judgments": {
4590
- "budgetShareScore": "{provider}: share score {score} \u00b7 confidence {confidence}",
4893
+ "budgetShareScore": "{provider}: share score {score} · confidence {confidence}",
4591
4894
  "showEveryJudgmentAboutThisMemory": ": show every judgment about this memory in the log",
4592
4895
  "checkingTypesafe": "Checking TypeSafe…",
4593
4896
  "learnMoreAtTypesafe": "Learn more at",
@@ -5422,7 +5725,7 @@
5422
5725
  "6": "Stuck on \"Reconnecting\"? Check this computer's internet connection, then press Reconnect now.",
5423
5726
  "7": "Voice notes not transcribed? This computer needs whisper.cpp, its speech model and FFmpeg, which you install yourself; the line under \"Transcribe voice notes\" says what is missing."
5424
5727
  },
5425
- "browserTools": "Not the same as the WhatsApp browser tools. The whatsapp MCP profile lets agents read WhatsApp Web in SynaBun's browser; this tab is you chatting with SynaBun from your phone. They do not share a session.",
5728
+ "browserTools": "Not the same as the WhatsApp browser tools. The browser_whatsapp tool group lets agents read WhatsApp Web in SynaBun's browser; this tab is you chatting with SynaBun from your phone. They do not share a session.",
5426
5729
  "uninstall": "Uninstalling SynaBun does not unlink WhatsApp. Use Unlink or Remove here first, or log SynaBun out under WhatsApp → Settings → Linked devices."
5427
5730
  },
5428
5731
  "stage": {
@@ -5722,14 +6025,15 @@
5722
6025
  "ai_decisions": "jev, typesafe, judgments, api key, cost, tokens, log",
5723
6026
  "projects": "workspace, folder, repository, repo, path, cache, disk space",
5724
6027
  "browser": "chrome, chromium, profile, cookies, user agent, proxy, viewport, headless",
5725
- "connected_tools": "mcp, server, plugin, tools, morelogin, profile, extension",
6028
+ "connected_tools": "mcp, server, plugin, tools, default tools, morelogin, extension",
5726
6029
  "tool_access": "skills, slash commands, permissions, allow, deny, approve",
5727
6030
  "automations": "assistant, knowledge, hooks, greeting, tunnel, remote, cloudflare, social, youtube",
5728
6031
  "messages": "whatsapp, discord, phone, chat, bot, messaging",
5729
6032
  "notifications": "alerts, sound, volume, banner, toast, mute, desktop notification",
5730
6033
  "appearance": "theme, dark mode, skin, color, font, text size, language, locale, icons, zoom, look",
5731
6034
  "code_editor": "editor, code, font, text size, word wrap, minimap, whitespace, indentation, tabs, autocomplete, completion, suggestions, copilot, ghost text, inline, ai, model, ollama, file",
5732
- "about": "version, GitHub, license, dependencies, Node, Electron, Chromium, system, update, credits, copyright, release notes, changelog"
6035
+ "about": "version, GitHub, license, dependencies, Node, Electron, Chromium, system, update, credits, copyright, release notes, changelog",
6036
+ "app": "updates, auto update, automatic updates, startup, start at login, launch at login, login items, boot, autostart, background, tray, menu bar, close window, quit, hardware acceleration, GPU, data folder, logs, restart, version"
5733
6037
  },
5734
6038
  "section": {
5735
6039
  "ai_connections": {
@@ -5777,15 +6081,15 @@
5777
6081
  "advanced_browser_behavior": "proxy, timeout, headless, permissions, location, network, recording, video, security, downloads, certificate"
5778
6082
  },
5779
6083
  "connected_tools": {
5780
- "tool_profiles": "mcp, tool groups, core, standard, context",
5781
6084
  "added_servers": "mcp server, add server, github, plugin, stdio, http, environment variables, oauth, headers",
5782
6085
  "morelogin_connection": "port, antidetect, connect, local api",
5783
6086
  "morelogin_profiles": "browser profile, create profile, default profile",
5784
6087
  "morelogin_credentials": "api id, api key, secret, signed requests, token",
5785
- "morelogin_tool_server": "mcp, add to assistants"
6088
+ "morelogin_tool_server": "mcp, add to assistants",
6089
+ "default_tools": "mcp, tool groups, default tools, context"
5786
6090
  },
5787
6091
  "tool_access": {
5788
- "skills": "slash commands, install, leonardo, synabun",
6092
+ "skills": "slash commands, install, synabun",
5789
6093
  "tool_permissions": "allow, approve, auto approve, ask"
5790
6094
  },
5791
6095
  "automations": {
@@ -5835,6 +6139,12 @@
5835
6139
  "links": "GitHub, repository, releases, changelog, issue, bug report, website, docs, documentation, npm, license, Discord, community",
5836
6140
  "system": "version, Node, Node.js, Electron, Chromium, SQLite, operating system, OS, macOS, Windows, Linux, architecture, data folder, port, install, diagnostics",
5837
6141
  "dependencies": "packages, libraries, npm, licenses, open source, third party, versions, node_modules"
6142
+ },
6143
+ "app": {
6144
+ "updates": "update, auto update, automatic, check, version, upgrade, release, download, install, badge",
6145
+ "startup": "start at login, startup, boot, login items, autostart, launch, background, hidden, tray, minimized, LaunchAgent, systemd",
6146
+ "window": "close, tray, menu bar, quit, keep running, hardware acceleration, GPU, graphics, flicker, blank window",
6147
+ "maintenance": "data folder, logs, log files, restart, troubleshooting, diagnostics, folder, Finder, Explorer"
5838
6148
  }
5839
6149
  },
5840
6150
  "control": {
@@ -6021,10 +6331,73 @@
6021
6331
  "builtWith": "Built with open-source software"
6022
6332
  },
6023
6333
  "afterRestart": "Shown after SynaBun restarts."
6334
+ },
6335
+ "app": {
6336
+ "version": "SynaBun {version}",
6337
+ "update": {
6338
+ "checking": "Checking for updates…",
6339
+ "upToDate": "Up to date",
6340
+ "available": "Version {version} is available",
6341
+ "downloading": "Downloading version {version} ({percent}%)",
6342
+ "ready": "Version {version} is ready to install",
6343
+ "installing": "Installing version {version}",
6344
+ "failed": "The last check failed",
6345
+ "notChecked": "Not checked yet",
6346
+ "unsupported": "This copy does not update itself",
6347
+ "checkedAt": "checked at {time}",
6348
+ "autoHelpDesktop": "Downloads new versions and installs them when SynaBun is idle, after a one-minute notice. Off: SynaBun still checks and tells you, and you install with one click.",
6349
+ "autoHelpServer": "Looks for new versions when SynaBun starts and every half hour, and shows the update badge. Off: it looks only when you ask. Installing always asks first."
6350
+ },
6351
+ "startup": {
6352
+ "helpDesktop": "Opens SynaBun when you log in, so its server is ready for your AI tools.",
6353
+ "helpServer": "Starts SynaBun's server in the background when you log in, with no window or terminal.",
6354
+ "hiddenNeedsLogin": "Applies when SynaBun starts at login.",
6355
+ "requiresApproval": "macOS is waiting for you to allow SynaBun in System Settings > General > Login Items.",
6356
+ "disabledInSystem": {
6357
+ "darwin": "Turned off in System Settings > General > Login Items.",
6358
+ "win32": "Turned off in Windows Settings > Apps > Startup.",
6359
+ "linux": "Turned off in your desktop's startup applications."
6360
+ },
6361
+ "openSettings": {
6362
+ "darwin": "Open Login Items",
6363
+ "win32": "Open Startup apps"
6364
+ },
6365
+ "reason": {
6366
+ "unpackaged": "Only an installed copy of SynaBun can start at login.",
6367
+ "move-to-applications": "Move SynaBun to the Applications folder first.",
6368
+ "no-appimage": "Start SynaBun from its AppImage file to use this.",
6369
+ "not-here": "Not available in a test run or a temporary data folder.",
6370
+ "unsupported": "Not available on this system.",
6371
+ "desktop": "The SynaBun app sets this itself. Update the app to change it here."
6372
+ },
6373
+ "owner": "The SynaBun app opens at login on this data folder. Turn it off in the app first.",
6374
+ "replaced": "The npm install no longer starts at login: this app does now.",
6375
+ "error": {
6376
+ "refused": "The system did not accept the change.",
6377
+ "write-failed": "SynaBun could not write its startup entry.",
6378
+ "no-wscript": "Windows Script Host (wscript.exe) is missing, so SynaBun cannot start without a window.",
6379
+ "bad-path": "SynaBun cannot start at login from a folder whose name has % in it.",
6380
+ "desktop-app": "The SynaBun app opens at login on this data folder. Turn it off in the app first.",
6381
+ "npm-entry": "The npm install's start at login could not be removed. Turn it off there, then try again.",
6382
+ "save-failed": "SynaBun could not save this setting.",
6383
+ "network": "SynaBun did not answer. Try again."
6384
+ }
6385
+ },
6386
+ "window": {
6387
+ "desktopOnly": "Only in the SynaBun desktop app.",
6388
+ "macDock": "On macOS, SynaBun stays in the Dock when its window closes. Quit it from the menu.",
6389
+ "noTray": "This desktop shows no tray icon: open SynaBun again to show its window.",
6390
+ "restartNeeded": "Applies after SynaBun restarts."
6391
+ },
6392
+ "maintenance": {
6393
+ "openFailed": "The folder could not be opened."
6394
+ },
6395
+ "remote": "Open SynaBun on the computer it runs on to change these.",
6396
+ "serverOld": "These controls come with a restart of SynaBun's server.",
6397
+ "saveFailed": "Could not save the setting."
6024
6398
  }
6025
6399
  }
6026
6400
  },
6027
-
6028
6401
  "skills": {
6029
6402
  "title": "Skills Studio",
6030
6403
  "new": "+ New",
@@ -6104,7 +6477,7 @@
6104
6477
  },
6105
6478
  "saved": "Saved",
6106
6479
  "deleteConfirm": "Delete '{name}'? This cannot be undone.",
6107
- "installed": "Installed '{name}' \u2014 restart Claude Code to use",
6480
+ "installed": "Installed '{name}' — restart Claude Code to use",
6108
6481
  "uninstalled": "Uninstalled '{name}'",
6109
6482
  "wizard": {
6110
6483
  "whatCreate": "What do you want to create?",
@@ -6129,15 +6502,42 @@
6129
6502
  }
6130
6503
  },
6131
6504
  "templates": {
6132
- "blank": { "title": "Blank", "description": "Start from scratch" },
6133
- "simple": { "title": "Simple", "description": "Single-file with prompt" },
6134
- "orchestrator": { "title": "Orchestrator", "description": "Multi-step task coordinator" },
6135
- "modular": { "title": "Modular", "description": "File-tree with sub-files" },
6136
- "expert": { "title": "Expert", "description": "Domain specialist" },
6137
- "analysis": { "title": "Analysis", "description": "Code analysis template" },
6138
- "workflow": { "title": "Workflow", "description": "Multi-step workflow" },
6139
- "domainExpert": { "title": "Domain Expert", "description": "Deep knowledge agent" },
6140
- "researcher": { "title": "Researcher", "description": "Information gathering" }
6505
+ "blank": {
6506
+ "title": "Blank",
6507
+ "description": "Start from scratch"
6508
+ },
6509
+ "simple": {
6510
+ "title": "Simple",
6511
+ "description": "Single-file with prompt"
6512
+ },
6513
+ "orchestrator": {
6514
+ "title": "Orchestrator",
6515
+ "description": "Multi-step task coordinator"
6516
+ },
6517
+ "modular": {
6518
+ "title": "Modular",
6519
+ "description": "File-tree with sub-files"
6520
+ },
6521
+ "expert": {
6522
+ "title": "Expert",
6523
+ "description": "Domain specialist"
6524
+ },
6525
+ "analysis": {
6526
+ "title": "Analysis",
6527
+ "description": "Code analysis template"
6528
+ },
6529
+ "workflow": {
6530
+ "title": "Workflow",
6531
+ "description": "Multi-step workflow"
6532
+ },
6533
+ "domainExpert": {
6534
+ "title": "Domain Expert",
6535
+ "description": "Deep knowledge agent"
6536
+ },
6537
+ "researcher": {
6538
+ "title": "Researcher",
6539
+ "description": "Information gathering"
6540
+ }
6141
6541
  },
6142
6542
  "details": {
6143
6543
  "name": "Name",
@@ -6159,7 +6559,2243 @@
6159
6559
  "filenameRequired": "Filename is required"
6160
6560
  }
6161
6561
  },
6162
-
6562
+ "skillsStudio": {
6563
+ "errors": {
6564
+ "invalidProfile": "Choose a supported export profile and try again.",
6565
+ "exportTransformFailed": "The export could not preserve this skill’s files. Review the export profile and try again.",
6566
+ "revisionDamaged": "This version is damaged or has missing files. Restore it from a trusted backup; other versions remain available.",
6567
+ "workerBrowser": "SynaBun’s automation browser cannot act as the owner. Open the app or your own browser to perform this action.",
6568
+ "owner": "This action requires the owner in the app.",
6569
+ "pageSession": "Reopen Skills Studio to renew the page session.",
6570
+ "conflict": "The data changed. Reload and try again.",
6571
+ "missing": "This item is no longer available. Reload the library.",
6572
+ "scanIncomplete": "Scan coverage is incomplete. Review the skipped files.",
6573
+ "scanBlocked": "The scan blocked this action. Review the findings.",
6574
+ "exportBlocked": "Package validation blocked this export. Review its metadata and resources.",
6575
+ "catalogIncomplete": "The catalog is incomplete. Refresh it and try again.",
6576
+ "sourceChanged": "The source changed. Refresh it and review the new revision.",
6577
+ "unsafeSource": "The source contains unsafe paths or unsupported entries. Review it before staging.",
6578
+ "exportReviewRequired": "Review and acknowledge this exact export before downloading.",
6579
+ "invalidName": "The name does not meet this target’s requirements. Rename it or choose a snapshot format.",
6580
+ "invalidFormat": "Choose a supported export format.",
6581
+ "exportIncompatible": "This target cannot preserve the skill’s invocation settings. Choose another profile.",
6582
+ "invalidFrontmatter": "Fix the frontmatter before exporting.",
6583
+ "exportLint": "Package validation blocked this export: {detail}",
6584
+ "sourceDisabled": "Enable this source in Discover first.",
6585
+ "sourceUnavailable": "The source is unavailable. Try again later.",
6586
+ "request": "The request could not be completed ({code})."
6587
+ },
6588
+ "scan": {
6589
+ "reasons": {
6590
+ "assetInvalid": "The image or font is malformed or has bytes after its end; it cannot be treated as passive.",
6591
+ "assetScript": "The image, font or SVG contains script markers or strong text-rule evidence; it cannot be treated as passive.",
6592
+ "assetBudget": "Asset decompression exceeded the per-file, per-skill or compression-ratio budget; coverage is incomplete.",
6593
+ "assetTooLarge": "The asset is too large to inspect completely.",
6594
+ "shellLimit": "Shell analysis reached its limit; coverage is incomplete."
6595
+ },
6596
+ "assetCommand": "An asset contains a command-shaped text line or is marked executable; review its use.",
6597
+ "downloadRun": "This skill mentions download or decode tools ({download}) and execution ({run}); review both locations.",
6598
+ "assetExecution": "Names an image, font or media asset together with a program that could run it, or makes it executable.",
6599
+ "hiddenTotal": "{count} hidden characters, first {listed} listed.",
6600
+ "status": {
6601
+ "clean": "Clean",
6602
+ "findings": "Findings",
6603
+ "incomplete": "Incomplete coverage",
6604
+ "error": "Scan failed",
6605
+ "notScanned": "Not scanned"
6606
+ },
6607
+ "severity": {
6608
+ "critical": "Critical",
6609
+ "high": "High",
6610
+ "medium": "Medium",
6611
+ "low": "Low",
6612
+ "info": "Info"
6613
+ },
6614
+ "summary": "{status} · {count} findings{detail}",
6615
+ "severityCount": "{severity}: {count}",
6616
+ "loading": "Loading scan findings…",
6617
+ "title": "Scan for version {id}",
6618
+ "passed": "passed",
6619
+ "notPassed": "not passed"
6620
+ },
6621
+ "operations": {
6622
+ "licenses": {
6623
+ "perSkill": "Per-skill terms; review LICENSE files",
6624
+ "perPublisher": "Per-publisher terms",
6625
+ "upstream": "Upstream repository terms",
6626
+ "mitZero": "MIT-0 for published skill content",
6627
+ "apacheClient": "Apache-2.0 client",
6628
+ "mitCore": "MIT core",
6629
+ "apacheHosted": "Apache-2.0 client; hosted terms separate",
6630
+ "mitHosted": "MIT CLI; hosted terms separate"
6631
+ },
6632
+ "deprecated": "deprecated upstream",
6633
+ "collection": "Usage collection",
6634
+ "scheduleTitle": "Scheduled checks",
6635
+ "packageNoLosses": "This format drops no fields or files.",
6636
+ "packageSourceScan": "Source version scan: {passed} · {status}",
6637
+ "ready": "Ready",
6638
+ "packageName_preserved": "Archive name: {name} (library name preserved).",
6639
+ "packageName_target": "Archive name: {name} (target naming rules).",
6640
+ "protected": "Protect from retirement",
6641
+ "protectedHelp": "Protect pinned, rare, critical or process skills. Usage counts never trigger automatic deletion.",
6642
+ "discover": "Discover",
6643
+ "health": "Health & usage",
6644
+ "loading": "Loading…",
6645
+ "restart": "Restart SynaBun to use this feature.",
6646
+ "discoverHelp": "Browse pinned upstream folders. Import stages, scans and submits them for review; installation still needs your approval.",
6647
+ "healthHelp": "Check approved bytes, runtime discovery rules, eligibility and current scanner rules. Checks never repair or install skills.",
6648
+ "failed": "Could not complete: {error}",
6649
+ "clear": "Delete usage history",
6650
+ "clearHelp": "Delete local usage evidence. Installed skills and evaluation records stay available.",
6651
+ "catalogLimit": "The catalog must be under 1 MB.",
6652
+ "disclosure": "Sources are off by default. Enabling a source allows explicit refresh and import requests to api.github.com, with repository names and commit IDs. Local skill content and usage never leave this computer. Registry badges are not approval.",
6653
+ "enabled": "Enabled",
6654
+ "disabled": "Off",
6655
+ "enableSource": "Enable source",
6656
+ "disableSource": "Disable source",
6657
+ "refresh": "Refresh catalog",
6658
+ "importCatalog": "Import catalog JSON",
6659
+ "catalogHelp": "Live registry API is unavailable. Import a JSON array with repo, subpath, full commit and license for each GitHub source. Publisher and license claims need review.",
6660
+ "search": "Search cached skills",
6661
+ "cached": "Cached skills: {count}",
6662
+ "stage": "Stage for review",
6663
+ "usage": "Local usage",
6664
+ "collect": "Record minimal usage evidence",
6665
+ "retention": "Retention in days (1–365)",
6666
+ "privacy": "Up to 10,000 events. No prompts, raw commands, outputs or transcript mining. Unknown skill costs remain unknown.",
6667
+ "schedule": "Enable periodic health checks",
6668
+ "cadence": "Cadence in hours (1–168)",
6669
+ "lastCheck": "Last check: {at}",
6670
+ "never": "Not checked",
6671
+ "check": "Check now",
6672
+ "save": "Save settings",
6673
+ "coverage": "What each runtime exposes",
6674
+ "coverage_claude": "Claude Code: Skill request and successful tool result in SynaBun dispatched runs. Discovery is counted separately. Other terminals are not observed.",
6675
+ "coverage_codex": "Codex: no native skill invocation event. A successful exact file read is an inferred load; it is never counted as an invocation.",
6676
+ "coverage_opencode": "OpenCode: completed skill tool calls in SynaBun dispatched runs. A task result does not prove skill quality.",
6677
+ "counts": "Discovered: {discovered} · Requested: {requested} · Invoked: {invoked} · Inferred loads: {loaded} · Failed: {failed}",
6678
+ "noUsage": "No observed usage in the retention window. This does not mean the skill was unused.",
6679
+ "installations": "Installed skills",
6680
+ "state_attention": "Needs attention",
6681
+ "state_unverified_runtime": "Files checked; runtime execution is unverified",
6682
+ "state_checked": "Checks completed; execution is unverified",
6683
+ "state_error": "Check failed",
6684
+ "issue_missing": "Installed folder is missing",
6685
+ "issue_changed": "Installed bytes changed",
6686
+ "issue_drift": "Installation drift",
6687
+ "issue_not_discoverable": "Runtime discovery rules no longer find it",
6688
+ "issue_disabled": "Disabled in runtime settings",
6689
+ "issue_not_listed": "Runtime did not list it",
6690
+ "issue_scan_review": "Security findings need review",
6691
+ "issue_scan_blocked": "Security check blocks use of these bytes",
6692
+ "issue_check_error": "Could not complete all checks",
6693
+ "noChecks": "No installed skills have been checked yet.",
6694
+ "proposals": "Maintenance suggestions",
6695
+ "proposalHelp": "Repeated observed failures can suggest investigation. Changes, model tests and retirement are always explicit; usage alone never proves quality.",
6696
+ "proposalFailures": "Investigate {count} tool failures in the Test tab.",
6697
+ "scanners": "Optional scanners",
6698
+ "scannerHelp": "Local scanning always runs. Deeper engines require a pinned, isolated adapter; hosted engines also need reviewed retention and service terms. Unavailable and skipped engines are never passes.",
6699
+ "unavailable": "Unavailable; no verified adapter configured",
6700
+ "packageTitle": "Review export",
6701
+ "packageHelp": "Source revision: {revision}. Export digest: {digest}. Files: {count}.",
6702
+ "packageLosses": "Unsupported fields removed from this export: {fields}. Their behavior is not preserved.",
6703
+ "packageLicense": "License: {license}. Check redistribution rights before sharing.",
6704
+ "unknown": "Unknown",
6705
+ "download": "Download checked export",
6706
+ "formats": {
6707
+ "bundle": "SynaBun bundle",
6708
+ "skill": ".skill archive",
6709
+ "portable": "Agent Skills folder ZIP",
6710
+ "claude-upload": "Claude upload ZIP",
6711
+ "claude-plugin": "Claude plugin bundle",
6712
+ "claude-api": "Claude API snapshot",
6713
+ "github": "GitHub distribution ZIP"
6714
+ }
6715
+ },
6716
+ "guestDisabled": "Skills Studio is turned off for guests by the host.",
6717
+ "title": "Skills Studio",
6718
+ "shell": {
6719
+ "collapseRail": "Show or hide the side rail",
6720
+ "dock": "Dock beside the side panels",
6721
+ "dockHelp": "Dock: fill the work area beside the side panels, so a conversation stays usable next to the Studio",
6722
+ "dim": "Dim the background",
6723
+ "dimHelp": "Dim the background: the page behind waits until the Studio closes",
6724
+ "close": "Close Skills Studio",
6725
+ "docked": "Docked beside the side panels.",
6726
+ "undocked": "Floating window.",
6727
+ "dimmed": "Background dimmed.",
6728
+ "notDimmed": "Background not dimmed.",
6729
+ "loading": "Reading the skills…",
6730
+ "olderServer": "This server is older than this page: restart SynaBun.",
6731
+ "olderServerTitle": "Restart SynaBun to use this Skills Studio",
6732
+ "olderServerHelp": "The page was updated but the server is still the older one, which has no Skills Service. Restart SynaBun (Apps → Restart Server), then open Skills Studio again.",
6733
+ "retry": "Try again"
6734
+ },
6735
+ "rail": {
6736
+ "library": "Library",
6737
+ "review": "Review",
6738
+ "create": "Create",
6739
+ "waiting": "waiting for you",
6740
+ "viewsTitle": "Views",
6741
+ "projectsTitle": "Projects",
6742
+ "runtimesTitle": "Runtimes",
6743
+ "views": {
6744
+ "attention": "Needs attention",
6745
+ "mine": "Mine",
6746
+ "synabun": "From SynaBun",
6747
+ "plugins": "Plugins",
6748
+ "account": "Claude account",
6749
+ "drafts": "Drafts",
6750
+ "archived": "Archived"
6751
+ },
6752
+ "runtimeState": {
6753
+ "ready": "ready",
6754
+ "bridge": "old format — update",
6755
+ "empty": "no skills yet",
6756
+ "unknown": "not found"
6757
+ },
6758
+ "runtimeFix": "{runtime}: skills reach it through old bridge files. Open Settings → Skills → Skill folders to move them to skill folders.",
6759
+ "runtimeFixFailed": "Settings could not be opened. Open Settings → Skills → Skill folders yourself."
6760
+ },
6761
+ "runtime": {
6762
+ "claude": "Claude Code",
6763
+ "codex": "Codex",
6764
+ "opencode": "OpenCode",
6765
+ "agents": "Shared folder"
6766
+ },
6767
+ "runtimeState": {
6768
+ "installed": "installed",
6769
+ "outdated": "an older version is installed",
6770
+ "present": "in a folder it reads",
6771
+ "bridge": "reached through an old bridge",
6772
+ "none": "not installed"
6773
+ },
6774
+ "kind": {
6775
+ "skill": "Skill",
6776
+ "agent": "Agent",
6777
+ "command": "Command",
6778
+ "commandLegacy": "Command · legacy"
6779
+ },
6780
+ "source": {
6781
+ "mine": "All projects",
6782
+ "project": "Project",
6783
+ "synabun": "From SynaBun",
6784
+ "plugin": "Plugin",
6785
+ "account": "Claude account",
6786
+ "system": "Runtime's own",
6787
+ "shared": "Shared (~/.agents)",
6788
+ "library": "Library",
6789
+ "legacyBridge": "Old bridge",
6790
+ "pluginCopies": {
6791
+ "one": "{plugin} · {count} cached copy",
6792
+ "other": "{plugin} · {count} cached copies"
6793
+ },
6794
+ "accounts": {
6795
+ "one": "{count} account",
6796
+ "other": "{count} accounts"
6797
+ },
6798
+ "libraryVersions": {
6799
+ "one": "{count} version",
6800
+ "other": "{count} versions"
6801
+ },
6802
+ "libraryDraft": "draft, no version yet",
6803
+ "installedCopies": {
6804
+ "one": "{count} installed copy",
6805
+ "other": "{count} installed copies"
6806
+ }
6807
+ },
6808
+ "health": {
6809
+ "not-text": "Not UTF-8 text",
6810
+ "invalid": {
6811
+ "one": "{count} problem",
6812
+ "other": "{count} problems"
6813
+ },
6814
+ "warnings": {
6815
+ "one": "{count} warning",
6816
+ "other": "{count} warnings"
6817
+ },
6818
+ "update": "Update available",
6819
+ "shadowed": "Shadowed",
6820
+ "shadowedWhy": "{runtime} uses another skill of this name instead of this one.",
6821
+ "twice": "Defined twice",
6822
+ "twiceWhy": "{runtime} lists two skills of this name: a model may pick either.",
6823
+ "sameDescription": "Same description",
6824
+ "sameDescriptionWhy": "The same description as {names}: a model cannot tell them apart.",
6825
+ "bridge": "Old bridge",
6826
+ "review": "In review",
6827
+ "draft": "Draft",
6828
+ "readonly": "Read-only",
6829
+ "ok": "No problems"
6830
+ },
6831
+ "library": {
6832
+ "title": "Library",
6833
+ "searchLabel": "Search skills, agents and commands",
6834
+ "searchPlaceholder": "Search skills, agents, commands…",
6835
+ "new": "New",
6836
+ "filter": {
6837
+ "kind": "Kind",
6838
+ "source": "Source",
6839
+ "runtime": "Runtime",
6840
+ "health": "Health",
6841
+ "kindAll": "All kinds",
6842
+ "sourceAll": "All sources",
6843
+ "runtimeAll": "All runtimes",
6844
+ "healthAll": "Any health"
6845
+ },
6846
+ "healthFilter": {
6847
+ "attention": "Needs attention",
6848
+ "invalid": "Has problems",
6849
+ "warnings": "Has warnings",
6850
+ "update": "Update available",
6851
+ "duplicates": "Duplicates and shadowing",
6852
+ "drafts": "Drafts",
6853
+ "readonly": "Read-only",
6854
+ "ok": "No problems found"
6855
+ },
6856
+ "sort": {
6857
+ "label": "Sort",
6858
+ "attention": "Needs attention first",
6859
+ "name": "Name",
6860
+ "updated": "Recently changed",
6861
+ "kind": "Kind",
6862
+ "source": "Source"
6863
+ },
6864
+ "select": "Select {name}",
6865
+ "selectAll": "Select every row shown",
6866
+ "noDescription": "No description",
6867
+ "unknownDate": "Not known",
6868
+ "unknownDateRestart": "Not known yet: restart SynaBun to see when it changed",
6869
+ "updatedRestart": "Restart SynaBun to see when each one last changed.",
6870
+ "caption": "Skills, agents and commands",
6871
+ "col": {
6872
+ "name": "Name",
6873
+ "kind": "Kind",
6874
+ "source": "Source",
6875
+ "health": "Health",
6876
+ "runtimes": "Runtimes",
6877
+ "updated": "Updated"
6878
+ },
6879
+ "shown": "{shown} of {total} shown",
6880
+ "attentionCount": {
6881
+ "one": "{count} needs attention",
6882
+ "other": "{count} need attention"
6883
+ },
6884
+ "diagnostics": {
6885
+ "one": "{count} folder could not be read",
6886
+ "other": "{count} folders could not be read"
6887
+ },
6888
+ "truncated": "The scan stopped at its limits: some folders were not read",
6889
+ "loading": "Reading every runtime folder…",
6890
+ "loadFailed": "The skills could not be read",
6891
+ "emptyTitle": "No skills yet",
6892
+ "emptyHelp": "Skills, agents and commands from Claude Code, Codex and OpenCode show here. Create the first one, or import a bundle.",
6893
+ "noMatchTitle": "Nothing matches these filters",
6894
+ "noMatchHelp": "Clear the filters or search for other words.",
6895
+ "clearFilters": "Clear filters",
6896
+ "kept": {
6897
+ "one": "{count} unsaved change was kept from an earlier session ({names}).",
6898
+ "other": "{count} unsaved changes were kept from an earlier session ({names})."
6899
+ },
6900
+ "keptReopen": "Reopen",
6901
+ "keptDiscard": "Discard",
6902
+ "keptMore": {
6903
+ "one": "{count} more skill has kept changes: open it from the Library.",
6904
+ "other": "{count} more skills have kept changes: open them from the Library."
6905
+ },
6906
+ "keptDiscardTitle": "Discard the kept changes?",
6907
+ "keptDiscardHelp": {
6908
+ "one": "The unsaved change kept from an earlier session will be gone. The files stay as they are.",
6909
+ "other": "The {count} unsaved changes kept from an earlier session will be gone. The files stay as they are."
6910
+ },
6911
+ "updatesNotice": {
6912
+ "one": "SynaBun ships a newer version of {names}.",
6913
+ "other": "SynaBun ships newer versions of {count} skills: {names}."
6914
+ },
6915
+ "reviewUpdates": "Review the update",
6916
+ "diagnosticsTitle": "Folders that could not be read",
6917
+ "diagnosticsHelp": "These were left out of the Library, each with the reason.",
6918
+ "diagRoot": "The folder itself",
6919
+ "diagReason": {
6920
+ "no-skill-md": "a folder without SKILL.md, so not a skill",
6921
+ "unreadable-head": "its SKILL.md cannot be read",
6922
+ "link": "a link that leads out of its folder",
6923
+ "too-deep": "nested deeper than SynaBun reads",
6924
+ "unreadable": "cannot be read",
6925
+ "outside-project": "a link out of the project",
6926
+ "not-a-folder": "not a folder"
6927
+ },
6928
+ "bulk": {
6929
+ "region": "Selected items",
6930
+ "selected": {
6931
+ "one": "{count} selected",
6932
+ "other": "{count} selected"
6933
+ },
6934
+ "adopt": "Add to library ({count})",
6935
+ "adoptHelp": "Take these folders into SynaBun's library, so they get versions and are published from there",
6936
+ "export": "Export ({count})",
6937
+ "delete": "Delete… ({count})",
6938
+ "clear": "Clear selection",
6939
+ "adoptTitle": {
6940
+ "one": "Add {count} skill to the library?",
6941
+ "other": "Add {count} skills to the library?"
6942
+ },
6943
+ "adoptExplain": "Each folder is copied into SynaBun's library as its first version. The folders stay where they are; later changes reach them only when you publish.",
6944
+ "adoptConfirm": "Add to library",
6945
+ "adoptDone": {
6946
+ "one": "{count} skill added to the library.",
6947
+ "other": "{count} skills added to the library."
6948
+ },
6949
+ "adoptPartial": "{done} added, {failed} not: {first}",
6950
+ "exported": {
6951
+ "one": "{count} export started.",
6952
+ "other": "{count} exports started."
6953
+ },
6954
+ "deleteType": "Type {word} to confirm",
6955
+ "deleteWord": "delete",
6956
+ "deleteTitle": {
6957
+ "one": "Delete {count} item?",
6958
+ "other": "Delete {count} items?"
6959
+ },
6960
+ "deleteExplain": "These are removed from where they are. This cannot be undone.",
6961
+ "deleteLibraryExplain": "These leave SynaBun's library: their drafts and versions are kept in its archive, and a folder one came from stays as it is.",
6962
+ "deleteUnsaved": {
6963
+ "one": "{count} of them has unsaved changes, which go with it.",
6964
+ "other": "{count} of them have unsaved changes, which go with them."
6965
+ },
6966
+ "deleteConfirm": "Delete",
6967
+ "deleteTypeError": "Type the word to confirm.",
6968
+ "deletePartial": "{done} deleted, {failed} not: {first}",
6969
+ "deleted": {
6970
+ "one": "{count} item deleted.",
6971
+ "other": "{count} items deleted."
6972
+ }
6973
+ },
6974
+ "install": "Install",
6975
+ "installHelp": "Approved in Review: open Publish to install it.",
6976
+ "archivedTitle": "Archived skills",
6977
+ "archivedEmpty": "Nothing was deleted from the library.",
6978
+ "archivedHelp": "A skill deleted from the library keeps its versions. Restore puts it back as it was.",
6979
+ "archivedWhen": "deleted {when} by {by}",
6980
+ "archivedVersions": {
6981
+ "one": "{count} version",
6982
+ "other": "{count} versions"
6983
+ },
6984
+ "restore": "Restore",
6985
+ "restored": "{name} is back in the library.",
6986
+ "restoreFailed": "It could not be restored: {error}",
6987
+ "alsoInstall": "Also install for {targets}",
6988
+ "alsoInstallHelp": "One press: the installed version goes to the assistants that do not have it yet."
6989
+ },
6990
+ "ws": {
6991
+ "breadcrumb": "Where you are",
6992
+ "save": "Save",
6993
+ "publish": "Publish…",
6994
+ "more": "More actions",
6995
+ "unsaved": "unsaved changes",
6996
+ "tabs": {
6997
+ "edit": "Edit",
6998
+ "test": "Test",
6999
+ "versions": "Versions",
7000
+ "publish": "Publish"
7001
+ },
7002
+ "customize": "Customize a copy",
7003
+ "adoptNow": "Add to library",
7004
+ "reviewChanges": "Review changes",
7005
+ "update": "Update",
7006
+ "keepMine": "Keep mine",
7007
+ "saveVersion": "Save as version",
7008
+ "openReview": "Open in Review",
7009
+ "loadFailed": "This could not be opened",
7010
+ "loading": "Opening…",
7011
+ "banner": {
7012
+ "guest": "Read-only for guests: only the host changes skills.",
7013
+ "bundled": "Ships with SynaBun, so it is read-only here: an app update replaces it. Customize a copy to make it your own.",
7014
+ "plugin": "From the plugin {plugin}: read-only. The plugin updates it.",
7015
+ "account": "Synced from your Claude account: read-only here.",
7016
+ "system": "The runtime's own skill: read-only.",
7017
+ "shared": "In the shared ~/.agents/skills folder, which SynaBun writes to only when you turn it on in Settings → Skills.",
7018
+ "not-writable": "SynaBun does not write to this folder: read-only.",
7019
+ "not-addressable": "This file is outside the folders SynaBun edits: read-only.",
7020
+ "not-text": "SKILL.md is not UTF-8 text (UTF-16 or binary): it is shown, not edited. Save it as UTF-8 to edit it.",
7021
+ "adopt": "This folder ({path}) is not in SynaBun's library yet. Your first save adds it there as a draft; publishing writes it back.",
7022
+ "update": "SynaBun ships a newer {name} than the copy that is installed.",
7023
+ "draftChanged": {
7024
+ "one": "Draft: {count} file changed since its last version. Not installed until you publish.",
7025
+ "other": "Draft: {count} files changed since its last version. Not installed until you publish."
7026
+ },
7027
+ "newDraft": "A new skill: a draft in the library, not installed anywhere yet.",
7028
+ "review": {
7029
+ "pending": "A submission of this skill waits in Review.",
7030
+ "changes_requested": "You asked for changes to this skill's submission.",
7031
+ "approved": "Approved in Review, not installed yet.",
7032
+ "partial": "Installed in part: some targets failed.",
7033
+ "publish_failed": "The install of its approved version failed."
7034
+ },
7035
+ "alsoInstall": "Installed for {where}. Also install it for {targets}?"
7036
+ },
7037
+ "menu": {
7038
+ "export": "Export as a bundle",
7039
+ "copyPath": "Copy the folder's path",
7040
+ "close": "Close this workspace",
7041
+ "delete": "Delete…",
7042
+ "deleteLibrary": "Delete from library…"
7043
+ },
7044
+ "deleteTitle": "Delete {name}?",
7045
+ "deleteSkill": "The skill folder {path} and every file in it are removed. This cannot be undone.",
7046
+ "deleteFile": "The file {path} is removed. This cannot be undone.",
7047
+ "deleteUnsaved": {
7048
+ "one": "{count} file has changes that are not saved, and they go with it:",
7049
+ "other": "{count} files have changes that are not saved, and they go with it:"
7050
+ },
7051
+ "deleteAndDiscard": "Delete and discard",
7052
+ "delete": "Delete",
7053
+ "libraryDeleteTitle": "Delete {name} from the library?",
7054
+ "libraryDeleteBody": "It leaves SynaBun's library: its draft and versions are no longer listed (they are kept in the library's archive). It is installed nowhere, so no runtime loses it.",
7055
+ "libraryDeleteFolderStays": "The folder it came from, {path}, stays as it is.",
7056
+ "libraryDeleteReviews": {
7057
+ "one": "Its open review is closed.",
7058
+ "other": "Its {count} open reviews are closed."
7059
+ },
7060
+ "libraryDelete": "Delete from library",
7061
+ "libraryDeleteInstalledTitle": "{name} is installed",
7062
+ "libraryDeleteInstalled": {
7063
+ "one": "It is installed in {count} place. Remove that installation in Publish first, then delete it from the library.",
7064
+ "other": "It is installed in {count} places. Remove those installations in Publish first, then delete it from the library."
7065
+ },
7066
+ "libraryDeleteOpenPublish": "Open Publish",
7067
+ "libraryDeleteRestart": "Restart SynaBun to delete skills from the library.",
7068
+ "installFor": "Install for {targets}",
7069
+ "alsoInstallFor": "Also install for {targets}"
7070
+ },
7071
+ "test": {
7072
+ "runtimeActual": "{actual} (requested: {requested})",
7073
+ "title": "Test",
7074
+ "provider": {
7075
+ "claude-code": "Claude Code",
7076
+ "codex": "Codex",
7077
+ "opencode": "OpenCode"
7078
+ },
7079
+ "unavailable": {
7080
+ "olderTitle": "Tests need a restart of SynaBun",
7081
+ "older": "This server was started before evaluations existed. Restart SynaBun (Apps → Restart Server) to run tests here.",
7082
+ "notLibraryTitle": "Tests run on library skills",
7083
+ "notLibrary": "This skill lives in a runtime's folder. Add it to the library first: its versions are what a test runs.",
7084
+ "noRevisionTitle": "Save a version to test it",
7085
+ "noRevision": "A test runs one saved version of the skill. Save this draft as a version first.",
7086
+ "saveVersion": "Go to Versions",
7087
+ "guestTitle": "Tests are the owner's",
7088
+ "guest": "Running tests spends the owner's model budget, so it is not available to guests."
7089
+ },
7090
+ "noSuite": {
7091
+ "title": "No test prompts yet",
7092
+ "body": "This version has no {path}. Add task cases (a request and what a good answer holds) and trigger cases (requests that should and should not pick the skill), or import them from another tool.",
7093
+ "edit": "Write them in Edit"
7094
+ },
7095
+ "import": {
7096
+ "button": "Import test prompts…",
7097
+ "help": "Reads the skill-creator's evals.json (expectations), the Agent Skills guide's (assertions) and a trigger set (eval_set.json). Duplicates become one case; train, validation and held-out splits are made for you.",
7098
+ "ready": "{tasks} task cases and {triggers} trigger cases read ({dialects}).",
7099
+ "failed": "These files cannot be imported:",
7100
+ "save": "Save as {path} in the draft",
7101
+ "saved": "Saved {path} in the draft. Save a version to test it.",
7102
+ "saveFailed": "The test prompts could not be saved: {error}",
7103
+ "tooLarge": "A file to import is at most 1 MB."
7104
+ },
7105
+ "codex": {
7106
+ "warning": "Codex can read files on this Mac while it tests; only use it on skills you trust.",
7107
+ "ask": "Codex runs this version only after you allow it.",
7108
+ "askBoth": "Codex runs this version, and the earlier one it is compared with, only after you allow them.",
7109
+ "confirm": "Allow Codex for this version",
7110
+ "confirmed": "Codex is allowed for this version.",
7111
+ "confirmedAt": "Codex was allowed for this version {when}.",
7112
+ "undo": "Take it back",
7113
+ "failed": "Codex could not be changed for this version: {error}",
7114
+ "announceOn": "Codex is allowed for this version.",
7115
+ "announceOff": "Codex is no longer allowed for this version."
7116
+ },
7117
+ "head": {
7118
+ "version": "Version {id}",
7119
+ "reading": "Reading the test prompts…",
7120
+ "tasks": {
7121
+ "one": "{count} task case",
7122
+ "other": "{count} task cases"
7123
+ },
7124
+ "triggers": {
7125
+ "one": "{count} trigger case",
7126
+ "other": "{count} trigger cases"
7127
+ },
7128
+ "polarity": "{positive} should pick it, {nearMiss} near-misses",
7129
+ "held": {
7130
+ "one": "{count} held out",
7131
+ "other": "{count} held out"
7132
+ },
7133
+ "safety": "Each run works in a folder of its own, with a copy of the skill: nothing is installed into your runtimes.",
7134
+ "draftChanged": "Your draft has changes that are not in this version. Tests run the saved version.",
7135
+ "suiteErrors": {
7136
+ "one": "The test prompts have {count} problem: fix it in Edit before running.",
7137
+ "other": "The test prompts have {count} problems: fix them in Edit before running."
7138
+ },
7139
+ "fixInEdit": "Open in Edit",
7140
+ "suiteUnread": "The test prompts could not be read: {error}",
7141
+ "safetyHeld": "{provider} loads only the skill under test (no settings, hooks or plugins of yours) and reads and writes files in the run's folder only.",
7142
+ "safetyShell": "A case that asks for a shell gets one with no network and no access to your home folder.",
7143
+ "safetyCodex": "Codex can read files anywhere on this Mac while it tests, and what it reads can reach OpenAI: it runs only versions you allow.",
7144
+ "fixtureConfig": "\"{file}\" would be copied into {name}, which a runtime loads as its own settings or code: test files never go there. Keep it under evals/files/.",
7145
+ "fixtureAlias": "\"{file}\" has a name another file system can read as another file's (like CLAUDE~1, or a \":\" stream): give it a plain name.",
7146
+ "fixtureInstructions": "\"{file}\" is an instruction file ({name}) in the test folder, which Claude Code, Codex or OpenCode reads as instructions for the whole run — at the top, or a nested one once a runtime reads a file beside it. Rename it: a runtime reads a file with that name as instructions, not as test data."
7147
+ },
7148
+ "fixtures": {
7149
+ "title": "What happens to test files",
7150
+ "refused": "A case's files are copied into its run's folder, except the ones a runtime would load by itself: settings folders at any depth (.claude, .codex, .opencode, .agents, .git and the like), opencode.json, .mcp.json and .envrc at the top, and the instruction files CLAUDE.md, CLAUDE.local.md, AGENTS.md and AGENTS.override.md at any depth.",
7151
+ "nested": "An instruction file is refused wherever it sits, not only at the top: OpenCode adds a nested AGENTS.md to its instructions once it reads a file in that folder, and Codex's prompt tells the model to follow the AGENTS.md of a folder it works in, so even a deep copy would steer the run. Give test data another name instead. A trial may still write a CLAUDE.md or an AGENTS.md as its own output; a grader then gets it under a name no runtime loads.",
7152
+ "git": "A shell step can use git in its own folder: init, add, commit, log, diff, branch and checkout work, with the repository kept beside the folder (there is no .git in it) and SynaBun evaluation as the author unless the test sets its own. Codex's own sandbox does not let its shell create a repository in the folder.",
7153
+ "symlinks": "Claude Code and OpenCode test-run shell steps cannot create symlinks, even links within the test folder: this prevents a test from swapping a link to read outside its folder. Operations that create or preserve links fail: python -m venv, installing a local npm package, pnpm/yarn links, tar extraction, cp -a or rsync preserving links, and git checkout of a committed symlink. Ordinary git checkout without symlinks still works.",
7154
+ "symlinkWorkaround": "Use regular files in evals/files/ and copy them without preserving symlinks; adapt the case to avoid creating links. There is no switch to allow symlinks. Do not assume venv --copies works: some Python builds still require links. Network installs remain unavailable."
7155
+ },
7156
+ "queue": {
7157
+ "busy": {
7158
+ "one": "{count} evaluation running or waiting",
7159
+ "other": "{count} evaluations running or waiting"
7160
+ }
7161
+ },
7162
+ "setup": {
7163
+ "title": "Run setup",
7164
+ "what": "What to run",
7165
+ "kinds": {
7166
+ "both": "Tasks and triggers",
7167
+ "task": "Tasks",
7168
+ "trigger": "Triggers"
7169
+ },
7170
+ "runtime": "Runtime",
7171
+ "addRuntime": "Compare on another runtime",
7172
+ "removeRuntime": "Remove this runtime",
7173
+ "providerDefault": "{provider} · cheapest model",
7174
+ "providerDefaultModel": "{provider} · {model} (cheapest)",
7175
+ "providerOff": "{provider} · {reason}",
7176
+ "baseline": "Compare with",
7177
+ "baselines": {
7178
+ "no-skill": "No skill (baseline)",
7179
+ "revision": "An earlier version",
7180
+ "off": "Nothing (cheaper)"
7181
+ },
7182
+ "baselineVersion": "Earlier version",
7183
+ "versionN": "Version {n}",
7184
+ "ceilings": "Ceilings",
7185
+ "budget": "Spend ceiling",
7186
+ "budgetN": "Up to ${n}",
7187
+ "minutes": "Time ceiling",
7188
+ "minutesN": "{n} min",
7189
+ "more": "More options",
7190
+ "moreHelp": "Repeats make a reading steadier (a trigger passes at a rate of half or more). The grader is another provider than the one that wrote the skill when one is available.",
7191
+ "taskReps": "Task repeats",
7192
+ "triggerReps": "Trigger repeats",
7193
+ "grader": "Graded by",
7194
+ "graderAuto": "Automatic (independent)",
7195
+ "judge": "Compare answers side by side where a case asks"
7196
+ },
7197
+ "estimate": {
7198
+ "working": "Estimating…",
7199
+ "none": "The estimate appears here.",
7200
+ "runs": {
7201
+ "one": "{count} run",
7202
+ "other": "{count} runs"
7203
+ },
7204
+ "usd": "about {low}–{high}",
7205
+ "free": "free models",
7206
+ "unpricedOnly": "no price known",
7207
+ "unpriced": "no price for {names} (counted as it runs)",
7208
+ "minutes": "about {low}–{high} min",
7209
+ "minutesOne": "about {n} min",
7210
+ "grader": "Graded by {grader}.",
7211
+ "graderSame": "not independent: the same provider wrote the skill",
7212
+ "notIndependent": "No other provider can grade here, so {provider} grades its own skill: the grades are marked as not independent.",
7213
+ "contamination": "{provider} also finds a skill with this name outside the test ({paths}): the baseline may see it.",
7214
+ "skipped": {
7215
+ "shell": "{caseId} needs a shell, which this runtime has only under the macOS sandbox: it is skipped.",
7216
+ "other": "{caseId} is skipped."
7217
+ },
7218
+ "ceiling": {
7219
+ "budget": "The estimate is above the spend ceiling: raise it or run fewer cases.",
7220
+ "time": "The estimate is above the time ceiling: raise it or run fewer cases."
7221
+ },
7222
+ "oneStep": "can exceed by up to one step"
7223
+ },
7224
+ "bar": {
7225
+ "run": "Run evals",
7226
+ "runAgain": "Run again",
7227
+ "starting": "Starting…",
7228
+ "running": "An evaluation is running: a new one waits in the queue.",
7229
+ "ready": "Runs the train and validation cases. The held-out cases stay sealed.",
7230
+ "fixFirst": "Fix the test prompts first.",
7231
+ "onlyHeld": "Every case is held out: add train or validation cases to run evals.",
7232
+ "noRuntime": "No runtime can run here: install Claude Code, Codex or OpenCode.",
7233
+ "raiseCeiling": "Raise the ceiling to run this.",
7234
+ "final": "Final check",
7235
+ "finalHelp": "Runs only the held-out cases, once, to confirm a version before you publish it. Using them to choose edits wears them out.",
7236
+ "optimise": "Improve description",
7237
+ "optimiseHelp": "Rewrites the description at most four times on the train triggers, keeps the best on validation and checks it once on the held-out set. The result is a candidate version: nothing changes by itself.",
7238
+ "guest": "Running tests is the owner's.",
7239
+ "codexFirst": "Allow Codex for this version first, or pick another runtime."
7240
+ },
7241
+ "state": {
7242
+ "queued": "Waiting",
7243
+ "preparing": "Preparing",
7244
+ "running": "Running",
7245
+ "grading": "Grading",
7246
+ "done": "Done",
7247
+ "failed": "Failed",
7248
+ "cancelled": "Cancelled",
7249
+ "stopped": "Stopped",
7250
+ "interrupted": "Interrupted",
7251
+ "damaged": "Damaged"
7252
+ },
7253
+ "trialState": {
7254
+ "pending": "Waiting",
7255
+ "running": "Running",
7256
+ "completed": "Finished",
7257
+ "failed": "Failed",
7258
+ "timed_out": "Timed out",
7259
+ "skipped": "Skipped",
7260
+ "cancelled": "Cancelled"
7261
+ },
7262
+ "tone": {
7263
+ "running": "running",
7264
+ "pending": "waiting",
7265
+ "skipped": "skipped",
7266
+ "error": "no result",
7267
+ "pass": "passed",
7268
+ "fail": "failed",
7269
+ "partial": "partly passed",
7270
+ "neutral": "not graded"
7271
+ },
7272
+ "config": {
7273
+ "candidate": "With the skill",
7274
+ "baseline": "Baseline"
7275
+ },
7276
+ "split": {
7277
+ "train": "train",
7278
+ "validation": "validation",
7279
+ "test": "held out"
7280
+ },
7281
+ "run": {
7282
+ "title": {
7283
+ "evals": "Evaluation",
7284
+ "final": "Final check (held-out)",
7285
+ "optimise": "Description optimisation"
7286
+ },
7287
+ "none": "No evaluation has run for this skill yet. Press Run evals: the defaults are cheap.",
7288
+ "facts": "On {runtimes}, {when}",
7289
+ "queued": {
7290
+ "one": "Waiting: {count} evaluation ahead",
7291
+ "other": "Waiting: {count} evaluations ahead"
7292
+ },
7293
+ "spend": "{spent} of {ceiling}",
7294
+ "spendTitle": "What this evaluation has spent, against its ceiling",
7295
+ "estimated": "estimated {low}–{high}",
7296
+ "progress": {
7297
+ "one": "{done} of {count} run finished",
7298
+ "other": "{done} of {count} runs finished"
7299
+ },
7300
+ "trials": "Runs",
7301
+ "cancel": "Cancel",
7302
+ "cancelling": "Cancelling…",
7303
+ "started": "The evaluation started.",
7304
+ "nowState": "Evaluation: {state}.",
7305
+ "stopped": {
7306
+ "budget": "Stopped at the spend ceiling. What was measured is kept.",
7307
+ "time": "Stopped at the time ceiling. What was measured is kept."
7308
+ }
7309
+ },
7310
+ "report": {
7311
+ "loading": "Reading the results…",
7312
+ "stale": {
7313
+ "revision": "These results are for an older version of the skill.",
7314
+ "suite": "The test prompts changed since this ran."
7315
+ },
7316
+ "task": "Tasks",
7317
+ "trigger": "Triggers",
7318
+ "preference": "Preference fidelity",
7319
+ "withSkill": "with the skill",
7320
+ "withoutSkill": "without",
7321
+ "withEarlier": "earlier version",
7322
+ "points": "pts",
7323
+ "deltaTitle": "With the skill minus the baseline, case by case and repeat by repeat",
7324
+ "pairs": {
7325
+ "one": "{count} pair",
7326
+ "other": "{count} pairs"
7327
+ },
7328
+ "queriesRight": "queries read right",
7329
+ "polarity": "should pick: {pos} · near-misses: {neg}",
7330
+ "unread": {
7331
+ "one": "{count} without a reading",
7332
+ "other": "{count} without a reading"
7333
+ },
7334
+ "failedRuns": {
7335
+ "one": "{count} run failed",
7336
+ "other": "{count} runs failed"
7337
+ },
7338
+ "taskCases": "Task cases",
7339
+ "triggerCases": "Trigger cases",
7340
+ "case": "Case",
7341
+ "change": "Change",
7342
+ "open": "Open",
7343
+ "judgedTitle": "A blind comparison of the two answers",
7344
+ "query": "Query",
7345
+ "expected": "Expected",
7346
+ "reading": "Reading",
7347
+ "result": "Result",
7348
+ "shouldPick": "Should pick the skill",
7349
+ "nearMiss": "Near-miss: should not",
7350
+ "picked": "picked {n} of {of}",
7351
+ "noReading": "No reading (the run did not finish)",
7352
+ "right": "Right",
7353
+ "wrong": "Wrong",
7354
+ "notes": {
7355
+ "one": "{count} note about the test prompts",
7356
+ "other": "{count} notes about the test prompts"
7357
+ },
7358
+ "rerun": {
7359
+ "one": "Run the {count} case that failed again",
7360
+ "other": "Run the {count} cases that failed again"
7361
+ },
7362
+ "empty": "Nothing was measured.",
7363
+ "colWith": "With the skill",
7364
+ "colWithout": "Without",
7365
+ "colEarlier": "Earlier version"
7366
+ },
7367
+ "outcome": {
7368
+ "better": "better",
7369
+ "worse": "worse",
7370
+ "same": "same"
7371
+ },
7372
+ "judged": {
7373
+ "candidate": "judged better with it",
7374
+ "baseline": "judged better without it",
7375
+ "tie": "judged a tie",
7376
+ "inconclusive": "judge inconclusive"
7377
+ },
7378
+ "method": {
7379
+ "native_skill_tool": "seen",
7380
+ "native_skill_toolHelp": "The runtime called its skill tool with this skill.",
7381
+ "successful_skill_file_read": "inferred",
7382
+ "successful_skill_file_readHelp": "The runtime read the skill's SKILL.md (Codex has no skill tool): an inference, not a call."
7383
+ },
7384
+ "note": {
7385
+ "always-pass": "{caseId}: \"{assertionId}\" passes every time, so it measures nothing.",
7386
+ "always-fail": "{caseId}: \"{assertionId}\" fails every time: check that it can be met.",
7387
+ "not-discriminating": "{caseId}: \"{assertionId}\" passes with and without the skill alike: it does not show what the skill adds.",
7388
+ "skill-worse": "{caseId}: the skill did worse than no skill."
7389
+ },
7390
+ "assertion": {
7391
+ "passed": "Passed",
7392
+ "failed": "Failed",
7393
+ "unverifiable": "Can't tell",
7394
+ "error": "Not graded",
7395
+ "byCheck": "checked by code",
7396
+ "byModel": "graded by a model",
7397
+ "preference": "preference"
7398
+ },
7399
+ "export": {
7400
+ "format": "Export format",
7401
+ "native": "SynaBun (JSON)",
7402
+ "skill-creator": "skill-creator (ZIP)",
7403
+ "agent-skills": "Agent Skills (JSON)",
7404
+ "button": "Export"
7405
+ },
7406
+ "optimise": {
7407
+ "title": "Descriptions tried",
7408
+ "explain": "Train queries steer the rewrites, validation picks the best (the earliest on a tie), and the held-out queries score the winner once.",
7409
+ "description": "Description",
7410
+ "train": "Train",
7411
+ "validation": "Validation",
7412
+ "best": "best",
7413
+ "heldOut": "held out: {score}",
7414
+ "none": "The optimisation has no rounds yet.",
7415
+ "proposed": "The best description is proposed as a candidate version. Nothing changed in the skill: open it in Versions to compare it or make it your draft.",
7416
+ "openVersions": "Open in Versions",
7417
+ "keepOriginal": "The current description stayed the best: nothing is proposed.",
7418
+ "exit": {
7419
+ "train_pass": "Stopped early: every train query was read right.",
7420
+ "max_evaluations": "Stopped after five descriptions (the limit).",
7421
+ "budget": "Stopped at the spend ceiling.",
7422
+ "time": "Stopped at the time ceiling.",
7423
+ "cancelled": "Cancelled.",
7424
+ "proposal_refused": "A proposal was refused (too long, a held-out query copied in, or a repeat): the loop ended.",
7425
+ "proposer_failed": "The proposer did not answer: the loop ended.",
7426
+ "unpatchable": "The description could not be changed in this SKILL.md.",
7427
+ "other": "Ended."
7428
+ }
7429
+ },
7430
+ "trial": {
7431
+ "title": "Case {caseId}",
7432
+ "loading": "Opening the run…",
7433
+ "failed": "The run could not be opened: {error}",
7434
+ "prev": "Previous run (←)",
7435
+ "next": "Next run (→)",
7436
+ "close": "Close",
7437
+ "request": "The request",
7438
+ "query": "The query",
7439
+ "expected": "What a good answer holds",
7440
+ "answer": "The answer",
7441
+ "noAnswer": "No answer.",
7442
+ "truncated": "The answer is cut here; the export has all of it.",
7443
+ "files": "Files it wrote",
7444
+ "link": "a link (not followed)",
7445
+ "notText": "This file is not text.",
7446
+ "picked": "It picked the skill ({method}).",
7447
+ "notPicked": "It did not pick the skill.",
7448
+ "others": "it named other skills: {names}",
7449
+ "grades": "Assertions: {passed} of {total} passed",
7450
+ "gradedBy": "graded by {grader}",
7451
+ "previous": "The previous run's answer",
7452
+ "previousNote": "Your note on it: {note}",
7453
+ "contamination": "a same-named skill was in reach",
7454
+ "note": "Your note",
7455
+ "notePlaceholder": "What was right or wrong, what to keep, what to change…",
7456
+ "reviewed": "Reviewed",
7457
+ "saving": "Saving…",
7458
+ "saved": "Saved {when}",
7459
+ "unsaved": "Not saved yet",
7460
+ "saveFailed": "Not saved: try again",
7461
+ "config": "written into a folder a runtime loads settings from",
7462
+ "kept": "The run's folder is gone: this is what its record kept.",
7463
+ "keptClipped": "The run's folder is gone: this is the start of the file, as its record kept it.",
7464
+ "detailMissing": "Part of this trial's record is missing: its answer and files cannot be shown in full."
7465
+ },
7466
+ "history": {
7467
+ "title": "History",
7468
+ "count": {
7469
+ "one": "History · {count} run",
7470
+ "other": "History · {count} runs"
7471
+ },
7472
+ "loading": "Reading the history…",
7473
+ "failed": "The history could not be read: {error}",
7474
+ "empty": "The runs of this skill appear here.",
7475
+ "help": "Tick two runs to compare them case by case.",
7476
+ "pick": "Select for comparison",
7477
+ "compare": "Compare",
7478
+ "comparison": "Comparison",
7479
+ "older": "Older",
7480
+ "newer": "Newer",
7481
+ "runtime": "Runtime",
7482
+ "stale": "older version",
7483
+ "staleTitle": "This run tested a version that is not the latest",
7484
+ "differentSuite": "The two runs used different test prompts: a change can come from the cases, not the skill.",
7485
+ "sameRevision": "Both runs tested the same version."
7486
+ },
7487
+ "errors": {
7488
+ "workerBrowser": "SynaBun’s automation browser cannot act as the owner. Open the app or your own browser to perform this action.",
7489
+ "pageSession": "Evaluations are read from SynaBun's own page. Reload the page and try again.",
7490
+ "owner": "Open Skills Studio as the owner to use evaluations.",
7491
+ "unavailable": "The requested runtime or model is unavailable. Check the runtime selection and try again.",
7492
+ "missing": "This evaluation or version is no longer available. Refresh the history.",
7493
+ "request": "The request failed ({code}). Try again.",
7494
+ "budget": "This would cost about {low}–{high}: raise the spend ceiling or run fewer cases.",
7495
+ "time": "This takes longer than the time ceiling: raise it or run fewer cases.",
7496
+ "queueFull": "Too many evaluations are waiting: wait for one to finish or cancel one.",
7497
+ "notReady": "The Assistant's workers are not running yet: try again in a moment.",
7498
+ "suite": "The test prompts have problems: fix them in Edit.",
7499
+ "runtime": "That runtime cannot run here: {error}",
7500
+ "optimise": "The trigger cases cannot drive an optimisation: it needs a positive and a near-miss in train and a validation case.",
7501
+ "start": "The evaluation could not start: {error}",
7502
+ "open": "The evaluation could not be opened: {error}",
7503
+ "cancel": "It could not be cancelled: {error}",
7504
+ "compare": "The runs could not be compared: {error}",
7505
+ "sealed": "The held-out cases run only in a final check.",
7506
+ "codex": "Codex runs a version only after you allow it here."
7507
+ }
7508
+ },
7509
+ "edit": {
7510
+ "kind": {
7511
+ "markdown": "Markdown",
7512
+ "yaml": "YAML",
7513
+ "json": "JSON",
7514
+ "script": "Script",
7515
+ "text": "Text",
7516
+ "image": "Image",
7517
+ "binary": "Binary"
7518
+ },
7519
+ "newFileLabel": {
7520
+ "reference": "Path of the reference",
7521
+ "script": "Path of the script",
7522
+ "asset": "Path of the asset",
7523
+ "other": "Path of the file"
7524
+ },
7525
+ "pathProblem": {
7526
+ "required": "Give the file a path.",
7527
+ "invalid": "Use a path inside the skill: no leading slash, no \"..\".",
7528
+ "hidden": "Hidden files (a name starting with a dot) are left out of skills.",
7529
+ "exists": "A file of that name is already there."
7530
+ },
7531
+ "pane": {
7532
+ "files": "Files",
7533
+ "doc": "Document",
7534
+ "details": "Details"
7535
+ },
7536
+ "state": {
7537
+ "saving": "Saving…",
7538
+ "unsaved": "Unsaved",
7539
+ "readOnly": "Read-only",
7540
+ "draftSaved": "Saved to the draft · not installed",
7541
+ "saved": "Saved"
7542
+ },
7543
+ "lines": {
7544
+ "one": "{n} line",
7545
+ "other": "{n} lines"
7546
+ },
7547
+ "tokens": "≈{n} tokens",
7548
+ "tokensHelp": "An estimate: characters divided by 4. Runtimes count tokens their own way.",
7549
+ "guidance": "{tokens} of {max} body tokens",
7550
+ "guidanceHelp": "Guidance for a SKILL.md body: about {lines} lines or {tokens} tokens; move details to reference files. Not an upload limit.",
7551
+ "revision": "version {id}",
7552
+ "noVersion": "no version yet",
7553
+ "fileRevision": "file {id}",
7554
+ "line": "Line {line}",
7555
+ "problems": "Problems",
7556
+ "noProblems": "No problems found by the checks.",
7557
+ "otherRuntimes": "For other runtimes ({count})",
7558
+ "problemsCount": {
7559
+ "one": "{count} problem",
7560
+ "other": "{count} problems"
7561
+ },
7562
+ "image": "image",
7563
+ "binary": "binary",
7564
+ "renameNamed": "Rename {name}",
7565
+ "rename": "Rename",
7566
+ "deleteNamed": "Delete {name}",
7567
+ "delete": "Delete",
7568
+ "newFile": "New file…",
7569
+ "newKind": {
7570
+ "reference": "Reference: read only when needed",
7571
+ "script": "Script: run, not read",
7572
+ "asset": "Asset: a template, an image, data",
7573
+ "other": "Another file"
7574
+ },
7575
+ "upload": "Upload",
7576
+ "closeTab": "Close {name}",
7577
+ "preview": "Preview",
7578
+ "compare": "Compare",
7579
+ "compareHelp": "Show the changes since the file was last saved",
7580
+ "loadingEditor": "Loading the editor…",
7581
+ "previewLabel": "Preview of the document",
7582
+ "filesTruncated": "This skill has more files than are listed.",
7583
+ "openFiles": "Open files",
7584
+ "showPane": "Show pane",
7585
+ "editorFailed": "The editor could not load ({error}): a plain text box edits the same document.",
7586
+ "imageAlt": "Preview of {name}",
7587
+ "binaryInfo": "Not a text file ({size}): kept as it is, never edited as text.",
7588
+ "binaryInfoNoSize": "Not a text file: kept as it is, never edited as text.",
7589
+ "binaryHead": "SKILL.md is not UTF-8 text: a runtime may misread it. Save it as UTF-8 to edit it here.",
7590
+ "download": "Download",
7591
+ "noHead": "This document has no metadata to show.",
7592
+ "needsLibrary": "This file opens once the skill is in the library: add it to the library first.",
7593
+ "needsRestart": "This file opens after SynaBun restarts: the server running now cannot read this skill's other files.",
7594
+ "openFailed": "{file} could not be opened: {error}",
7595
+ "linkMissing": "{file} is not a file of this skill.",
7596
+ "newFileTitle": "New file",
7597
+ "createFailed": "The file could not be made: {error}",
7598
+ "created": "Made {file}.",
7599
+ "uploadTitle": "Upload a file",
7600
+ "uploadLabel": "Path in the skill",
7601
+ "uploadFailed": "The file could not be uploaded: {error}",
7602
+ "uploaded": "Uploaded {file}.",
7603
+ "deleteTitle": "Delete {file}?",
7604
+ "deleteFromDraft": "The file is removed from the draft. Installed copies keep it until you publish.",
7605
+ "deleteAdopt": "The skill is added to the library first, then the file is removed from its draft. The folder on disk keeps it until you publish.",
7606
+ "deleteUnsaved": "Its tab has changes that are not saved: keep them open (saving puts the file back), or discard them with the file.",
7607
+ "deleteKeep": "Delete, keep my changes",
7608
+ "deleteDiscard": "Delete and discard",
7609
+ "deleteFailed": "The file could not be deleted: {error}",
7610
+ "deletedKept": "Deleted {file}: your changes are still open, and saving puts the file back.",
7611
+ "deleted": "Deleted {file}.",
7612
+ "renameTitle": "Rename {file}",
7613
+ "renameLabel": "New path",
7614
+ "renameFailed": "The file could not be renamed: {error}",
7615
+ "renamed": "Renamed {from} to {to}.",
7616
+ "revertChange": "Put back"
7617
+ },
7618
+ "form": {
7619
+ "field": {
7620
+ "name": "Name",
7621
+ "description": "Description",
7622
+ "argument-hint": "Argument hint",
7623
+ "allowed-tools": "Pre-approved tools",
7624
+ "user-invocable": "Show it as /name in the menu",
7625
+ "disable-model-invocation": "Only when I type /name",
7626
+ "model": "Model",
7627
+ "tools": "Tools (comma-separated)",
7628
+ "maxTurns": "Most turns",
7629
+ "color": "Color"
7630
+ },
7631
+ "unlimited": "0 = no limit",
7632
+ "invocation": "When it runs",
7633
+ "invocationAuto": "Claude picks it when relevant, and {name}",
7634
+ "invocationManual": "Only when I type {name}",
7635
+ "modelInherit": "The session's model",
7636
+ "addTool": "Add a tool…",
7637
+ "toolsHelp": "These run without asking while the skill is active. They do not block other tools.",
7638
+ "removeTool": "Remove {tool}",
7639
+ "toolPattern": "A tool pattern",
7640
+ "toolPatternPlaceholder": "e.g. Bash(git:*)",
7641
+ "add": "Add",
7642
+ "note": {
7643
+ "notText": "Not text: edit it in the document.",
7644
+ "notTools": "Not a list of tool names: edit it in the document.",
7645
+ "notBoolean": "Not true or false: edit it in the document.",
7646
+ "notNumber": "Not a whole number: edit it in the document.",
7647
+ "alias": "A YAML alias: edit it in the document."
7648
+ },
7649
+ "reason": {
7650
+ "errors": "The frontmatter has errors: fix them in the document. The fields are read-only until then.",
7651
+ "unsupported": "This frontmatter is written in a way the form does not change: edit it in the document."
7652
+ },
7653
+ "budget": {
7654
+ "portable": "Agent Skills",
7655
+ "claude": "Claude Code list",
7656
+ "codex": "Codex",
7657
+ "opencode": "OpenCode"
7658
+ },
7659
+ "budgetCount": "{used} / {limit}",
7660
+ "saysWhat": "Says what it does",
7661
+ "missingWhat": "Say what it does, in a few words",
7662
+ "saysWhen": "Says when to use it",
7663
+ "missingWhen": "Say when to use it (\"Use when…\")",
7664
+ "advice": {
7665
+ "ok": "Models read the description to decide when to use the skill: it says what and when.",
7666
+ "add-when": "Add when to use it: the request or situation that should pick this skill.",
7667
+ "add-what": "Say what the skill does before when to use it.",
7668
+ "write-one": "Write a description: without one, models cannot tell when to use the skill.",
7669
+ "too-long": "Too long for a runtime's list: shorten it, or move detail into the body."
7670
+ },
7671
+ "nameMissing": "Give it a name",
7672
+ "nameFolder": "The folder is {folder}: the skill is called by its name",
7673
+ "nameFormat": "Use lowercase letters, digits and single hyphens",
7674
+ "nameMatches": "Matches the folder name",
7675
+ "nameOk": "A name every runtime takes",
7676
+ "binaryHead": "The fields are not read from a file that is not UTF-8 text.",
7677
+ "loading": "Reading the frontmatter…",
7678
+ "cannotRead": "The form cannot read this frontmatter: edit it in the document.",
7679
+ "yamlLabel": "The frontmatter as written",
7680
+ "noFrontmatter": "No frontmatter.",
7681
+ "editInDocument": "Edit in the document",
7682
+ "yamlHelp": "Form and YAML are one document: the form changes only the key you edit, and everything else stays byte for byte.",
7683
+ "notShowing": "These fields are in {file}, which is not the file showing.",
7684
+ "openIt": "Open it",
7685
+ "label": "Metadata",
7686
+ "advanced": {
7687
+ "one": "Advanced: {count} more key, kept as written",
7688
+ "other": "Advanced: {count} more keys, kept as written"
7689
+ },
7690
+ "advancedHelp": "The form has no field for these. They are kept exactly as written; edit them in the document.",
7691
+ "advancedNone": "No other keys: every key is in the form.",
7692
+ "viewLabel": "Metadata view",
7693
+ "form": "Form",
7694
+ "yaml": "YAML",
7695
+ "invalidNumber": "A whole number, 0 or more.",
7696
+ "patchFailed": "{field} could not be changed here: edit it in the document."
7697
+ },
7698
+ "snippets": {
7699
+ "title": "Snippets",
7700
+ "search": "Search snippets",
7701
+ "group": {
7702
+ "structure": "Structure",
7703
+ "workflow": "Workflow",
7704
+ "files": "Files and variables",
7705
+ "frontmatter": "Frontmatter keys",
7706
+ "custom": "Your snippets"
7707
+ },
7708
+ "whereKeys": "Keys: {keys}",
7709
+ "whereCaret": "At the cursor",
7710
+ "insert": "Insert",
7711
+ "insertNamed": "Insert {name}",
7712
+ "none": "No snippet matches.",
7713
+ "openHeadFirst": "Frontmatter keys go into SKILL.md: open it first.",
7714
+ "failed": {
7715
+ "yaml": "The frontmatter has errors: fix them before adding keys.",
7716
+ "other": "The snippet could not be inserted."
7717
+ },
7718
+ "inserted": "Inserted {name}.",
7719
+ "role": {
7720
+ "name": "Role",
7721
+ "desc": "Who the model should be, and for whom"
7722
+ },
7723
+ "steps": {
7724
+ "name": "Steps",
7725
+ "desc": "Numbered steps, in order"
7726
+ },
7727
+ "constraints": {
7728
+ "name": "Rules",
7729
+ "desc": "What the model must and must not do"
7730
+ },
7731
+ "output": {
7732
+ "name": "Output",
7733
+ "desc": "The shape of the answer"
7734
+ },
7735
+ "examples": {
7736
+ "name": "Examples",
7737
+ "desc": "A request and a good answer"
7738
+ },
7739
+ "context": {
7740
+ "name": "Gather context",
7741
+ "desc": "Read before changing anything"
7742
+ },
7743
+ "errors": {
7744
+ "name": "When something fails",
7745
+ "desc": "Say it, then try another way"
7746
+ },
7747
+ "input-check": {
7748
+ "name": "Check the input",
7749
+ "desc": "Ask when $ARGUMENTS is unclear"
7750
+ },
7751
+ "confirm": {
7752
+ "name": "Confirm first",
7753
+ "desc": "A yes before anything destructive"
7754
+ },
7755
+ "scope": {
7756
+ "name": "Scope",
7757
+ "desc": "What it covers, and what it does not"
7758
+ },
7759
+ "references": {
7760
+ "name": "References",
7761
+ "desc": "Files read only when needed"
7762
+ },
7763
+ "variables": {
7764
+ "name": "Variables",
7765
+ "desc": "$ARGUMENTS and ${CLAUDE_SKILL_DIR}"
7766
+ },
7767
+ "dynamic": {
7768
+ "name": "Current state",
7769
+ "desc": "A shell command run when the skill loads (the scan lists it)"
7770
+ },
7771
+ "fm-tools-readonly": {
7772
+ "name": "Pre-approved: read-only tools",
7773
+ "desc": "Read, Grep and Glob run without asking"
7774
+ },
7775
+ "fm-agent-tools": {
7776
+ "name": "Tools: read-only",
7777
+ "desc": "The agent gets Read, Grep and Glob"
7778
+ },
7779
+ "fm-manual": {
7780
+ "name": "Only when I type /name",
7781
+ "desc": "The model never starts it by itself"
7782
+ },
7783
+ "fm-hint": {
7784
+ "name": "Argument hint",
7785
+ "desc": "What to type after /name"
7786
+ },
7787
+ "fm-when": {
7788
+ "name": "When to use it",
7789
+ "desc": "Claude Code lists it with the description"
7790
+ },
7791
+ "fm-fork": {
7792
+ "name": "Run in a subagent",
7793
+ "desc": "Its own context, apart from the conversation"
7794
+ },
7795
+ "fm-model": {
7796
+ "name": "Model",
7797
+ "desc": "The model the agent uses"
7798
+ }
7799
+ },
7800
+ "diff": {
7801
+ "added": "added",
7802
+ "removed": "removed",
7803
+ "same": "No differences.",
7804
+ "unchanged": {
7805
+ "one": "{count} file is the same.",
7806
+ "other": "{count} files are the same."
7807
+ },
7808
+ "status": {
7809
+ "added": "Added",
7810
+ "removed": "Removed",
7811
+ "modified": "Changed",
7812
+ "mode": "Mode changed"
7813
+ },
7814
+ "note": {
7815
+ "binary": "Not text: compared by its bytes only.",
7816
+ "large": "Too large to compare line by line.",
7817
+ "far": "Too different to compare line by line."
7818
+ },
7819
+ "eol": "Line endings differ ({from} → {to}): every line counts as changed."
7820
+ },
7821
+ "versions": {
7822
+ "author": {
7823
+ "owner": "You",
7824
+ "system": "SynaBun",
7825
+ "assistant": "SynaBun Assistant",
7826
+ "agent": "An agent"
7827
+ },
7828
+ "rev": "Version {id}",
7829
+ "label": {
7830
+ "latest": "Latest",
7831
+ "candidate": "Candidate",
7832
+ "best": "Best",
7833
+ "approved": "Approved",
7834
+ "upstream": "From SynaBun",
7835
+ "installed": "Installed: {where}",
7836
+ "draft": "Draft"
7837
+ },
7838
+ "source": {
7839
+ "bundled": "shipped with SynaBun",
7840
+ "adopted": "added from its folder",
7841
+ "draft": "saved from the draft",
7842
+ "assistant": "made by the Assistant",
7843
+ "import": "imported",
7844
+ "restore": "restored",
7845
+ "customize": "customized copy",
7846
+ "local": "made here",
7847
+ "github": "from GitHub"
7848
+ },
7849
+ "files": {
7850
+ "one": "{count} file",
7851
+ "other": "{count} files"
7852
+ },
7853
+ "diffPrev": "Changes from the one before",
7854
+ "restore": "Restore as draft",
7855
+ "markCandidate": "Mark as candidate",
7856
+ "markBest": "Mark as best",
7857
+ "publishThis": "Publish this one",
7858
+ "noneTitle": "No versions here",
7859
+ "none": {
7860
+ "adopt": "This folder is not in SynaBun's library yet, so it has no versions. Add it to the library: its files as they are now become the first version.",
7861
+ "inplace": "Commands and agents are single files kept where they are: versions are for skills in the library.",
7862
+ "readonly": "This is read-only and not in SynaBun's library: customize a copy to keep versions of your own."
7863
+ },
7864
+ "loading": "Reading the versions…",
7865
+ "loadFailed": "The versions could not be read: {error}",
7866
+ "title": {
7867
+ "one": "{count} version",
7868
+ "other": "{count} versions"
7869
+ },
7870
+ "from": "From",
7871
+ "to": "To",
7872
+ "compare": "Compare",
7873
+ "draft": "Draft",
7874
+ "draftChanged": {
7875
+ "one": "{count} file changed since its version",
7876
+ "other": "{count} files changed since its version"
7877
+ },
7878
+ "draftSame": "The same as its version",
7879
+ "diffDraft": "Show the draft's changes",
7880
+ "noRevisions": "No version has been saved yet.",
7881
+ "comparing": "Comparing…",
7882
+ "diffTitle": "Changes",
7883
+ "diffFailed": "The versions could not be compared: {error}",
7884
+ "diffDraftTitle": "The draft's changes since its version",
7885
+ "pickTwo": "Pick two different versions.",
7886
+ "marked": {
7887
+ "candidate": "Marked as candidate.",
7888
+ "best": "Marked as best."
7889
+ },
7890
+ "markFailed": "It could not be marked: {error}",
7891
+ "restoreBlockedTitle": "Save or discard first",
7892
+ "restoreBlocked": {
7893
+ "one": "{count} open file has unsaved changes. Save or discard them before restoring a version.",
7894
+ "other": "{count} open files have unsaved changes. Save or discard them before restoring a version."
7895
+ },
7896
+ "restoreTitle": "Replace the draft?",
7897
+ "restoreDraftChanged": {
7898
+ "one": "The draft has {count} change that is not saved as a version.",
7899
+ "other": "The draft has {count} changes that are not saved as a version."
7900
+ },
7901
+ "restoreExplain": "Restoring makes a new draft from that version. Save the current draft as a version first to keep its changes.",
7902
+ "restoreReplace": "Replace the draft",
7903
+ "restoreSaveFirst": "Save as version, then restore",
7904
+ "restored": "Version {id} is the draft now.",
7905
+ "restoreFailed": "The version could not be restored: {error}"
7906
+ },
7907
+ "publish": {
7908
+ "targetProject": "{runtime} · project {project}",
7909
+ "targetAccount": "{runtime} · account {account}",
7910
+ "targetUser": "{runtime} · all projects",
7911
+ "state": {
7912
+ "installed": "Installed, this version",
7913
+ "outdated": "Installed, another version",
7914
+ "present": "A folder SynaBun did not install",
7915
+ "bridge": "Old format",
7916
+ "none": "Not installed",
7917
+ "off": "Turned off",
7918
+ "unavailable": "Not set up on this computer",
7919
+ "viaClaude": "Not here; a terminal OpenCode reads Claude Code's folder",
7920
+ "notInstalled": "Not installed on this computer"
7921
+ },
7922
+ "noneTitle": "Nothing to publish here",
7923
+ "none": {
7924
+ "adopt": "Add this folder to the library first: then its versions are installed from there, with a plan and a backup.",
7925
+ "inplace": "Commands and agents are saved where they are; there is nothing to install. Export makes a bundle.",
7926
+ "readonly": "This is not yours to publish. Customize a copy to make your own version."
7927
+ },
7928
+ "exportBundle": "SynaBun bundle",
7929
+ "loading": "Reading where it is installed…",
7930
+ "loadFailed": "The install state could not be read: {error}",
7931
+ "version": "Version",
7932
+ "versionMeta": "saved {when}",
7933
+ "noVersion": "This skill has no version yet: save the draft as a version to publish it.",
7934
+ "draftNotPublished": {
7935
+ "one": "The draft has {count} change that is not a version yet, so it is not what gets installed.",
7936
+ "other": "The draft has {count} changes that are not a version yet, so they are not what gets installed."
7937
+ },
7938
+ "saveVersionAndUse": "Save as version and use it",
7939
+ "targetsCaption": "Install targets",
7940
+ "pick": "Pick",
7941
+ "col": {
7942
+ "target": "Runtime and scope",
7943
+ "folder": "Folder",
7944
+ "now": "There now"
7945
+ },
7946
+ "pickTarget": "Install into {target}",
7947
+ "sharedOff": "Turn the shared folder on in Settings → Skills to install here.",
7948
+ "verify": "Verify",
7949
+ "rollback": "Roll back",
7950
+ "remove": "Remove",
7951
+ "bridgeHelp": "{runtime} reaches it through an old bridge file (the old format): move it under Settings → Skills → Skill folders.",
7952
+ "addProject": "Add a project",
7953
+ "chooseProject": "Choose a project…",
7954
+ "guest": "Only the host installs skills.",
7955
+ "exportTitle": "Export",
7956
+ "settingsNote": "Settings → Skills shows the same installs: its buttons use these plans too.",
7957
+ "fact": {
7958
+ "written": {
7959
+ "ok": "Written: the folder holds exactly these files",
7960
+ "missing": "Written: the folder is gone",
7961
+ "changed": "Written: the folder changed since it was installed",
7962
+ "unknown": "Written: not checked yet"
7963
+ },
7964
+ "discoverable": {
7965
+ "yes": "Discoverable: the runtime's rules find it",
7966
+ "no": "Discoverable: the runtime does not read that folder now",
7967
+ "unknown": "Discoverable: not checked"
7968
+ },
7969
+ "eligibility": {
7970
+ "enabled": "Enabled in the runtime's settings",
7971
+ "disabled": "Turned off in the runtime's settings",
7972
+ "unknown": "Settings: could not be read"
7973
+ },
7974
+ "discovered": {
7975
+ "yes": "{runtime} lists it",
7976
+ "no": "{runtime} does not list it",
7977
+ "unknown": "{runtime} could not be asked",
7978
+ "not-installed": "{runtime} is not installed on this computer, so it could not be asked; it finds the skill once it is installed",
7979
+ "not-running": "SynaBun's {runtime} is not running, so it could not be asked: open the {runtime} panel, then Verify again",
7980
+ "no-answer": "{runtime} did not answer, so it could not be asked: Verify again in a moment",
7981
+ "no-list": "{runtime} has no list to ask; its folder rules were checked instead",
7982
+ "terminal-only": "{runtime} in a terminal reads this folder; SynaBun's {runtime} panel does not, so it was not asked"
7983
+ }
7984
+ },
7985
+ "readBy": "Read by {runtimes}",
7986
+ "blocked": {
7987
+ "no_root": "There is no folder for this target.",
7988
+ "shared_root_off": "The shared folder is turned off.",
7989
+ "root_read_only": "SynaBun does not write to this folder.",
7990
+ "root_unusable": "The folder cannot be used.",
7991
+ "lint_errors": "Problems keep it from working in this runtime.",
7992
+ "scan_blocked": "The scan blocks this install.",
7993
+ "review_required": "Approve it in Review first.",
7994
+ "approval_stale": "Its approval does not cover this name: review it again.",
7995
+ "destination_unreadable": "What is at the destination cannot be read whole."
7996
+ },
7997
+ "transform": "Changed for this runtime only:",
7998
+ "refresh": {
7999
+ "automatic": "{runtime} picks it up by itself.",
8000
+ "reload-skills": "{runtime}: run /reload-skills in sessions already open.",
8001
+ "new-session": "{runtime}: start a new session to be sure it sees it.",
8002
+ "unknown": "{runtime}: see its documentation.",
8003
+ "panel-reload": "{runtime}: SynaBun's panel lists it now; in a terminal, start a new {runtime} session to see it.",
8004
+ "terminal-only": "{runtime}: an OpenCode open in a terminal reads Claude Code's folder (new session); SynaBun's OpenCode panel and an OpenCode Assistant do not: install for OpenCode for those.",
8005
+ "not-installed": "{runtime} is not installed on this computer: the skill waits in its folder, and {runtime} finds it once it is installed."
8006
+ },
8007
+ "result": {
8008
+ "committed": "Installed",
8009
+ "skipped": "Not installed",
8010
+ "needs-confirmation": "Needs your confirmation",
8011
+ "failed": "Failed"
8012
+ },
8013
+ "exportNeedsVersion": "Save a version to export it.",
8014
+ "exportRestart": "Restart SynaBun to export versions from the library.",
8015
+ "exportSkill": ".skill archive",
8016
+ "exportClaude": "Claude.ai upload",
8017
+ "checkClaude": "Check for Claude.ai",
8018
+ "exportHelp": "A bundle is what Import takes back. A .skill archive holds the folder. The Claude.ai upload is a ZIP of the folder as Claude.ai reads it.",
8019
+ "planFailed": "The plan could not be made: {error}",
8020
+ "planChanged": "What would be installed changed since the plan was shown: here is the new plan.",
8021
+ "installFailed": "Not installed: {error}",
8022
+ "verified": "Checked.",
8023
+ "verifyFailed": "It could not be checked: {error}",
8024
+ "rollbackTitle": "Roll back this install?",
8025
+ "removeTitle": "Remove this install?",
8026
+ "rollbackBody": "What was there before this install comes back. A backup of the current folder is kept.",
8027
+ "removeBody": "The folder SynaBun installed is removed. A backup is kept.",
8028
+ "undoFailed": "It could not be done: {error}",
8029
+ "changedSinceTitle": "The folder changed since it was installed",
8030
+ "changedSinceBody": "Someone changed it after SynaBun installed it. Go ahead with it as it is now? A backup is kept.",
8031
+ "changedSinceConfirm": "Go ahead",
8032
+ "rolledBack": "Rolled back.",
8033
+ "removed": "Removed.",
8034
+ "checking": "Checking…",
8035
+ "claudeProblems": "For Claude.ai: {errors} problems, {warnings} warnings.",
8036
+ "claudeOk": "Claude.ai reads this skill as it is.",
8037
+ "checkFailed": "It could not be checked: {error}",
8038
+ "installFor": "Install for",
8039
+ "scope": "Scope",
8040
+ "scopeAll": "All projects",
8041
+ "scopeProject": "One project",
8042
+ "noProjects": "No project is registered in SynaBun.",
8043
+ "extraPicked": "Also picked under Advanced: {targets}",
8044
+ "installedTitle": "Installed now",
8045
+ "advancedTitle": "Advanced: version, accounts, projects, folders",
8046
+ "versionHelp": "The approved version is picked by default; candidate and best are marked in Versions.",
8047
+ "statusInstalled": "Installed for {where}.",
8048
+ "statusOutdated": "Installed for {where}; the version picked is newer: Update replaces it (a backup is kept).",
8049
+ "statusApprovedVersion": "The approved version is picked.",
8050
+ "statusNone": "Not installed anywhere yet.",
8051
+ "pickOne": "Pick at least one runtime.",
8052
+ "checkingPlan": "Checking what this would do…",
8053
+ "line": {
8054
+ "create": "Will create",
8055
+ "identical": "Already there, nothing to write:",
8056
+ "replaceOwnedBefore": "Will replace SynaBun's install at",
8057
+ "replaceOwnedAfter": "(a backup is kept)",
8058
+ "replaceModified": "was changed since SynaBun installed it: Install asks before replacing it (a backup is kept).",
8059
+ "replaceUnowned": "was not installed by SynaBun: Install asks before replacing it (a backup is kept).",
8060
+ "blocked": "Cannot be installed: {reason}",
8061
+ "scanAsk": "The scan found things to review: Install shows them first."
8062
+ },
8063
+ "outcomeHelp": "Verify, roll back or remove it under Installed now.",
8064
+ "bar": {
8065
+ "install": "Install",
8066
+ "update": "Update",
8067
+ "installed": "Installed",
8068
+ "checking": "Checking…",
8069
+ "installing": "Installing…",
8070
+ "count": "{label} · {count}"
8071
+ },
8072
+ "confirmTitle": "Before installing",
8073
+ "confirmBodyReplace": "Something is already at the destination. Replace it? A backup is kept, and Roll back brings it back.",
8074
+ "confirmBodyScan": "The scan found things to review in the files to install. Read them, then install if you agree.",
8075
+ "confirmWhy": {
8076
+ "modified": "was changed since SynaBun installed it.",
8077
+ "unowned": "was not installed by SynaBun."
8078
+ },
8079
+ "confirmReplaced": "It is replaced; a backup is kept.",
8080
+ "confirmScanLine": "the scan found these in the files to install:",
8081
+ "confirmGo": "Replace and install",
8082
+ "confirmGoScan": "Install anyway",
8083
+ "doneFor": "Installed for {where}.",
8084
+ "doneSome": "Installed for {where}; not for {failed}.",
8085
+ "doneNone": "Not installed: {reason}",
8086
+ "blockedFor": "{target} cannot be installed: {reason}",
8087
+ "notInstalledBlocked": "Not installed: see why below.",
8088
+ "busyElsewhere": "An install of this skill is already on its way.",
8089
+ "retryPlan": "Try again",
8090
+ "unavailable": {
8091
+ "off": "the shared folder is turned off in Settings",
8092
+ "missing": "there is no folder for it on this computer"
8093
+ },
8094
+ "viaClaudeHelp": "A terminal OpenCode reads Claude Code's skills folder, so a skill installed for Claude Code reaches it there. SynaBun's own OpenCode panel and an OpenCode Assistant start with OPENCODE_DISABLE_CLAUDE_CODE=1 and do not read it: tick OpenCode to install the copy they see.",
8095
+ "eligibility": {
8096
+ "disabled": "{runtime} has it turned off in its settings: {reason}",
8097
+ "unknown": "{runtime}: its settings could not be read ({reason}).",
8098
+ "reason": {
8099
+ "codex-config": "{file} has a [[skills.config]] table with enabled = false for it.",
8100
+ "claude-override": "{file} has skillOverrides \"{rule}\": \"off\".",
8101
+ "claude-deny": "{file} denies it in permissions.deny (\"{rule}\").",
8102
+ "opencode-permission": "{file} has a skill rule for \"{pattern}\" in permissions: deny.",
8103
+ "unreadable": "{file} cannot be read whole.",
8104
+ "invalid-json": "{file} is not valid JSON.",
8105
+ "other": "{file}"
8106
+ }
8107
+ },
8108
+ "enableFor": "Enable for {runtime}",
8109
+ "enabled": "Enabled for {runtime}: {file} was changed (a backup is at {backup}).",
8110
+ "enableNothing": "{runtime} does not turn it off any more: nothing was changed.",
8111
+ "enableFailed": "Not enabled for {runtime}: {error}",
8112
+ "enableDenyAllTitle": "{runtime} denies every skill",
8113
+ "enableDenyAllBody": "{file} denies every skill (a skill rule for \"*\": deny). Add a rule after it that allows this skill? A backup is kept; every other skill stays denied.",
8114
+ "enableDenyAllGo": "Loosen it for this skill",
8115
+ "overlapOne": "{runtime} also sees a /{name} skill at {path}.",
8116
+ "overlapMany": "{runtimes} also see a /{name} skill at {path}."
8117
+ },
8118
+ "review": {
8119
+ "author": {
8120
+ "owner": "You",
8121
+ "assistant": "SynaBun Assistant",
8122
+ "agent": "An agent"
8123
+ },
8124
+ "kind": {
8125
+ "new": "New skill",
8126
+ "change": "Change",
8127
+ "update": "Update"
8128
+ },
8129
+ "state": {
8130
+ "pending": "Waiting for you",
8131
+ "changes_requested": "Changes asked for",
8132
+ "approved": "Approved, not installed",
8133
+ "publishing": "Installing",
8134
+ "published": "Installed",
8135
+ "partial": "Installed in part",
8136
+ "publish_failed": "Install failed",
8137
+ "rejected": "Rejected",
8138
+ "withdrawn": "Withdrawn"
8139
+ },
8140
+ "assumed": "Assumed: {text}",
8141
+ "installsAs": "Installs as",
8142
+ "forTargets": "For: {targets}",
8143
+ "lintErrors": {
8144
+ "one": "{count} problem for its targets",
8145
+ "other": "{count} problems for its targets"
8146
+ },
8147
+ "lintOk": "No problems for its targets",
8148
+ "lintWarnings": {
8149
+ "one": "{count} warning",
8150
+ "other": "{count} warnings"
8151
+ },
8152
+ "scan": {
8153
+ "not-scanned": "Not scanned",
8154
+ "error": "The scan failed: it cannot be approved",
8155
+ "blocked": {
8156
+ "one": "The scan blocks it ({count} finding)",
8157
+ "other": "The scan blocks it ({count} findings)"
8158
+ },
8159
+ "clean": "No findings in the scanned files",
8160
+ "incomplete": {
8161
+ "one": "{count} finding; part of it could not be read",
8162
+ "other": "{count} findings; part of it could not be read"
8163
+ },
8164
+ "review": {
8165
+ "one": "{count} finding to review",
8166
+ "other": "{count} findings to review"
8167
+ },
8168
+ "findings": {
8169
+ "one": "{count} finding",
8170
+ "other": "{count} findings"
8171
+ }
8172
+ },
8173
+ "findings": {
8174
+ "one": "{count} finding",
8175
+ "other": "{count} findings"
8176
+ },
8177
+ "severity": {
8178
+ "critical": "Critical",
8179
+ "high": "High",
8180
+ "medium": "Medium",
8181
+ "low": "Low"
8182
+ },
8183
+ "authorityAdds": "Adds {what}: {items}",
8184
+ "authorityRemoves": "No longer has {what}: {items}",
8185
+ "authority": {
8186
+ "scripts": "scripts",
8187
+ "binaries": "files that are not text",
8188
+ "dynamicContext": "commands run when it loads",
8189
+ "hooks": "session hooks",
8190
+ "toolGrants": "pre-approved tools",
8191
+ "domains": "web addresses",
8192
+ "sensitive": "reads of private data",
8193
+ "persistentWrites": "lasting configuration changes",
8194
+ "installers": "software installs"
8195
+ },
8196
+ "authorityTitle": "What it can do that the approved version could not:",
8197
+ "filesChanged": {
8198
+ "one": "{count} file changed",
8199
+ "other": "{count} files changed"
8200
+ },
8201
+ "showFiles": "Show the files",
8202
+ "loadingDiff": "Reading the changes…",
8203
+ "yourNote": "Your note: {text}",
8204
+ "requestChanges": "Ask for changes",
8205
+ "reject": "Reject",
8206
+ "open": "Open in its workspace",
8207
+ "libraryInstalls": {
8208
+ "one": "{count} install from the library",
8209
+ "other": "{count} installs from the library"
8210
+ },
8211
+ "fromSynabun": "Ships with SynaBun",
8212
+ "updateBody": "SynaBun ships a newer {name} than the copy installed here. Read the changes, then update (a backup of the copy is kept) or keep yours.",
8213
+ "updateRuntimes": "Installed for {runtimes}",
8214
+ "reviewChanges": "Review the changes",
8215
+ "update": "Update",
8216
+ "keepMine": "Keep mine",
8217
+ "title": "Review",
8218
+ "subtitle": "What the Assistant made and the updates SynaBun ships wait here. Nothing is installed until you approve it.",
8219
+ "filterLabel": "Show",
8220
+ "filter": {
8221
+ "waiting": "Waiting",
8222
+ "all": "All",
8223
+ "decided": "Decided"
8224
+ },
8225
+ "updatesTitle": {
8226
+ "one": "{count} update from SynaBun",
8227
+ "other": "{count} updates from SynaBun"
8228
+ },
8229
+ "decidedTitle": "Decided",
8230
+ "waitingTitle": {
8231
+ "one": "{count} submission",
8232
+ "other": "{count} submissions"
8233
+ },
8234
+ "emptyTitle": "Nothing is waiting",
8235
+ "emptyBody": "When the SynaBun Assistant makes or changes a skill, it appears here for you to approve, ask for changes or reject. Updates SynaBun ships appear here too.",
8236
+ "diffFailed": "The changes could not be read: {error}",
8237
+ "partialDiff": "Only SKILL.md was compared: restart SynaBun to compare every file.",
8238
+ "updateDiffTitle": "What updating {name} changes",
8239
+ "send": "Send",
8240
+ "reasonRequired": "Say what should change.",
8241
+ "rejectTitle": "Reject {name}",
8242
+ "changesTitle": "Ask for changes to {name}",
8243
+ "rejectPrompt": "Why (optional; the Assistant reads it):",
8244
+ "changesPrompt": "What should change (the Assistant reads it):",
8245
+ "decided": {
8246
+ "approve": "{name} approved. Install it from its card, or from Publish.",
8247
+ "request_changes": "Changes asked for {name}.",
8248
+ "reject": "{name} rejected."
8249
+ },
8250
+ "decideFailed": "The decision could not be sent: {error}",
8251
+ "approveInstall": "Approve & install",
8252
+ "approveOnly": "Approve only",
8253
+ "installNow": "Install",
8254
+ "openPublish": "Choose where…",
8255
+ "installing": "Installing…",
8256
+ "notInstalledHelp": "Choose where… opens Publish, where the plan says more.",
8257
+ "installsFor": "Installs for {targets}",
8258
+ "fallbackInstalled": "(where it is installed already)",
8259
+ "fallbackDefault": "(nothing named: Claude Code for every project)",
8260
+ "targetUnavailable": "{target} is not available here ({reason}): left out.",
8261
+ "noDestination": "None of the targets it named is available here. Choose where in Publish.",
8262
+ "approveOnlyPrimary": "Approve",
8263
+ "fallbackAssistants": "(your assistants, from Settings → Skills)",
8264
+ "destTilesLabel": "Where it installs, by runtime",
8265
+ "destTileOn": "{runtime}: installs here",
8266
+ "destTileOff": "{runtime}: not picked"
8267
+ },
8268
+ "create": {
8269
+ "title": "Create a skill",
8270
+ "guest": "Only the host creates skills.",
8271
+ "promptLabel": "Describe the skill",
8272
+ "promptPlaceholder": "Describe what the skill should do and when it should be used, e.g. \"Write release notes from merged pull requests since the last tag, in our CHANGELOG style\"",
8273
+ "sourcesLabel": "Sources",
8274
+ "useAsSource": "Use as source",
8275
+ "source": {
8276
+ "conversation": "This conversation",
8277
+ "url": "URL",
8278
+ "repo": "Repository",
8279
+ "memory": "Memory",
8280
+ "import": "An existing skill"
8281
+ },
8282
+ "draftWithAi": "Draft with AI",
8283
+ "blankTitle": "Start without AI",
8284
+ "nameLabel": "Name",
8285
+ "namePlaceholder": "release-notes",
8286
+ "nameHelp": "Lowercase letters, digits and hyphens: you call it as {slug}.",
8287
+ "name": {
8288
+ "required": "Give it a name.",
8289
+ "too-long": "At most 64 characters.",
8290
+ "format": "Use lowercase letters, digits and single hyphens.",
8291
+ "shipped": "SynaBun ships a skill of this name: pick another.",
8292
+ "taken": "Something of this name exists already: installing both would collide."
8293
+ },
8294
+ "kindLabel": "Kind",
8295
+ "kind": {
8296
+ "skill": "Skill",
8297
+ "agent": "Agent",
8298
+ "command": "Command · legacy"
8299
+ },
8300
+ "kindHelp": {
8301
+ "skill": "A folder with SKILL.md that Claude Code, Codex and OpenCode load. The usual choice.",
8302
+ "agent": "A subagent Claude Code delegates to, in its own context. One file.",
8303
+ "command": "A Claude Code slash command file. Skills replace these; kept for older setups."
8304
+ },
8305
+ "layoutLabel": "Start from",
8306
+ "layout": {
8307
+ "skill": {
8308
+ "blank": {
8309
+ "name": "Blank",
8310
+ "desc": "Name, description and a heading"
8311
+ },
8312
+ "steps": {
8313
+ "name": "Steps",
8314
+ "desc": "Numbered steps over what the user types"
8315
+ },
8316
+ "router": {
8317
+ "name": "Router",
8318
+ "desc": "Sections picked by the first word"
8319
+ },
8320
+ "references": {
8321
+ "name": "With references",
8322
+ "desc": "SKILL.md plus references/guide.md"
8323
+ },
8324
+ "script": {
8325
+ "name": "With a script",
8326
+ "desc": "SKILL.md plus scripts/run.sh"
8327
+ }
8328
+ },
8329
+ "agent": {
8330
+ "blank": {
8331
+ "name": "Blank",
8332
+ "desc": "A name, a description, a short role"
8333
+ },
8334
+ "specialist": {
8335
+ "name": "Specialist",
8336
+ "desc": "A model and read-only tools"
8337
+ },
8338
+ "researcher": {
8339
+ "name": "Researcher",
8340
+ "desc": "Code and web research tools"
8341
+ }
8342
+ },
8343
+ "command": {
8344
+ "blank": {
8345
+ "name": "Blank",
8346
+ "desc": "A description and instructions"
8347
+ },
8348
+ "analysis": {
8349
+ "name": "Analysis",
8350
+ "desc": "Read a target and report"
8351
+ },
8352
+ "workflow": {
8353
+ "name": "Workflow",
8354
+ "desc": "Plan, confirm, do, check"
8355
+ }
8356
+ }
8357
+ },
8358
+ "descriptionLabel": "Description",
8359
+ "descriptionPlaceholder": "What it does, and when to use it",
8360
+ "descriptionHelp": "Written into the frontmatter. Models read it to decide when to use the skill: say what and when.",
8361
+ "whereSkill": "It starts as a draft in SynaBun's library, and reaches Claude Code, Codex or OpenCode only when you publish it.",
8362
+ "whereLabel": "Where",
8363
+ "whereGlobal": {
8364
+ "agent": "All projects (~/.claude/agents)",
8365
+ "command": "All projects (~/.claude/commands)"
8366
+ },
8367
+ "whereProject": "A project",
8368
+ "createButton": {
8369
+ "skill": "Create skill",
8370
+ "agent": "Create agent",
8371
+ "command": "Create command"
8372
+ },
8373
+ "paste": "Paste a SKILL.md…",
8374
+ "import": "Import…",
8375
+ "explain": "You get a skill folder: SKILL.md, plus references or scripts only when they help, checked as you write it. Nothing reaches Claude Code, Codex or OpenCode until you publish it.",
8376
+ "examplesTitle": "Ideas",
8377
+ "example1": "\"Write Conventional Commit messages from the staged diff\"",
8378
+ "example2": "\"A checklist for preparing a SynaBun release, from CHANGELOG.md\"",
8379
+ "example3": "\"Review a pull request for security problems before merging\"",
8380
+ "created": "Made {name}.",
8381
+ "failed": "It could not be made: {error}",
8382
+ "pasteLabel": "SKILL.md",
8383
+ "pasteTitle": "Paste a SKILL.md",
8384
+ "pasteConfirm": "Add to library",
8385
+ "pasteEmpty": "Paste the file first.",
8386
+ "ai": {
8387
+ "title": "Draft with AI",
8388
+ "help": "One worker drafts the whole package from your words and sources; SynaBun checks it and puts it in Review. Nothing is installed until you publish it.",
8389
+ "restart": "Drafting with AI needs SynaBun to restart: this page is newer than the server.",
8390
+ "unknown": "Checking what this SynaBun can do…",
8391
+ "draftingUnavailable": "Drafting needs {providers} on this computer: {reason}",
8392
+ "exampleToggle": "Add an example of a good result",
8393
+ "exampleLabel": "An example of a good result (optional)",
8394
+ "examplePlaceholder": "What the skill's output should look like, or a past answer you liked",
8395
+ "noSources": "No source: the draft is made from your description.",
8396
+ "removeSource": "Remove {name}",
8397
+ "full": "At most {count} sources.",
8398
+ "duplicate": "That source is there already.",
8399
+ "added": "{name} added as a source.",
8400
+ "removed": "{name} removed.",
8401
+ "kind": {
8402
+ "conversation": "Conversation",
8403
+ "url": "Web page",
8404
+ "repo": "Project",
8405
+ "memory": "Memories",
8406
+ "import": "Skill"
8407
+ },
8408
+ "editorTitle": {
8409
+ "conversation": "Pick a session",
8410
+ "url": "A web page",
8411
+ "repo": "A registered project",
8412
+ "memory": "Memories",
8413
+ "import": "An existing skill to start from"
8414
+ },
8415
+ "conv": {
8416
+ "provider": "From",
8417
+ "project": "Project",
8418
+ "anyProject": "Every project",
8419
+ "search": "Search sessions",
8420
+ "title": "Sessions",
8421
+ "loading": "Loading sessions…",
8422
+ "none": "No session found.",
8423
+ "failed": "The sessions could not be read: {error}",
8424
+ "messages": {
8425
+ "one": "{count} message",
8426
+ "other": "{count} messages"
8427
+ },
8428
+ "use": "Use this session",
8429
+ "pick": "Pick a session first.",
8430
+ "restart": "Sessions are listed once SynaBun restarts."
8431
+ },
8432
+ "url": {
8433
+ "label": "Web page address",
8434
+ "help": "SynaBun reads it with its own browser before the worker starts, as data: nothing on the page is followed as an instruction.",
8435
+ "add": "Add the page",
8436
+ "invalid": "Write an address starting with http:// or https://, without a user name or password.",
8437
+ "unavailable": "The SynaBun browser cannot open pages now: {reason}"
8438
+ },
8439
+ "repo": {
8440
+ "label": "Project",
8441
+ "paths": "Files or folders to read first (one per line, optional)",
8442
+ "help": "SynaBun reads its file tree, README, docs and manifests, read-only: never secrets, lock files or build output, and nothing is changed.",
8443
+ "add": "Add the project",
8444
+ "none": "No project is registered.",
8445
+ "choose": "Choose a project.",
8446
+ "pathsInvalid": "Up to {count} paths, relative to the project, without \"..\"."
8447
+ },
8448
+ "memory": {
8449
+ "query": "What to recall",
8450
+ "placeholder": "release process",
8451
+ "project": "Memory project (optional)",
8452
+ "help": "SynaBun's memories that match, with their ids, as data.",
8453
+ "add": "Add memories",
8454
+ "empty": "Say what to recall."
8455
+ },
8456
+ "import": {
8457
+ "help": "Its files are the starting point. A skill of the library gets a new version for review; a bundle file becomes a new skill.",
8458
+ "library": "A skill of the library",
8459
+ "chooseSkill": "Choose a skill.",
8460
+ "or": "Or a file",
8461
+ "file": "A bundle file…",
8462
+ "useSkill": "Use this skill",
8463
+ "notSkill": "That file is not a SynaBun skill bundle.",
8464
+ "failed": "The file could not be used: {error}"
8465
+ },
8466
+ "options": {
8467
+ "title": "Options",
8468
+ "name": "Name (optional)",
8469
+ "nameHelp": "Leave it empty and the worker picks one.",
8470
+ "model": "Drafted by",
8471
+ "minutes": "Work time",
8472
+ "minutesValue": "{count} min",
8473
+ "runtimes": "For",
8474
+ "route": "Your Coding route: {target}",
8475
+ "fallback": "Claude Code (its default model)",
8476
+ "providerDefault": "{provider}: its default model",
8477
+ "draftsOn": "Drafting runs on {providers}; Claude Code is the default. The worker is held to the drafting folder: it writes nowhere else and has no web or MCP tools.",
8478
+ "draftsNone": "No provider that drafts can start on this computer now.",
8479
+ "draftsOnOnly": "Drafting runs on {providers} here. The worker is held to the drafting folder: it writes nowhere else and has no web or MCP tools.",
8480
+ "providerUnavailable": "{provider}: {reason}",
8481
+ "providerOff": "{provider}: not available now ({reason})",
8482
+ "providerOffPlain": "{provider}: not available now"
8483
+ },
8484
+ "problem": {
8485
+ "prompt": "Describe the skill, or add a source.",
8486
+ "name": "A name is lowercase letters, digits and single hyphens.",
8487
+ "url": "One of the web pages has an address that cannot be used.",
8488
+ "repo": "One of the projects cannot be used: check its paths.",
8489
+ "memory": "One of the memory sources has nothing to recall.",
8490
+ "conversation": "One of the sessions cannot be used.",
8491
+ "import": "One of the skills cannot be used.",
8492
+ "long": "That is longer than a request can be.",
8493
+ "provider": "Drafting runs on Claude Code only.",
8494
+ "targets": "One of the places to install it cannot be used (a project must be a registered one).",
8495
+ "other": "The request cannot be sent as it is."
8496
+ },
8497
+ "error": {
8498
+ "needs_browser": "A web page needs the SynaBun browser, which could not open it.",
8499
+ "needs_input": "The worker needs an answer before it can draft.",
8500
+ "worker_blocked": "The worker was blocked.",
8501
+ "worker_failed": "The worker stopped without drafting anything (what it said is below).",
8502
+ "worker_ended": "The worker stopped before the draft was finished.",
8503
+ "draft_invalid": "The draft still had problems after one round of fixes.",
8504
+ "draft_unchanged": "The worker returned the skill as it already was.",
8505
+ "source_failed": "A source could not be read.",
8506
+ "source_not_found": "A source was not found.",
8507
+ "source_empty": "A source had nothing to read.",
8508
+ "source_unavailable": "This server cannot read one of the sources.",
8509
+ "dispatch_failed": "The worker could not start.",
8510
+ "drafting_unavailable": "The Assistant's workers are not running yet: try again in a moment.",
8511
+ "too_many_creations": "Other skills are being drafted: wait for one to finish, or cancel it.",
8512
+ "interrupted": "SynaBun stopped while this was running.",
8513
+ "invalid_request": "The request was not valid.",
8514
+ "budget_exceeded": "The worker reached its spend ceiling and was stopped.",
8515
+ "draft_unsafe": "The drafting folder held a link: nothing in it was used.",
8516
+ "provider_unsupported": "Drafting runs on Claude Code only.",
8517
+ "request_too_long": "The request is too long for the drafting worker: shorten it.",
8518
+ "other": "The draft could not be made."
8519
+ },
8520
+ "job": {
8521
+ "loading": "Reading the drafting…",
8522
+ "back": "Back to the form",
8523
+ "backWhile": "Back to the form (it keeps going)",
8524
+ "stepsLabel": "Steps",
8525
+ "title": {
8526
+ "active": "Drafting {name}",
8527
+ "done": "{name} is in Review",
8528
+ "drafted": "{name} is drafted",
8529
+ "failed": "{name} could not be drafted",
8530
+ "cancelled": "{name} was cancelled",
8531
+ "interrupted": "{name} was interrupted"
8532
+ },
8533
+ "step": {
8534
+ "sources": "Sources",
8535
+ "drafting": "Drafting",
8536
+ "checking": "Checking",
8537
+ "review": "Review"
8538
+ },
8539
+ "stepState": {
8540
+ "done": "done",
8541
+ "active": "in progress",
8542
+ "failed": "stopped here",
8543
+ "waiting": "not yet",
8544
+ "skipped": "not asked"
8545
+ },
8546
+ "cancel": "Cancel",
8547
+ "cancelling": "Cancelling…",
8548
+ "cancelFailed": "It could not be cancelled: {error}",
8549
+ "worker": "Worker",
8550
+ "byRoute": "(your Coding route)",
8551
+ "browser": "with the SynaBun browser",
8552
+ "time": "Time",
8553
+ "cost": "{cost} so far",
8554
+ "spent": "{cost} spent",
8555
+ "cut": "cut to fit",
8556
+ "files": "Written so far",
8557
+ "noFiles": "Nothing written yet.",
8558
+ "activity": "What the worker is doing",
8559
+ "lint": "Checks: {errors} errors, {warnings} warnings",
8560
+ "tests": "Test prompts: {tasks} tasks, {positive} that should pick it, {nearMiss} near-misses",
8561
+ "noTests": "No test prompts (evals/evals.json)",
8562
+ "assumptions": {
8563
+ "one": "{count} assumption",
8564
+ "other": "{count} assumptions"
8565
+ },
8566
+ "warnings": {
8567
+ "one": "{count} warning",
8568
+ "other": "{count} warnings"
8569
+ },
8570
+ "inReview": "It waits in Review: approve it there, then publish it to the runtimes you choose.",
8571
+ "notInReview": "It is a draft in the library: open it, and publish it when it is ready.",
8572
+ "openReview": "Open in Review",
8573
+ "openDraft": "Open the draft",
8574
+ "another": "Draft another",
8575
+ "question": "The worker asked: {question}",
8576
+ "partial": "What it wrote is kept as the draft {name}.",
8577
+ "openPartial": "Open it",
8578
+ "retry": "Try again",
8579
+ "editRetry": "Edit and try again",
8580
+ "retryFailed": "It could not start again: {error}",
8581
+ "gone": "That drafting could not be read: {error}",
8582
+ "started": "Drafting started."
8583
+ },
8584
+ "recent": {
8585
+ "title": "Drafted with AI",
8586
+ "failed": "The drafts could not be read: {error}",
8587
+ "state": {
8588
+ "queued": "Waiting",
8589
+ "gathering": "Reading sources",
8590
+ "drafting": "Drafting",
8591
+ "checking": "Checking",
8592
+ "submitting": "Adding to Review",
8593
+ "done": "In Review",
8594
+ "drafted": "Drafted",
8595
+ "failed": "Failed",
8596
+ "cancelled": "Cancelled",
8597
+ "interrupted": "Interrupted"
8598
+ }
8599
+ }
8600
+ }
8601
+ },
8602
+ "customize": {
8603
+ "nameLabel": "Name of your copy",
8604
+ "title": "Customize a copy of {name}",
8605
+ "explain": "Every file of it is copied into SynaBun's library as a new skill of yours, with only its name changed. The original stays as it is.",
8606
+ "confirm": "Make the copy",
8607
+ "cannot": {
8608
+ "binary": "It has files that are not text, which this server cannot copy: restart SynaBun and try again.",
8609
+ "unreadable": "Its SKILL.md cannot be read.",
8610
+ "restart": "Its other files can be read only by a newer server: restart SynaBun and try again.",
8611
+ "truncated": "It has more files than SynaBun lists, so a copy would miss some.",
8612
+ "yaml": "Its frontmatter has errors, so the name could not be set: fix it first."
8613
+ },
8614
+ "done": "Made {name}, your copy.",
8615
+ "nameInUse": "A skill named {name} is installed already: rename one before publishing.",
8616
+ "failed": "The copy could not be made: {error}"
8617
+ },
8618
+ "import": {
8619
+ "guest": "Only the host imports skills.",
8620
+ "serverUnknown": "What this server can do could not be read, so nothing was imported: try again.",
8621
+ "tooLarge": "That file is larger than a skill bundle can be (24 MB).",
8622
+ "notJson": "That file is not a skill bundle (not JSON).",
8623
+ "notBundle": "That file is not a SynaBun skill bundle.",
8624
+ "chooseProject": "Choose a project…",
8625
+ "where": "Where it goes",
8626
+ "scopeGlobal": "All projects (~/.claude/)",
8627
+ "scopeProject": "A project",
8628
+ "project": "Project",
8629
+ "chooseProjectError": "Choose the project it goes into.",
8630
+ "title": "Import {kind} \"{name}\"",
8631
+ "intro": {
8632
+ "one": "From {file}: {count} file. It is checked first; nothing is installed until you confirm.",
8633
+ "other": "From {file}: {count} files. It is checked first; nothing is installed until you confirm."
8634
+ },
8635
+ "check": "Check it",
8636
+ "refusedTitle": "This bundle cannot be imported",
8637
+ "refusedIntro": "Nothing was written. What is wrong with it:",
8638
+ "failed": "The import failed: {error}",
8639
+ "reviewTitle": "Review \"{name}\" before installing it",
8640
+ "discard": "Discard",
8641
+ "install": "Install",
8642
+ "confirmReviewed": "Confirm that you reviewed what it can do.",
8643
+ "confirmReplace": "Confirm that the files there may be replaced (a backup is kept), or discard the import.",
8644
+ "done": "Imported {name}.",
8645
+ "goesTo": "Goes to",
8646
+ "files": "Files",
8647
+ "fileCount": {
8648
+ "one": "{count} file ({size})",
8649
+ "other": "{count} files ({size})"
8650
+ },
8651
+ "digest": "Digest",
8652
+ "showFiles": "Show the files",
8653
+ "executable": "executable",
8654
+ "leftOut": "{path}: left out ({reason})",
8655
+ "skillExists": "A skill named \"{name}\" is already there. It is not replaced: delete or rename it first.",
8656
+ "replaceBox": {
8657
+ "one": "Replace the file already there ({files}); a backup is kept",
8658
+ "other": "Replace the {count} files already there ({files}); a backup is kept"
8659
+ },
8660
+ "checks": "Checks: {errors} problems, {warnings} warnings",
8661
+ "checksOk": "Checks: no problems found",
8662
+ "blockedByProblems": "It cannot be installed while it has problems: a runtime would misread it.",
8663
+ "scanClean": "no findings in the scanned content",
8664
+ "scanError": "the scan failed ({error}): it cannot be installed",
8665
+ "scanIncomplete": {
8666
+ "one": "{count} finding; part of it could not be read",
8667
+ "other": "{count} findings; part of it could not be read"
8668
+ },
8669
+ "scanFindings": {
8670
+ "one": "{count} finding",
8671
+ "other": "{count} findings"
8672
+ },
8673
+ "canDo": "What it can do:",
8674
+ "gateBlocked": "blocked",
8675
+ "gateReview": "needs your review",
8676
+ "fact": {
8677
+ "dynamic": {
8678
+ "one": "It runs {count} shell command when it loads, before the model reads it.",
8679
+ "other": "It runs {count} shell commands when it loads, before the model reads it."
8680
+ },
8681
+ "hooks": "It registers hooks for the rest of the session ({events}).",
8682
+ "tools": "It pre-approves {tools} for the turn that uses it.",
8683
+ "scripts": {
8684
+ "one": "It holds {count} script.",
8685
+ "other": "It holds {count} scripts."
8686
+ },
8687
+ "binaries": {
8688
+ "one": "It holds {count} file that is not text.",
8689
+ "other": "It holds {count} files that are not text."
8690
+ },
8691
+ "domains": "It names {domains}."
8692
+ },
8693
+ "reviewedBox": "I reviewed what this skill can do, for these exact files"
8694
+ },
8695
+ "dialog": {
8696
+ "unsavedTitle": "Unsaved changes",
8697
+ "unsavedFiles": {
8698
+ "one": "{count} file has changes that are not saved:",
8699
+ "other": "{count} files have changes that are not saved:"
8700
+ },
8701
+ "andMore": "and {count} more",
8702
+ "keepForLaterHelp": "\"Keep for later\" closes Skills Studio and brings them back the next time it opens in this browser.",
8703
+ "cancel": "Cancel",
8704
+ "discard": "Discard",
8705
+ "keepForLater": "Keep for later",
8706
+ "saveAll": "Save all",
8707
+ "save": "Save",
8708
+ "close": "Close",
8709
+ "ok": "OK",
8710
+ "dismiss": "Dismiss",
8711
+ "restoreTitle": "Unsaved changes from earlier",
8712
+ "restoreChanged": "{file} has unsaved changes from an earlier session, but the file changed since they were made. Put your changes back over the file as it is now, or drop them?",
8713
+ "restoreDrop": "Drop my changes",
8714
+ "restorePut": "Put my changes back",
8715
+ "keepEditing": "Keep editing",
8716
+ "loadTheirs": "Load theirs, drop mine",
8717
+ "overwriteMine": "Save mine over theirs",
8718
+ "recreate": "Create it again",
8719
+ "conflictTitle": "The file changed elsewhere",
8720
+ "conflictBody": "{file} was changed by something else since you opened it. Nothing was written.",
8721
+ "goneTitle": "The file was removed",
8722
+ "goneBody": "{file} was removed since you opened it. Nothing was written.",
8723
+ "stillHere": "Your changes are still in this tab.",
8724
+ "unsavedOne": "{file} has changes that are not saved.",
8725
+ "closeWorkspaceKeeps": "Closing the workspace keeps them in this browser: they come back when you open it again."
8726
+ },
8727
+ "toast": {
8728
+ "saveConflict": "{file} changed elsewhere: open it to decide what to keep.",
8729
+ "saveFailed": "{file} could not be saved: {error}",
8730
+ "loadFailed": "The skills could not be read again: {error}",
8731
+ "keptMine": "Keeping your {name} as it is. Its update is hidden until SynaBun ships another version.",
8732
+ "saveFirst": "Save or discard the open changes first.",
8733
+ "versionUnchanged": "The draft is the same as its version: nothing new to save.",
8734
+ "versionSaved": "Saved as a new version.",
8735
+ "versionFailed": "The version could not be saved: {error}",
8736
+ "pathCopied": "Path copied.",
8737
+ "nothingToSave": "Nothing to save.",
8738
+ "savedTypedSince": "Saved {file}: what you typed since is not saved yet.",
8739
+ "savedWithProblems": {
8740
+ "one": "Saved {file}, with {count} problem.",
8741
+ "other": "Saved {file}, with {count} problems."
8742
+ },
8743
+ "savedDraft": "Saved {file} to the draft. Publish to install it.",
8744
+ "saved": "Saved {file}.",
8745
+ "reloadFailed": "The file could not be read again: {error}",
8746
+ "changedElsewhere": "{file} was changed elsewhere. Your next save asks before replacing it.",
8747
+ "adopted": "{name} is in the library now: its versions and publishing work from here.",
8748
+ "adoptFailed": "It could not be added to the library: {error}",
8749
+ "deleted": "Deleted {name}.",
8750
+ "deleteFailed": "It could not be deleted: {error}",
8751
+ "libraryDeleted": "{name} was deleted from the library.",
8752
+ "libraryDeleteInstalled": "{name} is installed: remove its installations in Publish first.",
8753
+ "libraryDeleteChanged": "{name} changed since it was read: look at it again, then delete it.",
8754
+ "exportUnavailable": "This cannot be exported from here."
8755
+ },
8756
+ "status": {
8757
+ "draft": "Draft",
8758
+ "review": "In review",
8759
+ "changes": "Changes asked for",
8760
+ "approved": "Approved · not installed",
8761
+ "installed": "Installed · {where}",
8762
+ "outdated": "Installed · update available",
8763
+ "none": "Not installed",
8764
+ "help": {
8765
+ "draft": "No version yet: save the draft as a version to install it.",
8766
+ "review": "A submission waits in Review.",
8767
+ "changes": "You asked for changes to its submission.",
8768
+ "approved": "Approved in Review, not installed yet. Open Publish to install it.",
8769
+ "installed": "Installed by SynaBun.",
8770
+ "outdated": "An installation holds an older version than the one picked.",
8771
+ "none": "Not installed anywhere."
8772
+ }
8773
+ },
8774
+ "notice": {
8775
+ "autoMoved": {
8776
+ "one": "SynaBun moved {names} from an old bridge file to a skill folder when it started.",
8777
+ "other": "SynaBun moved {count} old bridge files to skill folders when it started: {names}."
8778
+ },
8779
+ "autoEarlier": {
8780
+ "one": "The file of {names} was exactly what an earlier SynaBun version wrote, so it moved without asking.",
8781
+ "other": "The files of {names} were exactly what earlier SynaBun versions wrote, so they moved without asking."
8782
+ },
8783
+ "autoWhy": "The bridge files are kept in the move's record; Undo puts them back and removes the folders the move made.",
8784
+ "autoNotMoved": {
8785
+ "one": "Not moved: {names}.",
8786
+ "other": "Not moved ({count}): {names}."
8787
+ },
8788
+ "undo": "Undo",
8789
+ "ok": "OK",
8790
+ "offer": "{runtime} still reaches {name} through {path}, a bridge file SynaBun cannot prove is its own (edited, or from an older version). Move it too to give {name} a skill folder; the file is kept in the move's record.",
8791
+ "moveToo": "Move it too",
8792
+ "undone": "Undone: the bridge files are back, and the skill folders the move made are removed.",
8793
+ "undonePartly": "Undone in part: see Settings → Skills → Skill folders.",
8794
+ "moved": "Moved: it has a skill folder now; the bridge file is kept in the move's record.",
8795
+ "movedPartly": "Moved in part: see Settings → Skills → Skill folders.",
8796
+ "failed": "That did not work: {error}"
8797
+ }
8798
+ },
6163
8799
  "context": {
6164
8800
  "focus": "Focus",
6165
8801
  "orbitHere": "Orbit Here",
@@ -6170,7 +8806,6 @@
6170
8806
  "copyId": "Copy ID",
6171
8807
  "delete": "Delete"
6172
8808
  },
6173
-
6174
8809
  "map": {
6175
8810
  "menu": {
6176
8811
  "frameAll": "Frame Whole Map",
@@ -6213,7 +8848,6 @@
6213
8848
  "showDotGrid": "Show background dot grid"
6214
8849
  }
6215
8850
  },
6216
-
6217
8851
  "time": {
6218
8852
  "justNow": "just now",
6219
8853
  "minutesAgo": "{n}m ago",
@@ -6223,7 +8857,6 @@
6223
8857
  "monthAgo": "1 month ago",
6224
8858
  "monthsAgo": "{n} months ago"
6225
8859
  },
6226
-
6227
8860
  "export": {
6228
8861
  "fieldLabel": "Field",
6229
8862
  "valueLabel": "Value",
@@ -6239,7 +8872,6 @@
6239
8872
  "relatedFilesHeading": "Related Files",
6240
8873
  "emptyContent": "*(empty)*"
6241
8874
  },
6242
-
6243
8875
  "tooltip": {
6244
8876
  "toggleViz": "Focus Mode (V)",
6245
8877
  "fullscreen": "Fullscreen (F11)",
@@ -6258,7 +8890,6 @@
6258
8890
  "snapToGrid": "Snap to grid",
6259
8891
  "tileTerminals": "Tile terminals"
6260
8892
  },
6261
-
6262
8893
  "accounts": {
6263
8894
  "apiShort": "API",
6264
8895
  "subscriptionBadge": "{service} account",
@@ -6339,6 +8970,44 @@
6339
8970
  "errStorage": "Couldn't save the key for this account."
6340
8971
  },
6341
8972
  "assistant": {
8973
+ "followups": {
8974
+ "title": "Next steps",
8975
+ "titleMulti": "Your decisions",
8976
+ "hintMulti": "Pick any, then send",
8977
+ "send": "Send",
8978
+ "sendCount": "Send {n} selected",
8979
+ "other": "Something else…",
8980
+ "otherTip": "Type your own reply in the message box",
8981
+ "sent": "Sent",
8982
+ "earlier": "Earlier",
8983
+ "guessed": "Read from the reply: check the wording before you send",
8984
+ "titleConfirm": "Go ahead?",
8985
+ "titleQuestion": "Your call",
8986
+ "hintQuestion": "Pick one, or type your own answer",
8987
+ "hold": "Not now",
8988
+ "holdSend": "Hold off on that for now.",
8989
+ "recommended": "Recommended",
8990
+ "answerLabel": "Your answer",
8991
+ "answered": "Answered",
8992
+ "keysNext": "{keys} to send · Esc to type your own",
8993
+ "keysMulti": "{keys} to pick · {mod}+Enter to send · Esc to type your own",
8994
+ "keysConfirm": "Enter to go ahead · Esc to type your own",
8995
+ "keysQuestion": "{keys} to pick · Enter to send"
8996
+ },
8997
+ "limitWait": {
8998
+ "waiting": "Waiting for the usage limit to reset",
8999
+ "restored": "Usage limit restored",
9000
+ "unknown": "Reset time unknown",
9001
+ "provider": "{provider} usage limit",
9002
+ "resetsAt": "resets at {time}",
9003
+ "resetAt": "reset at {time}",
9004
+ "left": "{clock} left",
9005
+ "retry": "Retry now",
9006
+ "tryAgain": "Try again",
9007
+ "retried": "Retried",
9008
+ "announceRestored": "The usage limit has reset.",
9009
+ "continue": "The usage limit has reset. Retry what was blocked and continue where you left off."
9010
+ },
6342
9011
  "accountUsage": {
6343
9012
  "autoPicked": "Auto chose {to}: {usage}",
6344
9013
  "fallbackPicked": "{from} out of usage → {to}: {usage}",
@@ -6492,7 +9161,14 @@
6492
9161
  "sessions": {
6493
9162
  "empty": "No other sessions",
6494
9163
  "recent": "Recent",
6495
- "filter": "Filter sessions…"
9164
+ "filter": "Filter sessions…",
9165
+ "remove": "Remove session",
9166
+ "removeNamed": "Remove “{title}”",
9167
+ "removeAsk": "Remove “{title}” for good?",
9168
+ "removeStopsTurn": "Its running turn stops.",
9169
+ "removeStopsAgents": "Its running agents stop ({count}).",
9170
+ "removeConfirm": "Remove",
9171
+ "removeFailed": "Could not remove “{title}”: {error}"
6496
9172
  },
6497
9173
  "work": {
6498
9174
  "agents": "{count} agents",
@@ -6929,13 +9605,17 @@
6929
9605
  "templateWeb": "Look up {caret} on the web",
6930
9606
  "suggestFix": "Fix … in {project}",
6931
9607
  "templateFix": "Fix {caret} in {project}",
9608
+ "suggestSkill": "Create Skill",
9609
+ "templateSkill": "Create a skill that {caret}",
6932
9610
  "suggestSchedule": "Schedule …",
6933
9611
  "templateSchedule": "Schedule {caret}",
6934
9612
  "suggestRemember": "Remember …",
6935
9613
  "templateRemember": "Remember {caret}",
6936
9614
  "project": "Project",
6937
9615
  "chooseProject": "Choose a project",
6938
- "projectAria": "Choose a project (now: {project})"
9616
+ "projectAria": "Choose a project (now: {project})",
9617
+ "starters": "Starters",
9618
+ "context": "Context"
6939
9619
  },
6940
9620
  "status": {
6941
9621
  "aborted": "Aborted.",
@@ -6951,6 +9631,10 @@
6951
9631
  "rewound": "Files rewound to checkpoint",
6952
9632
  "rewindFailed": "Rewind failed",
6953
9633
  "stopAllRequested": "Stopping all dispatched agents…",
9634
+ "stopAllDone": {
9635
+ "one": "Stopped {count} agent.",
9636
+ "other": "Stopped {count} agents."
9637
+ },
6954
9638
  "stopFailed": "Stop failed",
6955
9639
  "stopRequested": "Stop requested for {id}",
6956
9640
  "routeMode": "Model routing: {mode}",
@@ -7145,7 +9829,9 @@
7145
9829
  "awaitingRoute": "waiting for your model choice",
7146
9830
  "needsApproval": "needs approval",
7147
9831
  "needsInput": "needs input",
9832
+ "waitingInput": "waiting for your answer",
7148
9833
  "queued": "queued",
9834
+ "resuming": "resuming after a server restart",
7149
9835
  "strongerModel": "a stronger model",
7150
9836
  "escalateTo": "Escalate to {label}",
7151
9837
  "escalateFailed": "Run failed",
@@ -7177,13 +9863,72 @@
7177
9863
  "title": "Agents",
7178
9864
  "showAll": "Show all",
7179
9865
  "stopAll": "Stop all",
9866
+ "stopAllConfirm": {
9867
+ "one": "Stop {count} agent?",
9868
+ "other": "Stop {count} agents?"
9869
+ },
9870
+ "stopAllConfirmTip": "Press again to stop every agent of this session",
9871
+ "stopAllTip": "Stop every agent of this session (asks once more)",
7180
9872
  "empty": "No dispatched agents yet. Try /dispatch codex \"…\"",
7181
- "running": "{n} running",
7182
- "needsApproval": "{n} needs approval",
7183
- "done": "{n} finished",
9873
+ "running": {
9874
+ "one": "{count} running",
9875
+ "other": "{count} running"
9876
+ },
9877
+ "needsApproval": {
9878
+ "one": "{count} needs approval",
9879
+ "other": "{count} need approval"
9880
+ },
9881
+ "needsAnswer": {
9882
+ "one": "{count} waiting for your answer",
9883
+ "other": "{count} waiting for your answer"
9884
+ },
9885
+ "done": {
9886
+ "one": "{count} finished",
9887
+ "other": "{count} finished"
9888
+ },
7184
9889
  "emptyShort": "No dispatched agents yet.",
7185
9890
  "clearFinished": "Clear finished",
7186
- "idle": "{n} idle"
9891
+ "idle": {
9892
+ "one": "{count} idle",
9893
+ "other": "{count} idle"
9894
+ },
9895
+ "reveal": "{label}. Show it in the conversation",
9896
+ "working": "Agents at work",
9897
+ "more": {
9898
+ "one": "{count} more agent at work: show the list",
9899
+ "other": "{count} more agents at work: show the list"
9900
+ }
9901
+ },
9902
+ "stage": {
9903
+ "scene": {
9904
+ "quick": "Quick fix",
9905
+ "code": "Coding",
9906
+ "complex": "Complex task",
9907
+ "review": "Reviewing",
9908
+ "research": "Researching",
9909
+ "browser": "Browsing",
9910
+ "computer": "Using the computer",
9911
+ "automation": "Automating",
9912
+ "design": "Designing",
9913
+ "image_gen": "Making an image",
9914
+ "video_gen": "Making a video",
9915
+ "generic": "Working"
9916
+ },
9917
+ "doing": "{scene}…",
9918
+ "queued": "Queued",
9919
+ "queuedAt": "Queued · position {n}",
9920
+ "starting": "Starting…",
9921
+ "waitingApproval": "Waiting for your approval",
9922
+ "waitingInput": "Waiting for your answer",
9923
+ "waitingRoute": "Waiting for your model choice",
9924
+ "done": "Done",
9925
+ "failed": "Failed",
9926
+ "stopped": "Stopped",
9927
+ "underMinute": "under a minute",
9928
+ "minutes": {
9929
+ "one": "{count} min",
9930
+ "other": "{count} min"
9931
+ }
7187
9932
  },
7188
9933
  "composer": {
7189
9934
  "aria": "Message the assistant",
@@ -7216,6 +9961,9 @@
7216
9961
  "model": "Switch model (and brain)",
7217
9962
  "project": "Set the working project",
7218
9963
  "stop": "Stop a run, everything, or the current turn",
9964
+ "stopAmbiguous": "\"{target}\" matches {count} agents: {list}. Nothing was stopped; name one of them.",
9965
+ "stopFinished": "{name} has already finished.",
9966
+ "stopNoMatch": "No agent of this session matches \"{target}\". Nothing was stopped; /agents lists them.",
7219
9967
  "new": "Start a fresh session",
7220
9968
  "resume": "Resume a previous session",
7221
9969
  "compact": "Compact the context",
@@ -7270,6 +10018,8 @@
7270
10018
  "customAnswer": "Or type your own answer…",
7271
10019
  "typeAnswer": "Type your answer…",
7272
10020
  "multiHint": "Select all that apply",
10021
+ "keys": "{keys} to pick · Enter to answer · Esc for the message box",
10022
+ "keysText": "Enter to answer · Esc for the message box",
7273
10023
  "denyReason": "Tell the agent why (optional)…",
7274
10024
  "planFeedback": "Request changes… (sent with \"Keep planning\")",
7275
10025
  "action": {
@@ -7287,6 +10037,7 @@
7287
10037
  "allowed": "Allowed",
7288
10038
  "always": "Always",
7289
10039
  "denied": "Denied",
10040
+ "declined": "Declined",
7290
10041
  "answered": "Answered",
7291
10042
  "answeredInChat": "Answered in chat",
7292
10043
  "skipped": "Skipped",
@@ -7329,7 +10080,7 @@
7329
10080
  "projectNone": "Home directory",
7330
10081
  "projectNoneDesc": "no project",
7331
10082
  "projectCustom": "Type a directory path…",
7332
- "mcp": "MCP tool profile",
10083
+ "mcp": "SynaBun tools",
7333
10084
  "tools": "tools",
7334
10085
  "mode": "Permission mode",
7335
10086
  "modes": {
@@ -7481,12 +10232,12 @@
7481
10232
  },
7482
10233
  "budget": {
7483
10234
  "title": "Budget",
7484
- "menu": "Budget\u2026",
10235
+ "menu": "Budget…",
7485
10236
  "thisSession": "This session",
7486
10237
  "amount": "Budget per session (USD)",
7487
10238
  "noLimit": "No limit",
7488
10239
  "perSession": "{amount} / session",
7489
- "spendUnlimited": "{spent} \u00b7 no limit",
10240
+ "spendUnlimited": "{spent} · no limit",
7490
10241
  "applies": "Applies to each new session and all open sessions. Jev splits it across providers.",
7491
10242
  "errNumber": "Enter an amount in US dollars.",
7492
10243
  "errRange": "Between {min} and {max}.",
@@ -7495,14 +10246,14 @@
7495
10246
  "saveFailed": "Could not save the budget. Your edit is kept; try again.",
7496
10247
  "conflict": "Changed elsewhere again. Your edit is kept; try again.",
7497
10248
  "retry": "Try again",
7498
- "saving": "Saving\u2026",
7499
- "saved": "Budget saved \u2014 applies now.",
7500
- "chipSplit": "Brain {brain} \u00b7 agents {agents}",
10249
+ "saving": "Saving…",
10250
+ "saved": "Budget saved — applies now.",
10251
+ "chipSplit": "Brain {brain} · agents {agents}",
7501
10252
  "chipUnpriced": "{n} run(s) with unpriced usage",
7502
10253
  "meterLabel": "Session spend against the budget",
7503
10254
  "brainRow": "Brain",
7504
10255
  "providerSpend": "{spent} spent",
7505
- "providerAmounts": "Share {share} \u00b7 spent {spent} \u00b7 left for tasks {left}",
10256
+ "providerAmounts": "Share {share} · spent {spent} · left for tasks {left}",
7506
10257
  "reserve": "{reserve} reserved for the brain within this share.",
7507
10258
  "dry": "Share used up",
7508
10259
  "fixedRule": "Fixed rule",
@@ -7887,7 +10638,6 @@
7887
10638
  }
7888
10639
  }
7889
10640
  },
7890
-
7891
10641
  "onboarding": {
7892
10642
  "welcome": {
7893
10643
  "greeting": "Hi! I'm SynaBun!",
@@ -7967,8 +10717,8 @@
7967
10717
  "embeddingProvider": "Local embeddings (Transformers.js)",
7968
10718
  "mcpBuilt": "MCP server built",
7969
10719
  "toolConfigured": "Tool configured: {tool}",
7970
- "restartWarning": "Restart required \u2014 restart your AI tool to load the new MCP server",
7971
- "backupWarning": "Backup your API key \u2014 store it somewhere safe, you'll need it if you reinstall",
10720
+ "restartWarning": "Restart required — restart your AI tool to load the new MCP server",
10721
+ "backupWarning": "Backup your API key — store it somewhere safe, you'll need it if you reinstall",
7972
10722
  "launchNeural": "Launch Neural Interface"
7973
10723
  },
7974
10724
  "nav": {
@@ -7988,9 +10738,8 @@
7988
10738
  "golden-ratio": "Golden ratio",
7989
10739
  "v4": "Tailwind v4",
7990
10740
  "v3": "Tailwind v3",
7991
- "revisionRow": "Revision {revision} \u00b7 {at} \u00b7 {source}",
10741
+ "revisionRow": "Revision {revision} · {at} · {source}",
7992
10742
  "previewMotion": "Preview motion",
7993
-
7994
10743
  "card": "Card",
7995
10744
  "status": "Status",
7996
10745
  "semantic": "Semantic roles",
@@ -8502,20 +11251,12 @@
8502
11251
  },
8503
11252
  "tutorial": {
8504
11253
  "title": "Workspace tour",
8505
- "helpDescription": "The ? button in the title bar opens the workspace tour and picks up where you left off. Start over, inside the tour, goes back to the first step.",
11254
+ "helpDescription": "The ? button opens the Workspace tour: SynaBun walks you through the Assistant panel on its own whiteboard, one chapter at a time. Pick up any chapter again from its list.",
8506
11255
  "back": "Back",
8507
11256
  "next": "Next",
8508
- "skip": "Skip tour",
8509
- "finish": "Finish",
8510
- "close": "Close",
8511
- "start": "Show me around",
8512
11257
  "later": "Do this later",
8513
- "restart": "Start over",
8514
- "progress": "{n} of {total}",
8515
- "setupProgress": "Setup · {n} of {total}",
11258
+ "close": "Close",
8516
11259
  "navigation": "Tour navigation",
8517
- "keys": "← Back · → or Enter Next · Esc Close",
8518
- "unavailable": "This control is not on screen right now. Keep going: the tour works without it.",
8519
11260
  "explore": "Explore my project",
8520
11261
  "model": "Exploration model",
8521
11262
  "project": "Project folder",
@@ -8533,19 +11274,7 @@
8533
11274
  "launching": "Starting the exploration…",
8534
11275
  "launchFailed": "The exploration did not start. Try again, or do this later.",
8535
11276
  "selectionMissing": "Choose a CLI and a project first: Back takes you to them.",
8536
- "names": {
8537
- "explorer": "Memory Explorer",
8538
- "schedules": "Schedules",
8539
- "keybinds": "Keybinds"
8540
- },
8541
- "chapters": {
8542
- "memory": "Memory",
8543
- "workspace": "Workspace",
8544
- "tools": "Coding tools",
8545
- "automation": "Automations",
8546
- "assistant": "SynaBun Assistant",
8547
- "help": "Help"
8548
- },
11277
+ "setupProgress": "Setup · {n} of {total}",
8549
11278
  "steps": {
8550
11279
  "onboarding-explore": {
8551
11280
  "title": "Start with your project",
@@ -8570,78 +11299,101 @@
8570
11299
  "onboarding-memory-explain": {
8571
11300
  "title": "Ready to explore",
8572
11301
  "body": "The CLI opens in a terminal window and saves memories as it reads. Your agents recall them in later sessions and update them as the code changes."
11302
+ }
11303
+ }
11304
+ },
11305
+ "tour": {
11306
+ "title": "Workspace tour",
11307
+ "starter": "Show me the workspace",
11308
+ "starterTime": "2 min",
11309
+ "ui": {
11310
+ "next": "Continue",
11311
+ "done": "Done",
11312
+ "skip": "Skip tour",
11313
+ "back": "Back",
11314
+ "close": "Close",
11315
+ "hint": "Tap or press →",
11316
+ "chapterOf": "{n}/{total}",
11317
+ "chapters": "Tour chapters",
11318
+ "resume": "Pick up here",
11319
+ "explore": "Explore a project with a coding CLI…",
11320
+ "announce": "Chapter {n} of {total}. {line}"
11321
+ },
11322
+ "chapters": {
11323
+ "hello": "Hello",
11324
+ "work": "How I work",
11325
+ "controls": "Your controls",
11326
+ "workspace": "Around the workspace",
11327
+ "first": "Your first task"
11328
+ },
11329
+ "beats": {
11330
+ "hello": {
11331
+ "line": "Hi, I’m SynaBun. This panel is where we work together. Let me show you how, right here on the board."
11332
+ },
11333
+ "routing": {
11334
+ "line": "You ask. I plan and pick who does what: me, or a worker on the right model for the job."
11335
+ },
11336
+ "memory": {
11337
+ "line": "What we learn is saved as memory, so the next session starts where this one ends."
11338
+ },
11339
+ "tools": {
11340
+ "line": "I read the web in SynaBun’s browser, use your Mac when you allow it, and work in your project’s folder.",
11341
+ "lineNoComputer": "I read the web in SynaBun’s browser and work in your project’s folder, with the tools you allow."
8573
11342
  },
8574
- "welcome": {
8575
- "title": "A quick tour of your workspace",
8576
- "body": "See how memory, your coding tools and the SynaBun Assistant fit together. Skip whenever you like: the ? button brings you back."
8577
- },
8578
- "explain-memory-explorer": {
8579
- "title": "Find what your agents remember",
8580
- "body": "{explorer} lists every saved memory. Search it, or filter by category and tag."
8581
- },
8582
- "explain-graph": {
8583
- "title": "See your memory as a map",
8584
- "body": "Each memory is a point on the map, and categories form islands. The {menu} menu frames it, shows a memory's neighbours and rebuilds the layout.",
8585
- "body2d": "Each memory is a node, linked to the memories related to it. The {menu} menu picks which links show and how many memories load, and resets the layout."
8586
- },
8587
- "explain-focus": {
8588
- "title": "Make room to think",
8589
- "body": "Focus mode swaps the {view} for a whiteboard. Draw and write here: your agents can read the board and add to it.",
8590
- "graph": "{focus} swaps the {view} for a whiteboard. Draw and write there: your agents can read the board and add to it."
8591
- },
8592
- "explain-workspaces": {
8593
- "title": "Keep your layout",
8594
- "body": "A workspace saves your open cards, your view and your filters. Load it to get that scene back."
8595
- },
8596
- "explain-terminals": {
8597
- "title": "Work with your coding CLIs",
8598
- "body": "{apps} opens Claude Code, Codex, Gemini and OpenCode in terminal windows. Dock them at the bottom or float them over the board."
8599
- },
8600
- "explain-browser": {
8601
- "title": "Bring the browser along",
8602
- "body": "{apps} → {browser} opens the browser SynaBun controls. Your agents use it to read pages and act on them."
8603
- },
8604
- "explain-side-panel": {
8605
- "title": "Chat beside your work",
8606
- "body": "These buttons open Claude Code, Codex and OpenCode as side panels. Pick a project and a model there and start chatting."
8607
- },
8608
- "explain-automations": {
8609
- "title": "Give repeatable work a home",
8610
- "body": "{studio} keeps the tasks your agents repeat as templates. Launch one with the CLI and model you choose."
8611
- },
8612
- "explain-schedules": {
8613
- "title": "Run work at the right time",
8614
- "body": "{schedules} runs your automations on a timer or a cron schedule. Each run opens its own agent session."
8615
- },
8616
- "assistant-start": {
8617
- "title": "Meet the SynaBun Assistant",
8618
- "body": "Tell it what you need in plain words; it asks when something is unclear. Try “What can you help me do in this project?”",
8619
- "closed": "This button opens the Assistant. Tell it what you need in plain words; it asks when something is unclear."
8620
- },
8621
- "assistant-tools": {
8622
- "title": "Small jobs, done right here",
8623
- "body": "It browses, runs shell commands, makes small edits and manages memory, loops and schedules itself. The {computer} switch lets it use the apps on your Mac.",
8624
- "closed": "It browses, runs shell commands, makes small edits and manages memory, loops and schedules itself. In its toolbar, the {computer} switch lets it use the apps on your Mac."
8625
- },
8626
- "assistant-route": {
8627
- "title": "Big jobs go to workers",
8628
- "body": "Coding, design, image and video jobs go to Claude Code, Codex or OpenCode workers. A route card picks the model for each one; this switch sets when it asks you.",
8629
- "closed": "Coding, design, image and video jobs go to Claude Code, Codex or OpenCode workers. A route card picks the model for each one, and you set when it asks you."
8630
- },
8631
- "assistant-track": {
8632
- "title": "Follow the work",
8633
- "body": "Every run a worker does shows up in the chat with its result. This strip counts the tokens used, and {more} → {budget} caps the spend.",
8634
- "more": "Every run a worker does shows up in the chat with its result. Token use is counted below the chat, and {more} → {budget} caps the spend.",
8635
- "closed": "Every run a worker does shows up in the chat with its result. The Assistant counts the tokens used, and {more} → {budget} caps the spend."
8636
- },
8637
- "explain-help": {
8638
- "title": "Come back whenever you like",
8639
- "body": "? reopens this tour where you left off. {keybinds} lists your shortcuts, and {settings} holds everything else."
8640
- },
8641
- "skip-hint": {
8642
- "title": "Your tour lives here",
8643
- "body": "Click ? whenever you want to pick it up again. Nothing in your workspace was changed."
11343
+ "project": {
11344
+ "line": "This is the conversation’s project: the folder I read and change files in. Switch it when you change subjects."
11345
+ },
11346
+ "model": {
11347
+ "line": "This is the model you’re talking to. Workers can use others: I pick per task, and you can change either any time."
11348
+ },
11349
+ "effort": {
11350
+ "line": "Next to it: how hard I think, and when I ask before acting. Plan mode is there when you want to approve first."
11351
+ },
11352
+ "routes": {
11353
+ "line": "Routing decides when I check with you before picking who does the work. Start with Always ask; relax it once you trust me."
11354
+ },
11355
+ "workspace": {
11356
+ "line": "Outside this panel: the Memory Explorer, the whiteboard and Automations. I’ll point at each when you need it."
11357
+ },
11358
+ "whiteboard": {
11359
+ "line": "The whiteboard is your space to think; I can read what you draw. Our conversations live under my name, up there."
11360
+ },
11361
+ "automations": {
11362
+ "line": "Work that repeats becomes an automation; schedules run it on time. I report here when it’s done."
11363
+ },
11364
+ "handoff": {
11365
+ "line": "That’s the tour. Now it’s your turn: write what you need, or pick a starter. I’m right here, and ? brings me back."
8644
11366
  }
11367
+ },
11368
+ "ink": {
11369
+ "hi": "hi!",
11370
+ "you": "you",
11371
+ "code": "code",
11372
+ "research": "research",
11373
+ "design": "design",
11374
+ "memory": "memory",
11375
+ "web": "web",
11376
+ "mac": "your Mac",
11377
+ "files": "your files",
11378
+ "chapter3": "Chapter 3",
11379
+ "controls": "Your controls",
11380
+ "whereIWork": "where I work",
11381
+ "myBrain": "my brain",
11382
+ "howHard": "how hard",
11383
+ "whenIAsk": "when I ask",
11384
+ "me": "me ✓",
11385
+ "worker": "worker",
11386
+ "chapter4": "Chapter 4",
11387
+ "workspaceTitle": "Around the workspace",
11388
+ "sessions": "our sessions",
11389
+ "onTime": "on time"
11390
+ },
11391
+ "tips": {
11392
+ "run": "This is a worker on its own model. Its progress stays here; open it to follow it or stop it.",
11393
+ "usage": "What this session has used so far. Set a budget in More options when you want a ceiling.",
11394
+ "route": "Routing asked you here: pick who does the work. The route chip up top sets when I ask.",
11395
+ "more": "Models, Routes and the budget live here, with the rest of this conversation’s options.",
11396
+ "computer": "Computer use is on: I can see and use your Mac’s apps. Switch it off here any time."
8645
11397
  }
8646
11398
  },
8647
11399
  "codexSettings": {
@@ -8755,6 +11507,7 @@
8755
11507
  "tooltip": "SynaBun update available: v{current} → v{latest}",
8756
11508
  "tooltipDownloading": "Downloading SynaBun v{latest}",
8757
11509
  "tooltipReady": "SynaBun v{latest} is ready: it installs when SynaBun is idle",
11510
+ "tooltipReadyOff": "SynaBun v{latest} is ready to install",
8758
11511
  "titleAvailable": "Update available",
8759
11512
  "titleDownloading": "Downloading the update",
8760
11513
  "titleDownloaded": "Update ready",
@@ -8777,6 +11530,8 @@
8777
11530
  "hide": "Hide",
8778
11531
  "hideHint": "The download continues while this is hidden. SynaBun installs the update by itself when nothing is running.",
8779
11532
  "readyBody": "SynaBun v{version} is downloaded. It installs by itself once nothing is running: SynaBun shows a one-minute notice, then restarts into it. It also installs when you quit SynaBun.",
11533
+ "offBody": "Automatic updates are off. Install now downloads it and restarts SynaBun into it once nothing is running.",
11534
+ "readyBodyOff": "SynaBun v{version} is downloaded. Automatic updates are off: it installs when you choose Install now.",
8780
11535
  "waitingBody": "Waiting for: {list}.",
8781
11536
  "countdownBody": "SynaBun restarts into v{version} in {seconds} s.",
8782
11537
  "postponedBody": "Postponed until {time}. It also installs when you quit SynaBun.",
@@ -8793,14 +11548,19 @@
8793
11548
  "errorFallback": "SynaBun could not check for updates. Check the connection and try again.",
8794
11549
  "errorNext": "SynaBun keeps the version it runs and tries again at its next check. You can try now, or download the new version yourself.",
8795
11550
  "manualLink": "Download it yourself",
11551
+ "settingsLink": "Update settings",
8796
11552
  "close": "Close",
8797
11553
  "retry": "Try again",
8798
11554
  "testFeed": "test feed",
8799
11555
  "metaAvailable": "From the SynaBun app",
8800
11556
  "metaDownloading": "Downloading: {percent}%",
8801
11557
  "metaDownloaded": "Ready: installs when SynaBun is idle",
11558
+ "metaReadyOff": "Ready to install",
8802
11559
  "metaCountdown": "Restarting to install it",
8803
- "metaPostponed": "Postponed: installs on quit or later"
11560
+ "metaPostponed": "Postponed: installs on quit or later",
11561
+ "restartButton": "Restart to update",
11562
+ "restartTooltip": "SynaBun v{latest} is ready: restart to update",
11563
+ "restartSoon": "Restarting soon"
8804
11564
  },
8805
11565
  "busy": {
8806
11566
  "assistant": "an Assistant run or dispatched agent",
@@ -8845,6 +11605,8 @@
8845
11605
  "updateAvailableManualDetail": "This copy cannot replace itself where it is. Download the new disk image and install it the way you installed SynaBun.",
8846
11606
  "updateDownloading": "SynaBun v{version} is downloading",
8847
11607
  "updateAutoDetail": "SynaBun installs it by itself as soon as nothing is running, after a one-minute notice you can postpone. It also installs when you quit SynaBun.",
11608
+ "updateAvailableOffDetail": "Automatic updates are off. Install now downloads it and restarts SynaBun into it once nothing is running.",
11609
+ "updateReadyOffDetail": "Automatic updates are off: it installs when you choose Install now.",
8848
11610
  "installNow": "Install now",
8849
11611
  "downloadYourself": "Download it yourself",
8850
11612
  "countdownTitle": "Updating SynaBun to v{version}",
@@ -8869,7 +11631,6 @@
8869
11631
  "stepPath": "Adding the CLI folder to your PATH…",
8870
11632
  "stepPathAdded": "Added {dir} to your PATH",
8871
11633
  "bodyMissing": "Install it with one click from {vendor}'s official installer, or run:",
8872
- "bodyMissingArchive": "Install it with one click from {vendor}'s official release, or run:",
8873
11634
  "bodyMissingManual": "Install it with this command, then re-check:",
8874
11635
  "bodyBroken": "{label} was found at {path}, but it could not be started:",
8875
11636
  "bodyBrokenVersion": "{label} {version} was found at {path}, but it could not be started:",
@@ -8885,8 +11646,6 @@
8885
11646
  "stepDownloadReceived": "Downloading: {received} MB",
8886
11647
  "stepVerify": "Checking the download…",
8887
11648
  "stepRun": "Running the official installer…",
8888
- "stepExtract": "Unpacking…",
8889
- "stepPlace": "Putting it in place…",
8890
11649
  "stepCheck": "Checking that it starts…",
8891
11650
  "errorOffline": "The download server could not be reached. Check the connection and try again.",
8892
11651
  "errorHttp": "The download server answered with an error. Try again in a moment.",
@@ -8895,7 +11654,6 @@
8895
11654
  "errorTimeout": "The installer took too long and was stopped.",
8896
11655
  "errorInstallerFailed": "The official installer stopped with an error.",
8897
11656
  "errorNotFound": "The installer finished, but SynaBun does not find {label} afterwards.",
8898
- "errorUnpack": "The download could not be unpacked, so it was removed.",
8899
11657
  "errorDisk": "The files could not be written. Check free space and permissions, then try again.",
8900
11658
  "errorCancelled": "The installation was stopped.",
8901
11659
  "errorUnsupported": "There is no one-click install for this system. Use the command below or the install guide.",
@@ -8953,5 +11711,721 @@
8953
11711
  "errorCancelled": "The download was stopped.",
8954
11712
  "errorUnknown": "The download did not finish.",
8955
11713
  "errorRequest": "SynaBun did not answer: {message}"
11714
+ },
11715
+ "schedules": {
11716
+ "window": {
11717
+ "title": "Schedules",
11718
+ "guestDisabled": "Schedules are disabled by the host",
11719
+ "hideBackdrop": "Hide the backdrop",
11720
+ "showBackdrop": "Show the backdrop",
11721
+ "close": "Close Schedules",
11722
+ "closeTip": "Close (Esc)",
11723
+ "railLabel": "Schedule views and groups",
11724
+ "viewLabel": "View"
11725
+ },
11726
+ "views": {
11727
+ "upcoming": "Up next",
11728
+ "all": "All schedules",
11729
+ "attention": "Needs attention",
11730
+ "paused": "Paused",
11731
+ "timers": "Timers",
11732
+ "activity": "Activity",
11733
+ "ungrouped": "Ungrouped"
11734
+ },
11735
+ "oneAtATime": "One at a time",
11736
+ "rail": {
11737
+ "groups": "Groups",
11738
+ "views": "Views",
11739
+ "newGroup": "New group",
11740
+ "noGroups": "No groups yet.",
11741
+ "groupLabel": "{name}: {facts}",
11742
+ "oneAtATimeFact": "one at a time",
11743
+ "attentionTip": {
11744
+ "one": "{count} schedule needs attention",
11745
+ "other": "{count} schedules need attention"
11746
+ },
11747
+ "withCount": "{label} ({count})"
11748
+ },
11749
+ "count": {
11750
+ "schedules": {
11751
+ "one": "{count} schedule",
11752
+ "other": "{count} schedules"
11753
+ },
11754
+ "active": {
11755
+ "one": "{count} active",
11756
+ "other": "{count} active"
11757
+ },
11758
+ "paused": {
11759
+ "one": "{count} paused",
11760
+ "other": "{count} paused"
11761
+ },
11762
+ "attention": {
11763
+ "one": "{count} needs attention",
11764
+ "other": "{count} need attention"
11765
+ },
11766
+ "runs": {
11767
+ "one": "{count} run",
11768
+ "other": "{count} runs"
11769
+ }
11770
+ },
11771
+ "list": {
11772
+ "searchSchedules": "Search schedules",
11773
+ "searchRuns": "Search runs",
11774
+ "searchPlaceholder": "Search by name, automation, group or time…",
11775
+ "searchRunsPlaceholder": "Search runs by schedule or automation…",
11776
+ "clearSearch": "Clear search",
11777
+ "order": "Order",
11778
+ "sortNext": "Next run first",
11779
+ "sortName": "Name",
11780
+ "sortLast": "Last run first",
11781
+ "dragHint": "Drag a schedule onto a group in the sidebar to move it",
11782
+ "loading": "Loading schedules…",
11783
+ "statusLoading": "Loading…",
11784
+ "statusNotLoaded": "Not loaded",
11785
+ "statusMatch": {
11786
+ "one": "{count} schedule matches “{query}”",
11787
+ "other": "{count} schedules match “{query}”"
11788
+ },
11789
+ "statusShowing": {
11790
+ "one": "Showing {shown} of {count} schedule",
11791
+ "other": "Showing {shown} of {count} schedules"
11792
+ },
11793
+ "statusNoMatches": "No matches",
11794
+ "shownOf": "{shown} of {total}",
11795
+ "editGroupNamed": "Edit group {name}",
11796
+ "later": "Later"
11797
+ },
11798
+ "head": {
11799
+ "editGroup": "Edit group",
11800
+ "prompt": "Prompt a schedule",
11801
+ "promptTip": "Describe the schedule to Claude Code in a side panel",
11802
+ "newSchedule": "New schedule",
11803
+ "upcoming": {
11804
+ "one": "{count} schedule runs in the next 24 hours, each at its next run, soonest first.",
11805
+ "other": "{count} schedules run in the next 24 hours, each at its next run, soonest first."
11806
+ },
11807
+ "upcomingNone": "Nothing runs in the next 24 hours.",
11808
+ "attention": "Active schedules whose last run failed or that are late. Open one to see why.",
11809
+ "paused": "Paused schedules keep their settings. Turn one on to put it back on its timetable.",
11810
+ "activity": "The latest run of each schedule, newest first. Open one to see its schedule.",
11811
+ "ungrouped": "Schedules in no group. Drag one onto a group in the sidebar to file it.",
11812
+ "groupLaunch": "Group launch settings: {settings}"
11813
+ },
11814
+ "overrides": {
11815
+ "context": "context {value}",
11816
+ "thinking": "thinking {value}",
11817
+ "mcp": "SynaBun tools: {value}",
11818
+ "browserOn": "browser on",
11819
+ "browserOff": "browser off"
11820
+ },
11821
+ "note": {
11822
+ "showingBefore": "{error} Showing what loaded before.",
11823
+ "tryAgain": "Try again",
11824
+ "dismiss": "Dismiss"
11825
+ },
11826
+ "load": {
11827
+ "failed": "The {lists} did not load: {reasons}.",
11828
+ "list": {
11829
+ "schedules": "schedules",
11830
+ "automations": "automations",
11831
+ "groups": "groups"
11832
+ },
11833
+ "timersFailed": "The timers did not load: {reasons}.",
11834
+ "noAnswer": "no answer within {seconds} seconds",
11835
+ "unexpected": "an unexpected answer"
11836
+ },
11837
+ "loadFailed": {
11838
+ "title": "Schedules could not be loaded",
11839
+ "notEverything": "Not everything loaded.",
11840
+ "waitingSchedule": "The new schedule opens once they load.",
11841
+ "waitingGroup": "The new group opens once they load."
11842
+ },
11843
+ "cliReport": {
11844
+ "clearing": "Clearing the old CLI's settings from the group's schedules…",
11845
+ "nowRuns": "The group now runs {cli}.",
11846
+ "noCli": "The group no longer sets a CLI.",
11847
+ "cleared": "Cleared the old CLI's settings on {names}.",
11848
+ "noneLeft": "None of its schedules had settings of the old CLI left.",
11849
+ "changed": {
11850
+ "one": "{names} changed meanwhile and kept its settings.",
11851
+ "other": "{names} changed meanwhile and kept their settings."
11852
+ },
11853
+ "failed": {
11854
+ "one": "{names} could not be checked or updated and kept its settings.",
11855
+ "other": "{names} could not be checked or updated and kept their settings."
11856
+ },
11857
+ "open": {
11858
+ "one": "Open it to choose its settings.",
11859
+ "other": "Open them to choose their settings."
11860
+ }
11861
+ },
11862
+ "empty": {
11863
+ "none": "No schedules yet",
11864
+ "noneText": "A schedule launches one of your automations on a timetable.",
11865
+ "noMatch": "No schedules match “{query}”",
11866
+ "elsewhere": "Some do in other views.",
11867
+ "tryAnother": "Try another word, or clear the search.",
11868
+ "searchAll": "Search all schedules",
11869
+ "attention": "Nothing needs attention",
11870
+ "attentionText": "The last run of every active schedule worked, and none is late.",
11871
+ "paused": "No paused schedules",
11872
+ "pausedText": "Every schedule is on its timetable.",
11873
+ "upcoming": "Nothing runs in the next 24 hours",
11874
+ "upcomingText": "Active schedules show here once their next run is less than a day away.",
11875
+ "ungrouped": "Every schedule is in a group",
11876
+ "group": "No schedules in this group yet",
11877
+ "groupText": "Drag one onto the group in the sidebar, or create one here.",
11878
+ "noRunMatch": "No runs match “{query}”",
11879
+ "noRuns": "No runs yet",
11880
+ "noRunsText": "Each schedule's latest run shows here once it has run."
11881
+ },
11882
+ "row": {
11883
+ "paused": "Paused",
11884
+ "switchLabel": "Run {name} on schedule",
11885
+ "pause": "Pause",
11886
+ "resume": "Resume"
11887
+ },
11888
+ "detail": {
11889
+ "runs": "Runs",
11890
+ "automation": "Automation",
11891
+ "missingAutomation": "Missing automation",
11892
+ "timetable": "Timetable",
11893
+ "nextRun": "Next run",
11894
+ "lastRun": "Last run",
11895
+ "error": "Error",
11896
+ "detail": "Detail",
11897
+ "runCount": "Runs so far",
11898
+ "timeZone": "Time zone",
11899
+ "dayThemes": "Day themes",
11900
+ "themedDaysOnly": "(runs on these days only)",
11901
+ "launchSettings": "Launch settings",
11902
+ "source": {
11903
+ "group": "(group)",
11904
+ "automation": "(automation)",
11905
+ "default": "(default)"
11906
+ },
11907
+ "group": "Group",
11908
+ "groupOf": "Group of {name}",
11909
+ "runNow": "Run now",
11910
+ "runNowTip": "Start one run now; the timetable is unchanged",
11911
+ "editPrompt": "Edit prompt",
11912
+ "editPromptTip": "Open its automation in Automation Studio",
11913
+ "editSchedule": "Edit schedule",
11914
+ "delete": "Delete…"
11915
+ },
11916
+ "activity": {
11917
+ "listLabel": "Latest runs",
11918
+ "rowLabel": "{name}: {result} {ago}. Show it in All schedules",
11919
+ "next": "Next",
11920
+ "statusMatch": {
11921
+ "one": "{count} run matches “{query}”",
11922
+ "other": "{count} runs match “{query}”"
11923
+ }
11924
+ },
11925
+ "timers": {
11926
+ "sub": "Run an automation, or a saved schedule, once after a delay.",
11927
+ "waiting": "Waiting to run",
11928
+ "runOnce": "Run an automation once",
11929
+ "usesBrowser": "Uses the browser",
11930
+ "startIn": "Start in",
11931
+ "delay": "Delay",
11932
+ "presetMinutes": "{n} min",
11933
+ "presetHours": "{n} h",
11934
+ "minutesPlaceholder": "min",
11935
+ "minutesFromNow": "Minutes from now",
11936
+ "start": "Start timer",
11937
+ "fireSaved": "Fire a saved schedule once",
11938
+ "fireSavedIntro": "Runs it with its own settings; its timetable is unchanged.",
11939
+ "schedule": "Schedule",
11940
+ "chooseSchedule": "Choose a schedule…",
11941
+ "set": "Set timer",
11942
+ "savedOnce": "Saved schedule, once",
11943
+ "automationOnce": "Automation, once",
11944
+ "cancel": "Cancel",
11945
+ "cancelFor": "Cancel the timer for {name}",
11946
+ "none": "No timers are waiting.",
11947
+ "loading": "Loading timers…",
11948
+ "firing": "firing",
11949
+ "countdownHours": "{h}h {m}m",
11950
+ "countdownHour": "{h}h",
11951
+ "countdownMinutes": "{m}m"
11952
+ },
11953
+ "form": {
11954
+ "automation": "Automation",
11955
+ "chooseAutomation": "Choose an automation…",
11956
+ "cli": "CLI",
11957
+ "model": "Model",
11958
+ "context": "Context",
11959
+ "thinking": "Thinking",
11960
+ "account": "OpenAI account",
11961
+ "browser": "Browser",
11962
+ "group": "Group",
11963
+ "name": "Name",
11964
+ "launchOverrides": "Launch overrides"
11965
+ },
11966
+ "launch": {
11967
+ "default": "Default",
11968
+ "templateDefault": "Template default",
11969
+ "templateOrDefault": "Template/default",
11970
+ "templateOrGroupDefault": "Template/group default",
11971
+ "noOverride": "No override",
11972
+ "alwaysOn": "Always on",
11973
+ "alwaysOff": "Always off",
11974
+ "saved": "{value} (saved)",
11975
+ "unavailable": "{value} (unavailable — choose another)",
11976
+ "effortOption": "{level} - {desc}",
11977
+ "accountPlan": "{label} ({plan})",
11978
+ "contextProviderDefault": "Provider default",
11979
+ "contextDefaultSize": "Default ({size})",
11980
+ "contextExtendedSize": "Extended ({size})",
11981
+ "word": {
11982
+ "off": "Off",
11983
+ "default": "Default",
11984
+ "low": "Low",
11985
+ "medium": "Med",
11986
+ "high": "High",
11987
+ "xhigh": "XHigh",
11988
+ "max": "Max",
11989
+ "ultra": "Ultra",
11990
+ "noThinking": "No thinking",
11991
+ "minimal": "Minimal",
11992
+ "balanced": "Balanced",
11993
+ "deep": "Deep",
11994
+ "veryDeep": "Very deep",
11995
+ "maximum": "Maximum",
11996
+ "configDefault": "Config default",
11997
+ "modelDefault": "Model default",
11998
+ "light": "Light",
11999
+ "maximumDelegated": "Maximum, with delegation"
12000
+ }
12001
+ },
12002
+ "editor": {
12003
+ "back": "Back to the list",
12004
+ "backTip": "Back (Esc)",
12005
+ "cancel": "Cancel",
12006
+ "save": "Save changes"
12007
+ },
12008
+ "groupEditor": {
12009
+ "newTitle": "New group",
12010
+ "newSub": "Groups keep related schedules together, and can share launch settings.",
12011
+ "namePlaceholder": "Twitter cadence",
12012
+ "colour": "Colour",
12013
+ "oneAtATimeHelp": "Schedules in every group set to one at a time take turns: while one runs, the others wait.",
12014
+ "launchIntro": "Apply to every schedule in this group. A schedule's own setting wins.",
12015
+ "order": "Order",
12016
+ "position": "Position {position} of {count}",
12017
+ "moveUp": "Move up",
12018
+ "moveDown": "Move down",
12019
+ "delete": "Delete",
12020
+ "membersStay": {
12021
+ "one": "Its {count} schedule moves to Ungrouped and keeps running.",
12022
+ "other": "Its {count} schedules move to Ungrouped and keep running."
12023
+ },
12024
+ "empty": "The group is empty.",
12025
+ "deleteGroup": "Delete group…",
12026
+ "create": "Create group"
12027
+ },
12028
+ "scheduleEditor": {
12029
+ "newSub": "Launches one of your automations on a timetable.",
12030
+ "namePlaceholder": "Morning post",
12031
+ "automationOption": "{name} ({category})",
12032
+ "customCategory": "custom",
12033
+ "active": "Active",
12034
+ "activeHelp": "Turn it off to pause the schedule without deleting it.",
12035
+ "when": "When it runs",
12036
+ "cron": "Cron expression",
12037
+ "cronHelp": "A cron expression has five fields: minute, hour, day of month, month, day of week.",
12038
+ "presets": "Presets",
12039
+ "presetGroup": "{group} presets",
12040
+ "launchIntro": "Leave a setting on its default to use the group's, then the automation's.",
12041
+ "optional": "optional",
12042
+ "dayThemesIntro": "Extra context added to the run on that weekday, such as a topic for Mondays. Once any day has a theme, the schedule runs only on the days that have one.",
12043
+ "themeLabel": "Theme: {label}",
12044
+ "removeTheme": "Remove the {day} theme",
12045
+ "removeThemeTip": "Remove this day's theme",
12046
+ "themePlaceholder": "Extra context for {day} runs (optional)",
12047
+ "create": "Create schedule"
12048
+ },
12049
+ "presets": {
12050
+ "group": {
12051
+ "frequency": "Frequency",
12052
+ "daily": "Daily",
12053
+ "weekly": "Weekly"
12054
+ },
12055
+ "every15min": "Every 15 min",
12056
+ "every30min": "Every 30 min",
12057
+ "everyHour": "Every hour",
12058
+ "every2hours": "Every 2 hours",
12059
+ "every6hours": "Every 6 hours",
12060
+ "twiceADay": "Twice a day",
12061
+ "threeTimesADay": "Three times a day",
12062
+ "weekdays0900": "Weekdays 09:00",
12063
+ "weekdaysTwice": "Weekdays twice",
12064
+ "weekends1000": "Weekends 10:00",
12065
+ "monWedFri": "Mon, Wed, Fri",
12066
+ "tueThu": "Tue, Thu"
12067
+ },
12068
+ "confirm": {
12069
+ "scheduleTitle": "Delete this schedule?",
12070
+ "scheduleText": "It stops running and cannot be restored. The automation it launches stays in Automation Studio.",
12071
+ "scheduleAccept": "Delete schedule",
12072
+ "groupTitle": "Delete this group?",
12073
+ "groupAccept": "Delete group"
12074
+ },
12075
+ "prompt": {
12076
+ "title": "Prompt a Schedule",
12077
+ "sub": "Start the schedule draft in a sidepanel.",
12078
+ "close": "Close",
12079
+ "ready": "Ready",
12080
+ "planned": "Planned",
12081
+ "multiProvider": "Multi-provider",
12082
+ "tabLabel": "Schedule Wizard"
12083
+ },
12084
+ "toast": {
12085
+ "notLoaded": "The schedules have not loaded yet: save once they have",
12086
+ "modelUnavailable": "This model is unavailable for the selected account",
12087
+ "contextUnavailable": "This context window is unavailable for the selected model and account",
12088
+ "noChanges": "No changes to save",
12089
+ "nameRequired": "Give the schedule a name",
12090
+ "automationRequired": "Choose the automation it launches",
12091
+ "cronRequired": "Enter a cron expression with five fields",
12092
+ "updated": "Schedule updated",
12093
+ "created": "Schedule created",
12094
+ "saveFailed": "Save failed: {error}",
12095
+ "noAutomation": "No automation linked to this schedule",
12096
+ "themeRemoved": "{day} theme removed",
12097
+ "movedTo": "Moved to {group}",
12098
+ "aGroup": "group",
12099
+ "moveFailed": "Move failed: {error}",
12100
+ "resumed": "{name} is back on its timetable",
12101
+ "paused": "{name} is paused",
12102
+ "toggleFailed": "Toggle failed: {error}",
12103
+ "launching": "Launching schedule…",
12104
+ "runFailed": "Run failed: {error}",
12105
+ "deleted": "Schedule deleted",
12106
+ "groupDeleted": "Group deleted",
12107
+ "deleteFailed": "Delete failed: {error}",
12108
+ "groupDeleteFailed": "Group delete failed: {error}",
12109
+ "groupNameRequired": "Group name is required",
12110
+ "groupCreated": "Group created",
12111
+ "groupFailed": "Group failed: {error}",
12112
+ "groupUpdated": "Group updated",
12113
+ "groupUpdatedKept": {
12114
+ "one": "Group updated. {count} schedule kept the old CLI's settings: the group's page names it",
12115
+ "other": "Group updated. {count} schedules kept the old CLI's settings: the group's page names them"
12116
+ },
12117
+ "groupUpdateFailed": "Group update failed: {error}",
12118
+ "reorderFailed": "Reorder failed: {error}",
12119
+ "comingSoon": "Coming soon — Claude Code only for now",
12120
+ "panelFailed": "Failed to open Claude panel: {error}",
12121
+ "chooseAutomation": "Choose an automation first",
12122
+ "chooseDelay": "Choose a delay or enter minutes",
12123
+ "runningNow": "Running now: {name}",
12124
+ "timerSet": "Timer set: {name}",
12125
+ "runNowFailed": "Run now failed: {error}",
12126
+ "timerFailed": "Timer failed: {error}",
12127
+ "timerCancelled": "Timer cancelled",
12128
+ "cancelFailed": "Cancel failed: {error}",
12129
+ "chooseSchedule": "Choose a schedule",
12130
+ "minutesRequired": "Enter the minutes from now",
12131
+ "scheduleTimerSet": "Schedule timer set",
12132
+ "fired": "Schedule fired: {name}",
12133
+ "scheduleFailed": "Schedule failed: {reason}",
12134
+ "timerFired": "Timer fired: {name}"
12135
+ },
12136
+ "view": {
12137
+ "everyDay": "Every day",
12138
+ "weekdays": "Weekdays",
12139
+ "weekends": "Weekends",
12140
+ "dayRange": "{from}–{to}",
12141
+ "monthDays": {
12142
+ "one": "Day {days} of every month",
12143
+ "other": "Days {days} of every month"
12144
+ },
12145
+ "everyMinutes": {
12146
+ "one": "every minute",
12147
+ "other": "every {count} minutes"
12148
+ },
12149
+ "everyHoursAt": {
12150
+ "one": "every hour at :{minute}",
12151
+ "other": "every {count} hours at :{minute}"
12152
+ },
12153
+ "everyHourBetween": "every hour from {from} to {to}",
12154
+ "daysAt": "{days} at {times}",
12155
+ "daysEvery": "{days}, {every}",
12156
+ "listAnd": "{list} and {last}",
12157
+ "dayShort": {
12158
+ "sun": "Sun",
12159
+ "mon": "Mon",
12160
+ "tue": "Tue",
12161
+ "wed": "Wed",
12162
+ "thu": "Thu",
12163
+ "fri": "Fri",
12164
+ "sat": "Sat"
12165
+ },
12166
+ "dayLong": {
12167
+ "sun": "Sunday",
12168
+ "mon": "Monday",
12169
+ "tue": "Tuesday",
12170
+ "wed": "Wednesday",
12171
+ "thu": "Thursday",
12172
+ "fri": "Friday",
12173
+ "sat": "Saturday"
12174
+ },
12175
+ "runNever": "Not run yet",
12176
+ "runCompleted": "Completed",
12177
+ "runStarted": "Started",
12178
+ "runAutomationMissing": "Automation missing",
12179
+ "runAutomationMissingReason": "The automation this schedule launches no longer exists.",
12180
+ "runFailed": "Failed",
12181
+ "runFailedReason": "The run failed.",
12182
+ "runStopped": "Stopped",
12183
+ "runStoppedByYou": "Stopped by you",
12184
+ "runInterrupted": "Interrupted",
12185
+ "notScheduled": "Not scheduled",
12186
+ "dueNow": "Due now",
12187
+ "overdue": "Overdue",
12188
+ "inSeconds": "in {n} s",
12189
+ "inMinutes": "in {n} min",
12190
+ "inHoursMinutes": "in {h} h {m} min",
12191
+ "inHours": "in {h} h",
12192
+ "inDaysHours": "in {d} d {h} h",
12193
+ "inDays": "in {d} d",
12194
+ "justNow": "just now",
12195
+ "minutesAgo": "{n} min ago",
12196
+ "hoursAgo": "{n} h ago",
12197
+ "yesterdayAgo": "yesterday",
12198
+ "daysAgo": "{n} d ago",
12199
+ "today": "Today",
12200
+ "tomorrow": "Tomorrow",
12201
+ "yesterday": "Yesterday",
12202
+ "dayAt": "{day} {time}",
12203
+ "tomorrowAt": "Tomorrow {time}",
12204
+ "weekdayAt": "{day} {time}",
12205
+ "factCli": "CLI",
12206
+ "factModel": "Model",
12207
+ "factContext": "Context",
12208
+ "factThinking": "Thinking",
12209
+ "factMcp": "Tools and MCP servers",
12210
+ "factAccount": "OpenAI account",
12211
+ "factBrowser": "Browser",
12212
+ "valueDefault": "Default",
12213
+ "valueOn": "On",
12214
+ "valueOff": "Off",
12215
+ "context1m": "1M tokens",
12216
+ "contextExtended": "Extended",
12217
+ "effort": {
12218
+ "none": "None",
12219
+ "minimal": "Minimal",
12220
+ "low": "Low",
12221
+ "medium": "Medium",
12222
+ "high": "High",
12223
+ "xhigh": "Xhigh",
12224
+ "max": "Max",
12225
+ "ultra": "Ultra",
12226
+ "thinking": "Thinking"
12227
+ }
12228
+ }
12229
+ },
12230
+ "crashNotice": {
12231
+ "title": "SynaBun's server stopped unexpectedly and was restarted automatically.",
12232
+ "whenToday": "It happened at {time}.",
12233
+ "whenEarlier": "It happened on {date} at {time}.",
12234
+ "whenManyToday": "It happened {count} times, the last at {time}.",
12235
+ "whenManyEarlier": "It happened {count} times, the last on {date} at {time}.",
12236
+ "how": "How it ended: {exit}.",
12237
+ "lostTitle": "What the restart ended",
12238
+ "lostTerminals": "Open terminals were closed.",
12239
+ "lostRuns": "Agent runs and loops that were running were interrupted, though a step already under way may still finish on its own. Timers and queued runs were cleared. Saved schedules keep running.",
12240
+ "lostReplies": "Replies being written in the side panels or the Assistant may have been cut off. The conversations are kept: send again what did not finish.",
12241
+ "lostBrowser": "Browser sessions SynaBun was driving ended. Their saved sign-ins are kept.",
12242
+ "lostTunnel": "The public address, if it was on, is off. Turning it on again gives a new address.",
12243
+ "lostTunnelUnknown": "The public address, if it was on, may still be open: SynaBun could not end the cloudflared that served it. Ending that process, or restarting the computer, closes it.",
12244
+ "openLogs": "Open logs",
12245
+ "openLogsFailed": "The logs folder could not be opened.",
12246
+ "dismiss": "Dismiss",
12247
+ "label": "Server restarted after a crash",
12248
+ "exitCode": "exit code {code}",
12249
+ "exitText": "{status}, {kind}",
12250
+ "kindNativeCrash": "native crash",
12251
+ "kindOutOfMemory": "out of memory",
12252
+ "kindNodeFatal": "Node.js fatal error",
12253
+ "kindError": "stopped by an error",
12254
+ "kindKilled": "ended by force",
12255
+ "kindInterrupted": "interrupted"
12256
+ },
12257
+ "ownerAuthority": {
12258
+ "proxyRefused": "Your browser reaches SynaBun through {name} (pid {pid}), a proxy or relay, so SynaBun can't tell it is you and refused this. Let the browser connect directly: add localhost and 127.0.0.1 to the proxy's bypass list (macOS: System Settings › Network › your network › Details › Proxies › Bypass proxy settings for these Hosts & Domains; or the list in the proxy app or browser extension), or turn the proxy off for SynaBun, then reload."
12259
+ },
12260
+ "toolList": {
12261
+ "label": "Tools and MCP servers",
12262
+ "defaultTools": "Default tools",
12263
+ "default": "Default",
12264
+ "templateDefault": "Template default",
12265
+ "noOverride": "No override",
12266
+ "all": "All SynaBun tools",
12267
+ "alwaysOn": "Always-on tools",
12268
+ "count": "{count} tools",
12269
+ "browser": "Browser and social",
12270
+ "workspace": "Workspace",
12271
+ "other": "Other",
12272
+ "addedBrowser": "Added for browser use",
12273
+ "addedDesign": "Added for design work",
12274
+ "focus": "Loads every SynaBun tool on demand.",
12275
+ "strict": "Loads the selected SynaBun groups.",
12276
+ "future": "Applies to future runtimes. Running sessions keep their own tools.",
12277
+ "servers": "Your other MCP servers",
12278
+ "agentAccess": "Agents may use it",
12279
+ "agentAccessHelp": "Applies to task workers and automations on Codex, OpenCode and Claude, including FleetView, plus the OpenCode tools picker. Other sessions you drive keep their servers.",
12280
+ "loadFailed": "Could not load the tool catalog. Try again.",
12281
+ "saveFailed": "Could not save the tool list. Try again.",
12282
+ "saved": "Default tools saved.",
12283
+ "reloadFailed": "OpenCode could not reload the requested tools.",
12284
+ "countOne": "{count} tool",
12285
+ "allServers": "All my servers",
12286
+ "noServers": "No external servers",
12287
+ "blockedServer": "Blocked by Agents may use it",
12288
+ "unavailableServer": "Unavailable on this provider",
12289
+ "configuredExternally": "Configured in provider"
12290
+ },
12291
+ "toolGroups": {
12292
+ "browser": {
12293
+ "label": "Browser",
12294
+ "purpose": "Open pages, click, type, read and screenshot in the SynaBun browser"
12295
+ },
12296
+ "browser_twitter": {
12297
+ "label": "Twitter/X",
12298
+ "purpose": "Read X posts and check the composer before publishing"
12299
+ },
12300
+ "browser_facebook": {
12301
+ "label": "Facebook",
12302
+ "purpose": "Read Facebook feeds and groups, check the composer and keep group posting checklists"
12303
+ },
12304
+ "browser_tiktok": {
12305
+ "label": "TikTok",
12306
+ "purpose": "Read TikTok videos, search results, Studio and profiles"
12307
+ },
12308
+ "browser_whatsapp": {
12309
+ "label": "WhatsApp",
12310
+ "purpose": "Read WhatsApp Web chats and messages"
12311
+ },
12312
+ "browser_instagram": {
12313
+ "label": "Instagram",
12314
+ "purpose": "Read Instagram feeds, profiles, posts, reels and search"
12315
+ },
12316
+ "browser_linkedin": {
12317
+ "label": "LinkedIn",
12318
+ "purpose": "Read LinkedIn feeds, profiles, posts, notifications, messages, people, network and jobs"
12319
+ },
12320
+ "browser_bluesky": {
12321
+ "label": "BlueSky",
12322
+ "purpose": "Read, publish, act and send DMs on BlueSky through the signed-in tab"
12323
+ },
12324
+ "gsc": {
12325
+ "label": "Google Search Console",
12326
+ "purpose": "Search Console in the browser: performance, indexing, reports and property settings"
12327
+ },
12328
+ "youtube": {
12329
+ "label": "YouTube",
12330
+ "purpose": "YouTube Studio in the browser: find and download trailers, upload, edit, schedule, playlists and analytics"
12331
+ },
12332
+ "discord": {
12333
+ "label": "Discord",
12334
+ "purpose": "Administer a Discord server and send messages through the bot"
12335
+ },
12336
+ "whiteboard": {
12337
+ "label": "Whiteboard",
12338
+ "purpose": "Draw on, read and screenshot the SynaBun whiteboard"
12339
+ },
12340
+ "card": {
12341
+ "label": "Cards",
12342
+ "purpose": "Open, update and screenshot memory cards"
12343
+ },
12344
+ "git": {
12345
+ "label": "Git",
12346
+ "purpose": "Git status, diffs, commits, history and branches"
12347
+ },
12348
+ "image": {
12349
+ "label": "Images",
12350
+ "purpose": "List or clear the images staged for this session"
12351
+ },
12352
+ "styleguide": {
12353
+ "label": "Style Guide",
12354
+ "purpose": "A project's brand, design tokens and DESIGN.md"
12355
+ },
12356
+ "morelogin": {
12357
+ "label": "MoreLogin",
12358
+ "purpose": "Manage MoreLogin anti-detect browser profiles and pick the browser the browser tools drive"
12359
+ },
12360
+ "tictactoe": {
12361
+ "label": "TicTacToe",
12362
+ "purpose": "Play TicTacToe on the board"
12363
+ }
12364
+ },
12365
+ "codexPanel": {
12366
+ "newSession": "New session",
12367
+ "savedSession": "Saved session",
12368
+ "fileChange": "File change",
12369
+ "filesUpdated": "File updates applied",
12370
+ "fileUpdates": "File updates",
12371
+ "message": "Message Codex…",
12372
+ "rename": "Rename session",
12373
+ "newTab": "New Codex tab",
12374
+ "minimize": "Minimize to pill",
12375
+ "closeTab": "Close current tab",
12376
+ "slide": "Slide panel",
12377
+ "project": "Project",
12378
+ "branch": "Branch",
12379
+ "recallProfile": "Recall profile",
12380
+ "changelog": "Generate changelog",
12381
+ "talk": "Hold to talk",
12382
+ "send": "Send",
12383
+ "attach": "Attach images",
12384
+ "usage": "Open Codex usage settings",
12385
+ "effort": "Reasoning effort",
12386
+ "planOff": "Plan mode: off",
12387
+ "autoOff": "Auto-accept: off",
12388
+ "contextDefault": "Context: provider default",
12389
+ "effortLabel": "Effort",
12390
+ "plan": "Plan",
12391
+ "auto": "Auto",
12392
+ "default": "Default",
12393
+ "quick": "Quick",
12394
+ "balanced": "Balanced",
12395
+ "deep": "Deep",
12396
+ "custom": "Custom",
12397
+ "status_pending": "pending",
12398
+ "status_completed": "completed",
12399
+ "status_complete": "complete",
12400
+ "status_inProgress": "in progress",
12401
+ "status_failed": "failed",
12402
+ "status_declined": "declined",
12403
+ "effort_minimal": "Minimal",
12404
+ "effort_low": "Low",
12405
+ "effort_medium": "Medium",
12406
+ "effort_high": "High",
12407
+ "effort_xhigh": "Extra high",
12408
+ "effort_max": "Max",
12409
+ "extended": "Extended",
12410
+ "reasoning": "Reasoning Summary",
12411
+ "working": "Working through the next step",
12412
+ "noReasoning": "No reasoning summary was provided.",
12413
+ "waitingReasoning": "Waiting for reasoning summary...",
12414
+ "filesChanged": "Files changed",
12415
+ "pendingFiles": "Pending file changes",
12416
+ "live": "live",
12417
+ "copyPatch": "Copy patch",
12418
+ "filesLimit": "Remaining files omitted: preview limited to 100 files.",
12419
+ "binary": "Binary file; text diff unavailable.",
12420
+ "oversized": "Oversized patch; rendering omitted (200,000 characters / 2,000 lines per file limit). Raw patch is copyable.",
12421
+ "patchMissing": "Patch not supplied or not a unified diff.",
12422
+ "fewerLines": "Show fewer lines",
12423
+ "fullDiff": "Show full diff ({count} lines)",
12424
+ "oneFileChange": "1 file change",
12425
+ "fileChanges": "{count} file changes",
12426
+ "diff_added": "added",
12427
+ "diff_deleted": "deleted",
12428
+ "diff_modified": "modified",
12429
+ "diff_renamed": "renamed"
8956
12430
  }
8957
12431
  }