synabun 2.0.5 → 2.0.9

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 (527) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +2 -1
  3. package/THIRD-PARTY-LICENSES.md +13 -0
  4. package/docs/whatsapp.md +151 -16
  5. package/hooks/claude-code/post-plan.mjs +6 -30
  6. package/hooks/claude-code/session-start.mjs +1 -4
  7. package/hooks/claude-code/shared.mjs +112 -75
  8. package/lib/child-path.js +303 -0
  9. package/lib/claude-hooks.js +2 -1
  10. package/lib/data-home-migration.js +2 -0
  11. package/lib/desktop-app.js +265 -0
  12. package/lib/external-tools.js +7 -3
  13. package/lib/log-redact.js +102 -0
  14. package/lib/package-processes.js +670 -0
  15. package/lib/packaged-runtime.js +138 -11
  16. package/lib/runtime-dependencies.js +225 -0
  17. package/mcp-server/dist/http.d.ts +3 -1
  18. package/mcp-server/dist/http.d.ts.map +1 -1
  19. package/mcp-server/dist/http.js +15 -4
  20. package/mcp-server/dist/http.js.map +1 -1
  21. package/mcp-server/dist/index.d.ts.map +1 -1
  22. package/mcp-server/dist/index.js +9 -6
  23. package/mcp-server/dist/index.js.map +1 -1
  24. package/mcp-server/dist/services/browser-bench.d.ts +1 -1
  25. package/mcp-server/dist/services/browser-bench.d.ts.map +1 -1
  26. package/mcp-server/dist/services/browser-bench.js +1 -1
  27. package/mcp-server/dist/services/browser-bench.js.map +1 -1
  28. package/mcp-server/dist/services/budget-judgments.d.ts +108 -0
  29. package/mcp-server/dist/services/budget-judgments.d.ts.map +1 -0
  30. package/mcp-server/dist/services/budget-judgments.js +153 -0
  31. package/mcp-server/dist/services/budget-judgments.js.map +1 -0
  32. package/mcp-server/dist/services/categories.d.ts +35 -2
  33. package/mcp-server/dist/services/categories.d.ts.map +1 -1
  34. package/mcp-server/dist/services/categories.js +77 -33
  35. package/mcp-server/dist/services/categories.js.map +1 -1
  36. package/mcp-server/dist/services/codex-config-heal.d.ts +5 -1
  37. package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
  38. package/mcp-server/dist/services/codex-config-heal.js +41 -4
  39. package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
  40. package/mcp-server/dist/services/desktop-bench.d.ts +7 -7
  41. package/mcp-server/dist/services/desktop-bench.d.ts.map +1 -1
  42. package/mcp-server/dist/services/desktop-bench.js +1 -1
  43. package/mcp-server/dist/services/desktop-bench.js.map +1 -1
  44. package/mcp-server/dist/services/identity.d.ts +11 -0
  45. package/mcp-server/dist/services/identity.d.ts.map +1 -1
  46. package/mcp-server/dist/services/identity.js +24 -0
  47. package/mcp-server/dist/services/identity.js.map +1 -1
  48. package/mcp-server/dist/services/neural-interface.d.ts +13 -0
  49. package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
  50. package/mcp-server/dist/services/neural-interface.js +34 -2
  51. package/mcp-server/dist/services/neural-interface.js.map +1 -1
  52. package/mcp-server/dist/services/typesafe-config.d.ts +1 -1
  53. package/mcp-server/dist/services/typesafe-config.d.ts.map +1 -1
  54. package/mcp-server/dist/services/typesafe-config.js +4 -1
  55. package/mcp-server/dist/services/typesafe-config.js.map +1 -1
  56. package/mcp-server/dist/tools/agents.d.ts +11 -8
  57. package/mcp-server/dist/tools/agents.d.ts.map +1 -1
  58. package/mcp-server/dist/tools/agents.js +35 -14
  59. package/mcp-server/dist/tools/agents.js.map +1 -1
  60. package/mcp-server/dist/tools/bluesky.js +1 -1
  61. package/mcp-server/dist/tools/bluesky.js.map +1 -1
  62. package/mcp-server/dist/tools/browser-advanced.d.ts +1 -1
  63. package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -1
  64. package/mcp-server/dist/tools/browser-advanced.js +1 -1
  65. package/mcp-server/dist/tools/browser-advanced.js.map +1 -1
  66. package/mcp-server/dist/tools/browser-batch.d.ts +1 -1
  67. package/mcp-server/dist/tools/browser-batch.d.ts.map +1 -1
  68. package/mcp-server/dist/tools/browser-batch.js +1 -1
  69. package/mcp-server/dist/tools/browser-batch.js.map +1 -1
  70. package/mcp-server/dist/tools/browser-cheatsheet.d.ts +1 -1
  71. package/mcp-server/dist/tools/browser-cheatsheet.d.ts.map +1 -1
  72. package/mcp-server/dist/tools/browser-cheatsheet.js +1 -1
  73. package/mcp-server/dist/tools/browser-cheatsheet.js.map +1 -1
  74. package/mcp-server/dist/tools/browser-interact.d.ts +1 -1
  75. package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -1
  76. package/mcp-server/dist/tools/browser-interact.js +1 -1
  77. package/mcp-server/dist/tools/browser-interact.js.map +1 -1
  78. package/mcp-server/dist/tools/browser-navigate.d.ts +1 -1
  79. package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -1
  80. package/mcp-server/dist/tools/browser-navigate.js +1 -1
  81. package/mcp-server/dist/tools/browser-navigate.js.map +1 -1
  82. package/mcp-server/dist/tools/browser-observe.d.ts +1 -1
  83. package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -1
  84. package/mcp-server/dist/tools/browser-observe.js +1 -1
  85. package/mcp-server/dist/tools/browser-observe.js.map +1 -1
  86. package/mcp-server/dist/tools/card-tools.d.ts +1 -1
  87. package/mcp-server/dist/tools/card-tools.d.ts.map +1 -1
  88. package/mcp-server/dist/tools/card-tools.js +1 -1
  89. package/mcp-server/dist/tools/card-tools.js.map +1 -1
  90. package/mcp-server/dist/tools/category.d.ts +1 -1
  91. package/mcp-server/dist/tools/category.d.ts.map +1 -1
  92. package/mcp-server/dist/tools/category.js +5 -1
  93. package/mcp-server/dist/tools/category.js.map +1 -1
  94. package/mcp-server/dist/tools/choice.d.ts +1 -1
  95. package/mcp-server/dist/tools/choice.d.ts.map +1 -1
  96. package/mcp-server/dist/tools/choice.js +1 -1
  97. package/mcp-server/dist/tools/choice.js.map +1 -1
  98. package/mcp-server/dist/tools/computer.d.ts +1 -1
  99. package/mcp-server/dist/tools/computer.d.ts.map +1 -1
  100. package/mcp-server/dist/tools/computer.js +1 -1
  101. package/mcp-server/dist/tools/computer.js.map +1 -1
  102. package/mcp-server/dist/tools/discord-channel.d.ts +1 -1
  103. package/mcp-server/dist/tools/discord-channel.d.ts.map +1 -1
  104. package/mcp-server/dist/tools/discord-channel.js +1 -1
  105. package/mcp-server/dist/tools/discord-channel.js.map +1 -1
  106. package/mcp-server/dist/tools/discord-guild.d.ts +1 -1
  107. package/mcp-server/dist/tools/discord-guild.d.ts.map +1 -1
  108. package/mcp-server/dist/tools/discord-guild.js +1 -1
  109. package/mcp-server/dist/tools/discord-guild.js.map +1 -1
  110. package/mcp-server/dist/tools/discord-member.d.ts +1 -1
  111. package/mcp-server/dist/tools/discord-member.d.ts.map +1 -1
  112. package/mcp-server/dist/tools/discord-member.js +1 -1
  113. package/mcp-server/dist/tools/discord-member.js.map +1 -1
  114. package/mcp-server/dist/tools/discord-message.d.ts +1 -1
  115. package/mcp-server/dist/tools/discord-message.d.ts.map +1 -1
  116. package/mcp-server/dist/tools/discord-message.js +1 -1
  117. package/mcp-server/dist/tools/discord-message.js.map +1 -1
  118. package/mcp-server/dist/tools/discord-onboarding.d.ts +1 -1
  119. package/mcp-server/dist/tools/discord-onboarding.d.ts.map +1 -1
  120. package/mcp-server/dist/tools/discord-onboarding.js +1 -1
  121. package/mcp-server/dist/tools/discord-onboarding.js.map +1 -1
  122. package/mcp-server/dist/tools/discord-role.d.ts +1 -1
  123. package/mcp-server/dist/tools/discord-role.d.ts.map +1 -1
  124. package/mcp-server/dist/tools/discord-role.js +1 -1
  125. package/mcp-server/dist/tools/discord-role.js.map +1 -1
  126. package/mcp-server/dist/tools/discord-thread.d.ts +1 -1
  127. package/mcp-server/dist/tools/discord-thread.d.ts.map +1 -1
  128. package/mcp-server/dist/tools/discord-thread.js +1 -1
  129. package/mcp-server/dist/tools/discord-thread.js.map +1 -1
  130. package/mcp-server/dist/tools/discord-webhook.d.ts +1 -1
  131. package/mcp-server/dist/tools/discord-webhook.d.ts.map +1 -1
  132. package/mcp-server/dist/tools/discord-webhook.js +1 -1
  133. package/mcp-server/dist/tools/discord-webhook.js.map +1 -1
  134. package/mcp-server/dist/tools/fb-groups.d.ts +1 -1
  135. package/mcp-server/dist/tools/fb-groups.d.ts.map +1 -1
  136. package/mcp-server/dist/tools/fb-groups.js +1 -1
  137. package/mcp-server/dist/tools/fb-groups.js.map +1 -1
  138. package/mcp-server/dist/tools/forget.d.ts +1 -1
  139. package/mcp-server/dist/tools/forget.d.ts.map +1 -1
  140. package/mcp-server/dist/tools/forget.js +1 -1
  141. package/mcp-server/dist/tools/forget.js.map +1 -1
  142. package/mcp-server/dist/tools/git-tools.d.ts +1 -1
  143. package/mcp-server/dist/tools/git-tools.d.ts.map +1 -1
  144. package/mcp-server/dist/tools/git-tools.js +1 -1
  145. package/mcp-server/dist/tools/git-tools.js.map +1 -1
  146. package/mcp-server/dist/tools/gsc/experience.d.ts +1 -1
  147. package/mcp-server/dist/tools/gsc/experience.d.ts.map +1 -1
  148. package/mcp-server/dist/tools/gsc/experience.js +1 -1
  149. package/mcp-server/dist/tools/gsc/experience.js.map +1 -1
  150. package/mcp-server/dist/tools/gsc/indexing.d.ts +1 -1
  151. package/mcp-server/dist/tools/gsc/indexing.d.ts.map +1 -1
  152. package/mcp-server/dist/tools/gsc/indexing.js +1 -1
  153. package/mcp-server/dist/tools/gsc/indexing.js.map +1 -1
  154. package/mcp-server/dist/tools/gsc/inspect.d.ts +1 -1
  155. package/mcp-server/dist/tools/gsc/inspect.d.ts.map +1 -1
  156. package/mcp-server/dist/tools/gsc/inspect.js +1 -1
  157. package/mcp-server/dist/tools/gsc/inspect.js.map +1 -1
  158. package/mcp-server/dist/tools/gsc/navigate.d.ts +1 -1
  159. package/mcp-server/dist/tools/gsc/navigate.d.ts.map +1 -1
  160. package/mcp-server/dist/tools/gsc/navigate.js +1 -1
  161. package/mcp-server/dist/tools/gsc/navigate.js.map +1 -1
  162. package/mcp-server/dist/tools/gsc/performance.d.ts +1 -1
  163. package/mcp-server/dist/tools/gsc/performance.d.ts.map +1 -1
  164. package/mcp-server/dist/tools/gsc/performance.js +1 -1
  165. package/mcp-server/dist/tools/gsc/performance.js.map +1 -1
  166. package/mcp-server/dist/tools/gsc/settings.d.ts +1 -1
  167. package/mcp-server/dist/tools/gsc/settings.d.ts.map +1 -1
  168. package/mcp-server/dist/tools/gsc/settings.js +1 -1
  169. package/mcp-server/dist/tools/gsc/settings.js.map +1 -1
  170. package/mcp-server/dist/tools/image-tools.d.ts +1 -1
  171. package/mcp-server/dist/tools/image-tools.d.ts.map +1 -1
  172. package/mcp-server/dist/tools/image-tools.js +1 -1
  173. package/mcp-server/dist/tools/image-tools.js.map +1 -1
  174. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +1 -1
  175. package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -1
  176. package/mcp-server/dist/tools/leonardo-browser-tools.js +1 -1
  177. package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -1
  178. package/mcp-server/dist/tools/loop.d.ts +1 -1
  179. package/mcp-server/dist/tools/loop.d.ts.map +1 -1
  180. package/mcp-server/dist/tools/loop.js +1 -1
  181. package/mcp-server/dist/tools/loop.js.map +1 -1
  182. package/mcp-server/dist/tools/memories.d.ts +1 -1
  183. package/mcp-server/dist/tools/memories.d.ts.map +1 -1
  184. package/mcp-server/dist/tools/memories.js +1 -1
  185. package/mcp-server/dist/tools/memories.js.map +1 -1
  186. package/mcp-server/dist/tools/morelogin.d.ts +1 -1
  187. package/mcp-server/dist/tools/morelogin.d.ts.map +1 -1
  188. package/mcp-server/dist/tools/morelogin.js +1 -1
  189. package/mcp-server/dist/tools/morelogin.js.map +1 -1
  190. package/mcp-server/dist/tools/profile.d.ts +1 -1
  191. package/mcp-server/dist/tools/profile.d.ts.map +1 -1
  192. package/mcp-server/dist/tools/profile.js +1 -1
  193. package/mcp-server/dist/tools/profile.js.map +1 -1
  194. package/mcp-server/dist/tools/recall.d.ts +1 -1
  195. package/mcp-server/dist/tools/recall.d.ts.map +1 -1
  196. package/mcp-server/dist/tools/recall.js +1 -1
  197. package/mcp-server/dist/tools/recall.js.map +1 -1
  198. package/mcp-server/dist/tools/reflect.d.ts +1 -1
  199. package/mcp-server/dist/tools/reflect.d.ts.map +1 -1
  200. package/mcp-server/dist/tools/reflect.js +1 -1
  201. package/mcp-server/dist/tools/reflect.js.map +1 -1
  202. package/mcp-server/dist/tools/remember.d.ts +1 -1
  203. package/mcp-server/dist/tools/remember.d.ts.map +1 -1
  204. package/mcp-server/dist/tools/remember.js +13 -11
  205. package/mcp-server/dist/tools/remember.js.map +1 -1
  206. package/mcp-server/dist/tools/restore.d.ts +1 -1
  207. package/mcp-server/dist/tools/restore.d.ts.map +1 -1
  208. package/mcp-server/dist/tools/restore.js +1 -1
  209. package/mcp-server/dist/tools/restore.js.map +1 -1
  210. package/mcp-server/dist/tools/style-guide-tools.d.ts +1 -1
  211. package/mcp-server/dist/tools/style-guide-tools.d.ts.map +1 -1
  212. package/mcp-server/dist/tools/style-guide-tools.js +1 -1
  213. package/mcp-server/dist/tools/style-guide-tools.js.map +1 -1
  214. package/mcp-server/dist/tools/sync.d.ts +1 -1
  215. package/mcp-server/dist/tools/sync.d.ts.map +1 -1
  216. package/mcp-server/dist/tools/sync.js +1 -1
  217. package/mcp-server/dist/tools/sync.js.map +1 -1
  218. package/mcp-server/dist/tools/tictactoe-tools.d.ts +1 -1
  219. package/mcp-server/dist/tools/tictactoe-tools.d.ts.map +1 -1
  220. package/mcp-server/dist/tools/tictactoe-tools.js +1 -1
  221. package/mcp-server/dist/tools/tictactoe-tools.js.map +1 -1
  222. package/mcp-server/dist/tools/utils.d.ts +1 -1
  223. package/mcp-server/dist/tools/utils.d.ts.map +1 -1
  224. package/mcp-server/dist/tools/utils.js +1 -1
  225. package/mcp-server/dist/tools/utils.js.map +1 -1
  226. package/mcp-server/dist/tools/whatsapp-send-file.d.ts +17 -0
  227. package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -0
  228. package/mcp-server/dist/tools/whatsapp-send-file.js +44 -0
  229. package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -0
  230. package/mcp-server/dist/tools/whiteboard-tools.d.ts +3 -3
  231. package/mcp-server/dist/tools/whiteboard-tools.d.ts.map +1 -1
  232. package/mcp-server/dist/tools/whiteboard-tools.js +1 -1
  233. package/mcp-server/dist/tools/whiteboard-tools.js.map +1 -1
  234. package/mcp-server/dist/tools/youtube/analytics.d.ts +1 -1
  235. package/mcp-server/dist/tools/youtube/analytics.d.ts.map +1 -1
  236. package/mcp-server/dist/tools/youtube/analytics.js +1 -1
  237. package/mcp-server/dist/tools/youtube/analytics.js.map +1 -1
  238. package/mcp-server/dist/tools/youtube/download.d.ts +1 -1
  239. package/mcp-server/dist/tools/youtube/download.d.ts.map +1 -1
  240. package/mcp-server/dist/tools/youtube/download.js +1 -1
  241. package/mcp-server/dist/tools/youtube/download.js.map +1 -1
  242. package/mcp-server/dist/tools/youtube/media.d.ts +1 -1
  243. package/mcp-server/dist/tools/youtube/media.d.ts.map +1 -1
  244. package/mcp-server/dist/tools/youtube/media.js +1 -1
  245. package/mcp-server/dist/tools/youtube/media.js.map +1 -1
  246. package/mcp-server/dist/tools/youtube/metadata.d.ts +1 -1
  247. package/mcp-server/dist/tools/youtube/metadata.d.ts.map +1 -1
  248. package/mcp-server/dist/tools/youtube/metadata.js +1 -1
  249. package/mcp-server/dist/tools/youtube/metadata.js.map +1 -1
  250. package/mcp-server/dist/tools/youtube/navigate.d.ts +1 -1
  251. package/mcp-server/dist/tools/youtube/navigate.d.ts.map +1 -1
  252. package/mcp-server/dist/tools/youtube/navigate.js +1 -1
  253. package/mcp-server/dist/tools/youtube/navigate.js.map +1 -1
  254. package/mcp-server/dist/tools/youtube/playlist.d.ts +1 -1
  255. package/mcp-server/dist/tools/youtube/playlist.d.ts.map +1 -1
  256. package/mcp-server/dist/tools/youtube/playlist.js +1 -1
  257. package/mcp-server/dist/tools/youtube/playlist.js.map +1 -1
  258. package/mcp-server/dist/tools/youtube/schedule.d.ts +1 -1
  259. package/mcp-server/dist/tools/youtube/schedule.d.ts.map +1 -1
  260. package/mcp-server/dist/tools/youtube/schedule.js +1 -1
  261. package/mcp-server/dist/tools/youtube/schedule.js.map +1 -1
  262. package/mcp-server/dist/tools/youtube/source.d.ts +1 -1
  263. package/mcp-server/dist/tools/youtube/source.d.ts.map +1 -1
  264. package/mcp-server/dist/tools/youtube/source.js +1 -1
  265. package/mcp-server/dist/tools/youtube/source.js.map +1 -1
  266. package/mcp-server/dist/tools/youtube/upload.d.ts +1 -1
  267. package/mcp-server/dist/tools/youtube/upload.d.ts.map +1 -1
  268. package/mcp-server/dist/tools/youtube/upload.js +4 -9
  269. package/mcp-server/dist/tools/youtube/upload.js.map +1 -1
  270. package/mcp-server/dist/tui.js +18 -5
  271. package/mcp-server/dist/tui.js.map +1 -1
  272. package/mcp-server/dist/version.d.ts +5 -0
  273. package/mcp-server/dist/version.d.ts.map +1 -0
  274. package/mcp-server/dist/version.js +21 -0
  275. package/mcp-server/dist/version.js.map +1 -0
  276. package/mcp-server/package-lock.json +3 -3
  277. package/mcp-server/package.json +3 -3
  278. package/mcp-server/run.mjs +15 -9
  279. package/mcp-server/src/http.ts +18 -3
  280. package/mcp-server/src/index.ts +9 -6
  281. package/mcp-server/src/services/browser-bench.ts +1 -1
  282. package/mcp-server/src/services/budget-judgments.ts +183 -0
  283. package/mcp-server/src/services/categories.ts +77 -32
  284. package/mcp-server/src/services/codex-config-heal.ts +35 -4
  285. package/mcp-server/src/services/desktop-bench.ts +1 -1
  286. package/mcp-server/src/services/identity.ts +27 -0
  287. package/mcp-server/src/services/neural-interface.ts +34 -2
  288. package/mcp-server/src/services/typesafe-config.ts +4 -1
  289. package/mcp-server/src/tools/agents.ts +34 -15
  290. package/mcp-server/src/tools/bluesky.ts +1 -1
  291. package/mcp-server/src/tools/browser-advanced.ts +1 -1
  292. package/mcp-server/src/tools/browser-batch.ts +1 -1
  293. package/mcp-server/src/tools/browser-cheatsheet.ts +1 -1
  294. package/mcp-server/src/tools/browser-interact.ts +1 -1
  295. package/mcp-server/src/tools/browser-navigate.ts +1 -1
  296. package/mcp-server/src/tools/browser-observe.ts +1 -1
  297. package/mcp-server/src/tools/card-tools.ts +1 -1
  298. package/mcp-server/src/tools/category.ts +6 -1
  299. package/mcp-server/src/tools/choice.ts +1 -1
  300. package/mcp-server/src/tools/computer.ts +1 -1
  301. package/mcp-server/src/tools/discord-channel.ts +1 -1
  302. package/mcp-server/src/tools/discord-guild.ts +1 -1
  303. package/mcp-server/src/tools/discord-member.ts +1 -1
  304. package/mcp-server/src/tools/discord-message.ts +1 -1
  305. package/mcp-server/src/tools/discord-onboarding.ts +1 -1
  306. package/mcp-server/src/tools/discord-role.ts +1 -1
  307. package/mcp-server/src/tools/discord-thread.ts +1 -1
  308. package/mcp-server/src/tools/discord-webhook.ts +1 -1
  309. package/mcp-server/src/tools/fb-groups.ts +1 -1
  310. package/mcp-server/src/tools/forget.ts +1 -1
  311. package/mcp-server/src/tools/git-tools.ts +1 -1
  312. package/mcp-server/src/tools/gsc/experience.ts +1 -1
  313. package/mcp-server/src/tools/gsc/indexing.ts +1 -1
  314. package/mcp-server/src/tools/gsc/inspect.ts +1 -1
  315. package/mcp-server/src/tools/gsc/navigate.ts +1 -1
  316. package/mcp-server/src/tools/gsc/performance.ts +1 -1
  317. package/mcp-server/src/tools/gsc/settings.ts +1 -1
  318. package/mcp-server/src/tools/image-tools.ts +1 -1
  319. package/mcp-server/src/tools/leonardo-browser-tools.ts +1 -1
  320. package/mcp-server/src/tools/loop.ts +1 -1
  321. package/mcp-server/src/tools/memories.ts +1 -1
  322. package/mcp-server/src/tools/morelogin.ts +1 -1
  323. package/mcp-server/src/tools/profile.ts +1 -1
  324. package/mcp-server/src/tools/recall.ts +1 -1
  325. package/mcp-server/src/tools/reflect.ts +1 -1
  326. package/mcp-server/src/tools/remember.ts +13 -12
  327. package/mcp-server/src/tools/restore.ts +1 -1
  328. package/mcp-server/src/tools/style-guide-tools.ts +1 -1
  329. package/mcp-server/src/tools/sync.ts +1 -1
  330. package/mcp-server/src/tools/tictactoe-tools.ts +1 -1
  331. package/mcp-server/src/tools/utils.ts +1 -1
  332. package/mcp-server/src/tools/whatsapp-send-file.ts +51 -0
  333. package/mcp-server/src/tools/whiteboard-tools.ts +1 -1
  334. package/mcp-server/src/tools/youtube/analytics.ts +1 -1
  335. package/mcp-server/src/tools/youtube/download.ts +1 -1
  336. package/mcp-server/src/tools/youtube/media.ts +1 -1
  337. package/mcp-server/src/tools/youtube/metadata.ts +1 -1
  338. package/mcp-server/src/tools/youtube/navigate.ts +1 -1
  339. package/mcp-server/src/tools/youtube/playlist.ts +1 -1
  340. package/mcp-server/src/tools/youtube/schedule.ts +1 -1
  341. package/mcp-server/src/tools/youtube/source.ts +1 -1
  342. package/mcp-server/src/tools/youtube/upload.ts +4 -12
  343. package/mcp-server/src/tui.ts +24 -10
  344. package/mcp-server/src/version.ts +22 -0
  345. package/neural-interface/i18n/en.json +645 -57
  346. package/neural-interface/i18n/pt-BR.json +644 -56
  347. package/neural-interface/lib/account-usage.js +163 -0
  348. package/neural-interface/lib/agent-sandbox-elevation.js +102 -0
  349. package/neural-interface/lib/agent-sandbox-setting.js +57 -0
  350. package/neural-interface/lib/assistant-api.js +274 -52
  351. package/neural-interface/lib/assistant-brains/claude.js +15 -2
  352. package/neural-interface/lib/assistant-brains/codex.js +3 -0
  353. package/neural-interface/lib/assistant-brains/opencode.js +17 -4
  354. package/neural-interface/lib/assistant-budget-planner.js +390 -0
  355. package/neural-interface/lib/assistant-budget-split.js +408 -0
  356. package/neural-interface/lib/assistant-budget.js +94 -95
  357. package/neural-interface/lib/assistant-config.js +62 -14
  358. package/neural-interface/lib/assistant-dispatch.js +432 -125
  359. package/neural-interface/lib/assistant-jev.js +26 -3
  360. package/neural-interface/lib/assistant-persona.js +68 -11
  361. package/neural-interface/lib/assistant-plan-permissions.js +8 -1
  362. package/neural-interface/lib/assistant-route-accounts.js +14 -0
  363. package/neural-interface/lib/assistant-route-gate-codex.js +3 -1
  364. package/neural-interface/lib/assistant-route-gate.js +19 -3
  365. package/neural-interface/lib/assistant-router.js +373 -42
  366. package/neural-interface/lib/assistant-runtime.js +312 -48
  367. package/neural-interface/lib/assistant-user-writer.js +4 -2
  368. package/neural-interface/lib/augmented-path.js +317 -53
  369. package/neural-interface/lib/claude-accounts.js +342 -31
  370. package/neural-interface/lib/claude-agent-bridge.js +90 -3
  371. package/neural-interface/lib/claude-executable.js +6 -1
  372. package/neural-interface/lib/claude-model-catalog.js +3 -3
  373. package/neural-interface/lib/claude-panel-auth.js +221 -0
  374. package/neural-interface/lib/claude-profile-api-key.js +62 -0
  375. package/neural-interface/lib/cli-install-api.js +137 -0
  376. package/neural-interface/lib/cli-install.js +797 -0
  377. package/neural-interface/lib/cli-path.js +130 -0
  378. package/neural-interface/lib/cli-resolver.js +744 -0
  379. package/neural-interface/lib/cli-update-planner.js +143 -7
  380. package/neural-interface/lib/codex-account-auth.js +180 -0
  381. package/neural-interface/lib/codex-accounts.js +502 -0
  382. package/neural-interface/lib/codex-capabilities.js +2 -1
  383. package/neural-interface/lib/codex-compat-rpc.js +8 -2
  384. package/neural-interface/lib/codex-mcp-approvals.js +5 -1
  385. package/neural-interface/lib/codex-panel-auth.js +62 -0
  386. package/neural-interface/lib/codex-session-settings.js +1 -1
  387. package/neural-interface/lib/codex-settings-schema.js +122 -0
  388. package/neural-interface/lib/desktop/config.js +3 -0
  389. package/neural-interface/lib/exec-loop-command.js +3 -1
  390. package/neural-interface/lib/git-bash/bzip2.js +339 -0
  391. package/neural-interface/lib/git-bash/claude-settings.js +73 -0
  392. package/neural-interface/lib/git-bash/extract-worker.js +34 -0
  393. package/neural-interface/lib/git-bash/install.js +529 -0
  394. package/neural-interface/lib/git-bash/licenses/COPYING +360 -0
  395. package/neural-interface/lib/git-bash/licenses/LGPL-2.1 +511 -0
  396. package/neural-interface/lib/git-bash/manager.js +268 -0
  397. package/neural-interface/lib/git-bash/pins.js +206 -0
  398. package/neural-interface/lib/git-bash/pins.json +34 -0
  399. package/neural-interface/lib/git-bash/resolver.js +194 -0
  400. package/neural-interface/lib/git-read.js +34 -2
  401. package/neural-interface/lib/install-details.js +163 -0
  402. package/neural-interface/lib/mcp-installer.js +14 -2
  403. package/neural-interface/lib/native-loop-providers.js +22 -4
  404. package/neural-interface/lib/native-loop-runtime.js +9 -4
  405. package/neural-interface/lib/os-path.js +319 -0
  406. package/neural-interface/lib/provider-panel-api-key-auth.js +92 -0
  407. package/neural-interface/lib/provider-panel-terminal-auth.js +96 -0
  408. package/neural-interface/lib/pty-host/core.js +2 -1
  409. package/neural-interface/lib/pty-host/manager.js +27 -2
  410. package/neural-interface/lib/remote-policy.js +20 -11
  411. package/neural-interface/lib/session-indexer.js +3 -1
  412. package/neural-interface/lib/session-title-generator.js +6 -3
  413. package/neural-interface/lib/system-about.js +340 -0
  414. package/neural-interface/lib/system-activity.js +66 -0
  415. package/neural-interface/lib/terminal-env.js +11 -3
  416. package/neural-interface/lib/terminal-path.js +55 -0
  417. package/neural-interface/lib/virtual-socket.js +12 -1
  418. package/neural-interface/lib/whatsapp/baileys-adapter.js +165 -45
  419. package/neural-interface/lib/whatsapp/bridge.js +78 -34
  420. package/neural-interface/lib/whatsapp/commands.js +13 -14
  421. package/neural-interface/lib/whatsapp/config.js +134 -20
  422. package/neural-interface/lib/whatsapp/fake-baileys.js +99 -14
  423. package/neural-interface/lib/whatsapp/host-core.js +168 -35
  424. package/neural-interface/lib/whatsapp/inbound.js +5 -3
  425. package/neural-interface/lib/whatsapp/local-file.js +524 -0
  426. package/neural-interface/lib/whatsapp/manager.js +92 -32
  427. package/neural-interface/lib/whatsapp/paths.js +11 -1
  428. package/neural-interface/lib/whatsapp/protocol.js +65 -5
  429. package/neural-interface/lib/whatsapp/redact.js +63 -0
  430. package/neural-interface/lib/whatsapp/service.js +343 -91
  431. package/neural-interface/lib/whatsapp/transcription.js +463 -0
  432. package/neural-interface/package-lock.json +2 -2
  433. package/neural-interface/package.json +1 -1
  434. package/neural-interface/public/index.html +2 -0
  435. package/neural-interface/public/index2d.html +2 -0
  436. package/neural-interface/public/offline.html +16 -1
  437. package/neural-interface/public/onboarding.html +96 -2
  438. package/neural-interface/public/shared/account-i18n.js +7 -0
  439. package/neural-interface/public/shared/account-menu.js +542 -0
  440. package/neural-interface/public/shared/account-usage.js +79 -0
  441. package/neural-interface/public/shared/account-view.js +336 -0
  442. package/neural-interface/public/shared/agent-runtime-options.js +28 -8
  443. package/neural-interface/public/shared/assistant/asst-account-menu.js +298 -0
  444. package/neural-interface/public/shared/assistant/asst-accounts.js +182 -184
  445. package/neural-interface/public/shared/assistant/asst-api.js +39 -2
  446. package/neural-interface/public/shared/assistant/asst-brain-picker.js +288 -32
  447. package/neural-interface/public/shared/assistant/asst-budget.js +259 -303
  448. package/neural-interface/public/shared/assistant/asst-mascot.js +126 -7
  449. package/neural-interface/public/shared/assistant/asst-menu.js +219 -80
  450. package/neural-interface/public/shared/assistant/asst-model-chip.js +135 -0
  451. package/neural-interface/public/shared/assistant/asst-panel.js +87 -16
  452. package/neural-interface/public/shared/assistant/asst-render.js +38 -7
  453. package/neural-interface/public/shared/assistant/asst-route.js +72 -14
  454. package/neural-interface/public/shared/assistant/asst-routes-editor.js +45 -6
  455. package/neural-interface/public/shared/assistant/asst-slash.js +1 -1
  456. package/neural-interface/public/shared/assistant/asst-state.js +1 -1
  457. package/neural-interface/public/shared/assistant/asst-styles.js +160 -29
  458. package/neural-interface/public/shared/cdx/cdx-commands.js +4 -1
  459. package/neural-interface/public/shared/cdx/cdx-features.js +22 -14
  460. package/neural-interface/public/shared/cdx/cdx-icons.js +2 -0
  461. package/neural-interface/public/shared/cdx/cdx-panel.js +49 -108
  462. package/neural-interface/public/shared/cdx/cdx-settings.js +231 -0
  463. package/neural-interface/public/shared/cdx/cdx-styles.js +172 -111
  464. package/neural-interface/public/shared/cdx/cdx-tabs.js +264 -664
  465. package/neural-interface/public/shared/cdx/cdx-ws.js +2 -0
  466. package/neural-interface/public/shared/claude-account-view.js +3 -0
  467. package/neural-interface/public/shared/cli-install-view.js +392 -0
  468. package/neural-interface/public/shared/cli-status.js +282 -22
  469. package/neural-interface/public/shared/cp/cp-events.js +2 -1
  470. package/neural-interface/public/shared/cp/cp-styles.js +46 -0
  471. package/neural-interface/public/shared/desktop-bridge.js +39 -0
  472. package/neural-interface/public/shared/desktop-titlebar-page.js +59 -0
  473. package/neural-interface/public/shared/desktop-titlebar-view.js +122 -0
  474. package/neural-interface/public/shared/desktop-titlebar.js +153 -0
  475. package/neural-interface/public/shared/desktop-update-view.js +462 -0
  476. package/neural-interface/public/shared/editor/editor-panel.js +1 -1
  477. package/neural-interface/public/shared/explorer/fx-main.js +1 -1
  478. package/neural-interface/public/shared/git-bash-view.js +145 -0
  479. package/neural-interface/public/shared/html-shell.js +1 -0
  480. package/neural-interface/public/shared/i18n.js +19 -1
  481. package/neural-interface/public/shared/install-details-view.js +86 -0
  482. package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -1
  483. package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +36 -1
  484. package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +17 -0
  485. package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +169 -2
  486. package/neural-interface/public/shared/pwa-install-page.js +3 -1
  487. package/neural-interface/public/shared/settings/settings-about-pane.js +271 -0
  488. package/neural-interface/public/shared/settings/settings-about.js +254 -0
  489. package/neural-interface/public/shared/settings/settings-ia.js +15 -0
  490. package/neural-interface/public/shared/showcase-privacy.js +490 -0
  491. package/neural-interface/public/shared/storage.js +30 -3
  492. package/neural-interface/public/shared/styles.css +281 -32
  493. package/neural-interface/public/shared/synabun-mascot.js +48 -2
  494. package/neural-interface/public/shared/ui-claude-panel.js +262 -217
  495. package/neural-interface/public/shared/ui-cli-banner.js +355 -0
  496. package/neural-interface/public/shared/ui-explorer.js +2 -0
  497. package/neural-interface/public/shared/ui-git-bash.js +124 -0
  498. package/neural-interface/public/shared/ui-judgments.js +10 -1
  499. package/neural-interface/public/shared/ui-loading.js +30 -6
  500. package/neural-interface/public/shared/ui-menubar.js +13 -3
  501. package/neural-interface/public/shared/ui-navbar.js +3 -1
  502. package/neural-interface/public/shared/ui-provider-auth.js +104 -0
  503. package/neural-interface/public/shared/ui-provider-terminal-auth.js +223 -0
  504. package/neural-interface/public/shared/ui-sessions.js +9 -3
  505. package/neural-interface/public/shared/ui-settings.js +55 -3
  506. package/neural-interface/public/shared/ui-sidepanel-sessions.js +3 -1
  507. package/neural-interface/public/shared/ui-sync.js +8 -0
  508. package/neural-interface/public/shared/ui-terminal.js +17 -0
  509. package/neural-interface/public/shared/ui-tool-updates.js +5 -0
  510. package/neural-interface/public/shared/ui-update.js +598 -7
  511. package/neural-interface/public/shared/ui-whatsapp.js +21 -6
  512. package/neural-interface/public/shared/whatsapp/wa-view.js +51 -8
  513. package/neural-interface/public/shared/worker-end.js +2 -0
  514. package/neural-interface/public/sw.js +1 -1
  515. package/neural-interface/public/variant/2d/main.js +10 -1
  516. package/neural-interface/public/variant/3d/main.js +10 -1
  517. package/neural-interface/scripts/rebuild-pty.js +14 -2
  518. package/neural-interface/server.js +1384 -679
  519. package/npm-shrinkwrap.json +4424 -0
  520. package/package.json +57 -2
  521. package/postinstall.js +61 -47
  522. package/preuninstall.js +8 -35
  523. package/setup.js +80 -47
  524. package/skills/synabun/modules/idea.md +1 -1
  525. package/skills/synabun/modules/schedule.md +1 -1
  526. package/updater.cmd +2 -2
  527. package/updater.mjs +97 -3
@@ -685,6 +685,7 @@
685
685
  "reasonAssistantSaid": "Stopped by the Assistant: {reason}",
686
686
  "reasonTimeCap": "The run reached its time limit.",
687
687
  "reasonBudget": "The run reached its budget limit.",
688
+ "reasonBudgetShare": "This provider used up its share of the session budget.",
688
689
  "reasonMaxTurns": "The run reached its turn limit.",
689
690
  "reasonIdle": "The worker waited for a follow-up that did not come, and closed.",
690
691
  "reasonRestart": "The server restarted while the run was open.",
@@ -1369,7 +1370,8 @@
1369
1370
  "memory_data": "Memory & data",
1370
1371
  "tools": "Tools",
1371
1372
  "automations": "Automations",
1372
- "personalize": "Personalize"
1373
+ "personalize": "Personalize",
1374
+ "app": "SynaBun"
1373
1375
  },
1374
1376
  "nav": {
1375
1377
  "ai_connections": {
@@ -1419,6 +1421,10 @@
1419
1421
  "code_editor": {
1420
1422
  "label": "Code editor",
1421
1423
  "help": "Editing preferences and AI autocomplete"
1424
+ },
1425
+ "about": {
1426
+ "label": "About",
1427
+ "help": "Version, links and licenses"
1422
1428
  }
1423
1429
  },
1424
1430
  "page": {
@@ -1469,6 +1475,10 @@
1469
1475
  "code_editor": {
1470
1476
  "title": "Code editor",
1471
1477
  "purpose": "Set up the editor that opens files from the File Explorer: how text is shown, indented and saved, and AI autocomplete."
1478
+ },
1479
+ "about": {
1480
+ "title": "About",
1481
+ "purpose": "The version you run, what it runs on, and the open-source software SynaBun is built with."
1472
1482
  }
1473
1483
  },
1474
1484
  "section": {
@@ -1795,6 +1805,20 @@
1795
1805
  "title": "Editing",
1796
1806
  "purpose": "How the editor shows text, indents it and saves it. The View menu in the editor changes the same settings."
1797
1807
  }
1808
+ },
1809
+ "about": {
1810
+ "links": {
1811
+ "title": "Links",
1812
+ "purpose": "The project's pages. They open in your browser."
1813
+ },
1814
+ "system": {
1815
+ "title": "System",
1816
+ "purpose": "What this copy of SynaBun runs on. Copy info puts these details on the clipboard."
1817
+ },
1818
+ "dependencies": {
1819
+ "title": "Dependencies",
1820
+ "purpose": "Every package SynaBun ships with, the version installed here and its license."
1821
+ }
1798
1822
  }
1799
1823
  },
1800
1824
  "common": {
@@ -3443,6 +3467,18 @@
3443
3467
  "edt023": {
3444
3468
  "label": "End files with one newline on save",
3445
3469
  "help": "When a file is saved, a missing final line break is added and empty lines after the last line of text are removed."
3470
+ },
3471
+ "abt001": {
3472
+ "label": "Check for updates",
3473
+ "help": "Looks for a newer version of SynaBun and of the coding tools: the same check as Check for updates in the Apps menu."
3474
+ },
3475
+ "abt002": {
3476
+ "label": "Copy info",
3477
+ "help": "Copies the version, install, runtime, system and dependency versions as plain text, for a bug report. No paths, keys or settings."
3478
+ },
3479
+ "abt003": {
3480
+ "label": "Filter dependencies",
3481
+ "help": "Shows only the packages whose name contains what you type."
3446
3482
  }
3447
3483
  },
3448
3484
  "pane": {
@@ -4551,6 +4587,7 @@
4551
4587
  "allCustomIconsReset": "All custom icons reset"
4552
4588
  },
4553
4589
  "judgments": {
4590
+ "budgetShareScore": "{provider}: share score {score} \u00b7 confidence {confidence}",
4554
4591
  "showEveryJudgmentAboutThisMemory": ": show every judgment about this memory in the log",
4555
4592
  "checkingTypesafe": "Checking TypeSafe…",
4556
4593
  "learnMoreAtTypesafe": "Learn more at",
@@ -5058,6 +5095,8 @@
5058
5095
  "longerAnswersAreCutThereWith": "Longer answers are cut there with a note; the full answer stays in SynaBun.",
5059
5096
  "freshConversation": "Fresh conversation",
5060
5097
  "inMessageYourself": "In \"Message yourself\"",
5098
+ "transcribeVoiceNotes": "Transcribe voice notes",
5099
+ "voiceNotesAreTurnedIntoText": "Turned into text on this computer by whisper.cpp and FFmpeg, which you install yourself; nothing goes to a transcription service. The text then reaches the Assistant like a typed message, and approvals still take a typed yes.",
5061
5100
  "commandsYouCanSend": "Commands you can send",
5062
5101
  "answerAQuestionOrAnApproval": "When SynaBun asks something, answer in your own words. An approval takes a plain yes or no; any other message approves nothing and carries the conversation on.",
5063
5102
  "whatSynabunMayDoFromWhatsapp": "What SynaBun may do from WhatsApp",
@@ -5086,7 +5125,7 @@
5086
5125
  "nowOnYourPhone": "Now on your phone:",
5087
5126
  "send": "send",
5088
5127
  "inTheWhatsappChatWithSynabun": "in the WhatsApp chat with SynaBun within",
5089
- "autonomousThenRunsFor8Hours": ". Autonomous then runs for 8 hours.",
5128
+ "autonomousUntilTurnedOff": ". Autonomous then stays on until you turn it off.",
5090
5129
  "noLog": "No log.",
5091
5130
  "theInstallLogIsEmpty": "The install log is empty.",
5092
5131
  "cancel": "Cancel",
@@ -5175,7 +5214,6 @@
5175
5214
  "tries": "tries",
5176
5215
  "previewSample": "{label}Here is what I found…",
5177
5216
  "ownerSince": "· since {date}",
5178
- "levelUntil": "until {time}",
5179
5217
  "errorCode": "Code: {code}",
5180
5218
  "sessionCurrent": "Current: {title}",
5181
5219
  "levelPaused": "· paused",
@@ -5232,7 +5270,7 @@
5232
5270
  },
5233
5271
  "autonomous": {
5234
5272
  "title": "Autonomous",
5235
- "body": "SynaBun acts without asking, like the Assistant on this computer. Turning it on takes a second click here and an ALLOW code sent from your phone within 5 minutes. It turns back to Ask after 8 hours. Autonomous can read any file your computer account can, including SynaBun's WhatsApp login. Use it only with a locked phone, ideally on a second number."
5273
+ "body": "SynaBun acts without asking, like the Assistant on this computer. Turning it on takes a second click here and an ALLOW code sent from your phone within 5 minutes. It stays on until you turn it off. Autonomous can read any file your computer account can, including SynaBun's WhatsApp login. Use it only with a locked phone, ideally on a second number."
5236
5274
  }
5237
5275
  },
5238
5276
  "progress": {
@@ -5278,7 +5316,7 @@
5278
5316
  },
5279
5317
  "prefix": {
5280
5318
  "label": "Only messages that start with sb",
5281
- "hint": "Keep using \"Message yourself\" for notes; start a message with sb (or sb:) to talk to SynaBun. Commands like /stop, the ALLOW code and replies to SynaBun's own messages always reach it."
5319
+ "hint": "Keep using \"Message yourself\" for notes; start a message with sb (or sb:) to talk to SynaBun, or say \"sb\" first in a voice note. Commands like /stop, the ALLOW code and replies to SynaBun's own messages always reach it."
5282
5320
  }
5283
5321
  },
5284
5322
  "commands": {
@@ -5308,12 +5346,13 @@
5308
5346
  }
5309
5347
  },
5310
5348
  "limits": {
5311
- "0": "Text and pictures (up to 4 per message, 5 MB each). Voice notes, videos, documents and stickers are not read yet.",
5349
+ "0": "Text and pictures (up to 4 per message, 5 MB each), and voice notes transcribed on this computer (up to 10 minutes and 20 MB each). Videos, documents and stickers are not read yet.",
5312
5350
  "1": "At most 20 messages a minute and 300 a day; 5 messages can wait in line while SynaBun works.",
5313
5351
  "2": "Messages older than 10 minutes when SynaBun comes back online are skipped (it tells you how many).",
5314
5352
  "3": "Answers are split into messages of 3,500 characters; the rest stays in SynaBun.",
5315
5353
  "4": "Computer use from WhatsApp is off until you turn it on above. Then: never at Read-only or while paused, after one yes per task at Ask on my phone, and without asking while Autonomous is active. Agents started from WhatsApp never get it.",
5316
- "5": "Levels, models and settings change only here, never from the phone."
5354
+ "5": "Levels, models and settings change only here, never from the phone.",
5355
+ "6": "A voice note is an ordinary message: it never approves anything and never runs a command. Approvals take a typed yes."
5317
5356
  },
5318
5357
  "privacyStays": {
5319
5358
  "session": {
@@ -5380,7 +5419,8 @@
5380
5419
  "3": "In \"Message yourself\", only messages typed on the phone reach SynaBun. Messages typed into that chat from WhatsApp Web or Desktop are ignored.",
5381
5420
  "4": "With \"Only messages that start with sb\", a note without sb never reaches SynaBun and is not logged; commands, the ALLOW code and replies to SynaBun's messages always get through.",
5382
5421
  "5": "The QR code expires after about a minute. Press \"Show a new code\" and scan faster, or link with your phone number instead.",
5383
- "6": "Stuck on \"Reconnecting\"? Check this computer's internet connection, then press Reconnect now."
5422
+ "6": "Stuck on \"Reconnecting\"? Check this computer's internet connection, then press Reconnect now.",
5423
+ "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."
5384
5424
  },
5385
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.",
5386
5426
  "uninstall": "Uninstalling SynaBun does not unlink WhatsApp. Use Unlink or Remove here first, or log SynaBun out under WhatsApp → Settings → Linked devices."
@@ -5405,7 +5445,7 @@
5405
5445
  "UNKNOWN": "Something unexpected happened. The install log has the details."
5406
5446
  },
5407
5447
  "error": {
5408
- "HOST_HELD": "The WhatsApp connector kept crashing, so SynaBun stopped it. Reconnect to try again; the install log may help.",
5448
+ "HOST_HELD": "The WhatsApp connector does not match this SynaBun version (it was updated while SynaBun ran), so SynaBun stopped it. Restart SynaBun to load the matching one.",
5409
5449
  "HOST_UNAVAILABLE": "The WhatsApp connector did not start.",
5410
5450
  "REPLACED": "Another copy of this WhatsApp link connected from somewhere else and took over. Reconnect here to take it back.",
5411
5451
  "LOCKED": "Another SynaBun is using the WhatsApp session files. Close it, then reconnect.",
@@ -5431,8 +5471,16 @@
5431
5471
  "banned": {
5432
5472
  "title": "WhatsApp refused this account",
5433
5473
  "sub": "WhatsApp blocked the account from linking devices, possibly a temporary or permanent ban. Check the WhatsApp app on the phone."
5474
+ },
5475
+ "invalid_session": {
5476
+ "title": "The saved WhatsApp session is invalid",
5477
+ "sub": "WhatsApp rejected this device session (badSession). Link again to pair it; automatic retries cannot repair the credentials."
5434
5478
  }
5435
5479
  },
5480
+ "warning": {
5481
+ "replaced": "Another copy is using this WhatsApp session. SynaBun retries every 5 minutes; close the other copy or unlink and link again.",
5482
+ "forbidden": "WhatsApp refused this account; it may be restricted or banned. SynaBun retries every 5 minutes; check WhatsApp on the phone."
5483
+ },
5436
5484
  "activity": {
5437
5485
  "inbound": "Received",
5438
5486
  "reply": "Sent",
@@ -5458,6 +5506,18 @@
5458
5506
  "effortDefault": "Default effort",
5459
5507
  "saved": "WhatsApp model saved. It applies from your next message."
5460
5508
  },
5509
+ "voice": {
5510
+ "ready": "Voice notes are transcribed on this computer.",
5511
+ "readyOff": "Voice notes can be transcribed on this computer; turned off.",
5512
+ "notSetUp": "Voice notes: not set up — missing {missing}.",
5513
+ "partInvalid": "{name}: the path set for it does not work",
5514
+ "part": {
5515
+ "engine": "whisper.cpp (whisper-cli)",
5516
+ "model": "the speech model (ggml-small.bin)",
5517
+ "ffmpeg": "FFmpeg",
5518
+ "tools": "the transcription tools"
5519
+ }
5520
+ },
5461
5521
  "phoneError": {
5462
5522
  "NEEDS_COUNTRY_CODE": "Add your country code first, for example +44 for the UK or +1 for the US.",
5463
5523
  "INVALID_CHARS": "Use digits only; spaces, dashes and brackets are fine.",
@@ -5540,7 +5600,6 @@
5540
5600
  "title": "Is this your WhatsApp?"
5541
5601
  },
5542
5602
  "connected": {
5543
- "until": "until {time}",
5544
5603
  "readOnlyBrain": "Read-only ({brain} brain)",
5545
5604
  "title": "Connected"
5546
5605
  },
@@ -5669,7 +5728,8 @@
5669
5728
  "messages": "whatsapp, discord, phone, chat, bot, messaging",
5670
5729
  "notifications": "alerts, sound, volume, banner, toast, mute, desktop notification",
5671
5730
  "appearance": "theme, dark mode, skin, color, font, text size, language, locale, icons, zoom, look",
5672
- "code_editor": "editor, code, font, text size, word wrap, minimap, whitespace, indentation, tabs, autocomplete, completion, suggestions, copilot, ghost text, inline, ai, model, ollama, file"
5731
+ "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"
5673
5733
  },
5674
5734
  "section": {
5675
5735
  "ai_connections": {
@@ -5770,6 +5830,11 @@
5770
5830
  "code_editor": {
5771
5831
  "ai_autocomplete": "autocomplete, completion, suggestions, copilot, ghost text, inline, tab, model, opencode, ollama, openai, endpoint, api key, fastest, latency, excluded files, secrets, env",
5772
5832
  "editing": "font size, text size, ligatures, word wrap, wrap lines, minimap, indent guides, whitespace, spaces, tabs, tab size, indentation, trim trailing whitespace, final newline, on save"
5833
+ },
5834
+ "about": {
5835
+ "links": "GitHub, repository, releases, changelog, issue, bug report, website, docs, documentation, npm, license, Discord, community",
5836
+ "system": "version, Node, Node.js, Electron, Chromium, SQLite, operating system, OS, macOS, Windows, Linux, architecture, data folder, port, install, diagnostics",
5837
+ "dependencies": "packages, libraries, npm, licenses, open source, third party, versions, node_modules"
5773
5838
  }
5774
5839
  },
5775
5840
  "control": {
@@ -5893,6 +5958,69 @@
5893
5958
  "all": "Everywhere"
5894
5959
  }
5895
5960
  }
5961
+ },
5962
+ "about": {
5963
+ "loading": "Loading…",
5964
+ "version": "Version {version}",
5965
+ "channel": {
5966
+ "stable": "Stable",
5967
+ "prerelease": "Pre-release",
5968
+ "dev": "Development build"
5969
+ },
5970
+ "install": {
5971
+ "desktop": "Desktop app",
5972
+ "app": "Installed app",
5973
+ "npm": "npm install",
5974
+ "git": "Git clone"
5975
+ },
5976
+ "restartNote": "Links, dependencies and the full system details appear after SynaBun restarts: the server that is running is older than this page.",
5977
+ "copied": "Copied to the clipboard.",
5978
+ "copyFailed": "The browser did not allow copying.",
5979
+ "links": {
5980
+ "none": "No links found in package.json."
5981
+ },
5982
+ "link": {
5983
+ "repository": "GitHub repository",
5984
+ "releases": "Releases",
5985
+ "changelog": "Changelog",
5986
+ "issues": "Report an issue",
5987
+ "website": "Website",
5988
+ "docs": "Documentation",
5989
+ "npm": "npm package",
5990
+ "license": "License",
5991
+ "discord": "Discord",
5992
+ "x": "X"
5993
+ },
5994
+ "row": {
5995
+ "version": "Version",
5996
+ "install": "Install",
5997
+ "os": "Operating system",
5998
+ "dataFolder": "Data folder",
5999
+ "port": "Server port"
6000
+ },
6001
+ "package": {
6002
+ "neural_interface": "Neural Interface",
6003
+ "mcp_server": "MCP server",
6004
+ "desktop": "Desktop app",
6005
+ "whatsapp_connector": "WhatsApp connector"
6006
+ },
6007
+ "deps": {
6008
+ "filterPlaceholder": "Filter",
6009
+ "notInstalled": "not installed",
6010
+ "declared": "declared {range}",
6011
+ "optional": "optional",
6012
+ "onDemand": "Installed on demand, into the data folder, when you set up WhatsApp.",
6013
+ "vendored": "Bundled in the interface",
6014
+ "dev": "Development dependencies ({count})",
6015
+ "noMatch": "No package matches “{query}”.",
6016
+ "none": "No dependencies found."
6017
+ },
6018
+ "footer": {
6019
+ "license": "Licensed under {license}.",
6020
+ "copyright": "Copyright © {years} {holder}",
6021
+ "builtWith": "Built with open-source software"
6022
+ },
6023
+ "afterRestart": "Shown after SynaBun restarts."
5896
6024
  }
5897
6025
  }
5898
6026
  },
@@ -6131,7 +6259,108 @@
6131
6259
  "tileTerminals": "Tile terminals"
6132
6260
  },
6133
6261
 
6262
+ "accounts": {
6263
+ "apiShort": "API",
6264
+ "subscriptionBadge": "{service} account",
6265
+ "apiKeyBadge": "API key",
6266
+ "signedOut": "Signed out",
6267
+ "checking": "Checking…",
6268
+ "keyUnreadable": "Key unreadable",
6269
+ "defaultName": "Default",
6270
+ "current": "This tab",
6271
+ "nowNote": "Applies now: the next message runs under {label}.",
6272
+ "nextNote": "This chat stays on {current}. {label} opens in a new chat.",
6273
+ "sameNote": "This tab already uses {label}.",
6274
+ "missingNote": "That account is no longer set up. Choose another one.",
6275
+ "menuNoteNow": "The account you pick applies from the next message.",
6276
+ "menuNoteChat": "This chat stays on {label}. Picking another account opens a new chat.",
6277
+ "newChatUnder": "This chat runs under {label}.",
6278
+ "tooManyTabs": "Close a tab first: the most tabs are open.",
6279
+ "menuTitle": "{provider} accounts",
6280
+ "triggerLabel": "{provider} account: {summary}",
6281
+ "manage": "Manage {label}",
6282
+ "back": "All accounts",
6283
+ "addAccount": "Add account",
6284
+ "refresh": "Refresh",
6285
+ "subscriptionShort": "Subscription",
6286
+ "emptyAccounts": "No accounts yet.",
6287
+ "usageLeft": "{percent}% left",
6288
+ "usageLimited": "Limit reached",
6289
+ "usageResets": "Resets {time}",
6290
+ "reading": "Reading the accounts…",
6291
+ "readFailed": "Could not read the accounts. Try again.",
6292
+ "needsServer": "Choosing an account needs a newer SynaBun server: restart it to enable this.",
6293
+ "otherAccounts": "Other accounts…",
6294
+ "uses": "Uses",
6295
+ "usesGroup": "What {label} uses",
6296
+ "credSubscription": "{service} subscription",
6297
+ "credApiKey": "API key",
6298
+ "inUse": "in use",
6299
+ "signedIn": "Signed in",
6300
+ "notSignedIn": "Not signed in",
6301
+ "notChecked": "Not checked yet",
6302
+ "noKey": "None",
6303
+ "savedKey": "Saved",
6304
+ "keyUnreadableLong": "Saved key cannot be read: save it again",
6305
+ "keyKeptBy": "{hint}, kept by {cli}",
6306
+ "signIn": "Sign in with {service}",
6307
+ "useApiKey": "Use an API key",
6308
+ "signOut": "Sign out",
6309
+ "removeKey": "Remove key",
6310
+ "rename": "Rename",
6311
+ "remove": "Remove account",
6312
+ "save": "Save",
6313
+ "cancel": "Cancel",
6314
+ "keyPlaceholder": "Paste API key",
6315
+ "keyLabel": "API key for {label}",
6316
+ "nameLabel": "Account name",
6317
+ "freshPrompt": "Sign {label} in: with {service} (a terminal opens) or with an API key.",
6318
+ "signInPending": "Finish signing in in the terminal. This menu updates when {cli} confirms it.",
6319
+ "checkingKey": "Checking the key with {vendor}…",
6320
+ "keySavedNote": "{label} now uses its API key.",
6321
+ "modeSetApiKey": "{label} now uses its API key, from the next message.",
6322
+ "modeSetSubscription": "{label} now uses its {service} account, from the next message.",
6323
+ "signedOutNote": "{label} is signed out of {service}.",
6324
+ "keyRemovedNote": "The API key of {label} was removed.",
6325
+ "confirmSignOut": "Sign {label} out of {service}? {cli} removes the subscription login from this account.",
6326
+ "confirmRemoveKey": "Remove the API key saved for {label}?",
6327
+ "confirmRemove": "Remove {label}? Its folder, its sign-in and its saved key are deleted.",
6328
+ "busyTurn": "Finish or stop the current turn first.",
6329
+ "failed": "That did not work. Try again.",
6330
+ "errInvalidKey": "That doesn't look like an {vendor} API key.",
6331
+ "errOauthToken": "That's a Claude sign-in token. Use Sign in with Claude.",
6332
+ "errKeyRejected": "{vendor} rejected that key.",
6333
+ "errPermission": "Saving keys requires the owner’s SynaBun window. Reload and try again.",
6334
+ "errAccountUnavailable": "This account is no longer available. Select an account again.",
6335
+ "errAccountBusy": "Finish this account’s work, then try again.",
6336
+ "errUnreachable": "Couldn't reach {vendor} to check the key. Try again.",
6337
+ "errUnavailable": "{vendor} couldn't check the key. Try again shortly.",
6338
+ "errServer": "Couldn't reach SynaBun. Check the connection and try again.",
6339
+ "errStorage": "Couldn't save the key for this account."
6340
+ },
6134
6341
  "assistant": {
6342
+ "accountUsage": {
6343
+ "autoPicked": "Auto chose {to}: {usage}",
6344
+ "fallbackPicked": "{from} out of usage → {to}: {usage}",
6345
+ "allLimitedPicked": "All subscriptions limited; soonest reset → {to}: {usage}",
6346
+ "directWorkerHint": "Runs on a worker because this conversation belongs to another account.",
6347
+ "noSubscription": "Auto requires a signed-in subscription account.",
6348
+ "auto": "Auto · most usage left",
6349
+ "autoHint": "Signed-in subscriptions only. Another account runs on a worker.",
6350
+ "composerHint": "Pick the subscription with most usage left and start a new conversation.",
6351
+ "notApplicable": "Usage n/a",
6352
+ "limitedUntil": "Limited until {time}",
6353
+ "limited": "Limited",
6354
+ "unknown": "Usage unknown",
6355
+ "left": "{percent}% left",
6356
+ "resets": "resets {time}"
6357
+ },
6358
+ "accountMenu": {
6359
+ "uses": "{label} uses",
6360
+ "workers": "Workers use",
6361
+ "workersHint": "Used when a dispatch names no account.",
6362
+ "switchNote": "Another account starts a new conversation."
6363
+ },
6135
6364
  "usage": {
6136
6365
  "task": "Current task",
6137
6366
  "tokens": "tokens",
@@ -7008,7 +7237,7 @@
7008
7237
  "routesUnavailable": "Model routing is not available on this server.",
7009
7238
  "computerUsage": "Usage: /computer [on|off]",
7010
7239
  "computerUnavailable": "Computer use is not available here.",
7011
- "budget": "Set the money caps (per run, session, brain)"
7240
+ "budget": "Set the session budget and view provider shares"
7012
7241
  },
7013
7242
  "prompts": {
7014
7243
  "recall": "Use the SynaBun recall tool to search memory for: \"{query}\". Summarize the most relevant results with their IDs.",
@@ -7092,6 +7321,8 @@
7092
7321
  "variant": "Model variant",
7093
7322
  "variantDefault": "default variant",
7094
7323
  "account": "Account profile",
7324
+ "accountShort": "Account",
7325
+ "accountAutoShort": "Auto",
7095
7326
  "accountHint": "as",
7096
7327
  "project": "Working project",
7097
7328
  "projectHint": "in",
@@ -7142,7 +7373,18 @@
7142
7373
  "thorough": "Full coverage, whole suite, live checks."
7143
7374
  }
7144
7375
  },
7376
+ "adminSandbox": {
7377
+ "group": "Every agent",
7378
+ "label": "Admin sandbox",
7379
+ "on": "On",
7380
+ "off": "Off",
7381
+ "hint": "Only changes anything when SynaBun runs on Windows. On: Codex can set up its strongest sandbox, which asks for administrator approval once per account. Off: no admin prompt; Codex uses a sandbox that needs no admin, with weaker isolation.",
7382
+ "aria": "{label}: {value}. Only changes anything when SynaBun runs on Windows.",
7383
+ "statusOn": "Admin sandbox: on. On Windows, Codex may ask for administrator approval once per account to set up its sandbox.",
7384
+ "statusOff": "Admin sandbox: off. No agent SynaBun starts asks for administrator approval for a sandbox."
7385
+ },
7145
7386
  "accounts": {
7387
+ "signInAccount": "Sign in to {label}…",
7146
7388
  "title": "{provider} accounts",
7147
7389
  "add": "Add account…",
7148
7390
  "manage": "Manage…",
@@ -7164,7 +7406,40 @@
7164
7406
  "openLogin": "Open sign-in page",
7165
7407
  "enterCode": "Enter this code:",
7166
7408
  "loginTimeout": "Login was not confirmed. The account was created — use \"Log in\" to retry.",
7167
- "confirmRemove": "Remove account \"{label}\"? Its config directory is kept on disk."
7409
+ "confirmRemove": "Remove account \"{label}\"? Its config directory is kept on disk.",
7410
+ "noteClaude2": "Each account has its own CLAUDE_CONFIG_DIR (settings, sign-in, sessions) and runs on its Claude subscription or its API key. \"Default\" is your ambient ~/.claude.",
7411
+ "create": "Add account",
7412
+ "useBrain": "Use for the brain",
7413
+ "useWorkers": "Use for workers",
7414
+ "workersSet": "Claude Code workers now use {label} when a dispatch names no account.",
7415
+ "switchMode": "Use its {mode}",
7416
+ "modeSet": "{label} now uses its {mode}.",
7417
+ "finishInTerminal": "Finish signing in in the terminal. This list updates when Claude Code confirms it.",
7418
+ "signOut": "Sign out of Claude",
7419
+ "confirmSignOut": "Sign {label} out of Claude?",
7420
+ "signedOut": "{label} is signed out of Claude.",
7421
+ "removeKey": "Remove API key",
7422
+ "confirmRemoveKey": "Remove the API key saved for {label}?",
7423
+ "keyRemoved": "The API key of {label} was removed.",
7424
+ "pasteKey": "Paste API key",
7425
+ "keyFor": "API key for {label}",
7426
+ "checkingKey": "Checking the key with Anthropic…",
7427
+ "keySaved": "{label} now uses its API key.",
7428
+ "notSignedIn": "Not signed in",
7429
+ "checking": "Checking sign-in…",
7430
+ "workerTag": "workers use it",
7431
+ "subscription": "Claude subscription",
7432
+ "apiKey": "API key",
7433
+ "inUseNow": "in use",
7434
+ "renamePrompt": "Name for {label}",
7435
+ "confirmRemoveClaude": "Remove \"{label}\"? Its config directory, its sign-in and its saved key are deleted.",
7436
+ "chooseSignIn": "Sign it in: with Claude (a terminal opens) or with an API key.",
7437
+ "signInFirst": "Signed out: sign it in from Manage…",
7438
+ "usesHeader": "{label} uses (every session on it)",
7439
+ "workersHeader": "Claude Code workers use",
7440
+ "noteCodex2": "Each account has its own CODEX_HOME (sign-in, sessions) and runs on its ChatGPT subscription or its API key. \"Default\" is your ambient ~/.codex.",
7441
+ "codexWorkersHeader": "Codex workers use",
7442
+ "codexWorkersSet": "Codex workers now use {label} when a dispatch names no account."
7168
7443
  },
7169
7444
  "transcript": "Conversation",
7170
7445
  "toolbar": {
@@ -7206,55 +7481,57 @@
7206
7481
  },
7207
7482
  "budget": {
7208
7483
  "title": "Budget",
7209
- "menu": "Budget…",
7484
+ "menu": "Budget\u2026",
7210
7485
  "thisSession": "This session",
7211
- "caps": "Caps (US dollars)",
7212
- "defaultRun": "Default per-run cap",
7213
- "defaultRunDesc": "Each dispatched run stops at this spend unless the brain asks for another cap.",
7214
- "maxRun": "Largest per-run cap",
7215
- "maxRunDesc": "The most a brain may give one run (budget_usd).",
7216
- "sessionWarn": "Session warning",
7217
- "sessionWarnDesc": "The brain and this panel are warned once when the session spends this much.",
7218
- "sessionHard": "Session hard cap",
7219
- "sessionHardDesc": "Brain + every run of the session. At this spend runs stop, and dispatches, follow-ups and brain turns are refused.",
7220
- "brain": "Brain cap",
7221
- "brainDesc": "The central brain's own spend in one session, checked before every brain turn.",
7222
- "effective": "In effect: {value} · default {def}",
7223
- "sourceSaved": "saved",
7224
- "sourceDefault": "default",
7225
- "sourceLegacy": "from soft budget",
7226
- "sourceEdited": "edited",
7227
- "howEnforced": "How caps are enforced",
7228
- "brainRow": "Brain",
7229
- "resetAll": "Defaults",
7230
- "reload": "Reload",
7231
- "saved": "Budget saved — applies now.",
7232
- "saveFailed": "Could not save the budget",
7233
- "loadFailed": "Could not load the budget",
7234
- "conflict": "Changed elsewhere — reload to see the saved caps.",
7235
- "unavailable": "Budget settings are not available on this server yet (restart SynaBun to load them).",
7486
+ "amount": "Budget per session (USD)",
7487
+ "noLimit": "No limit",
7488
+ "perSession": "{amount} / session",
7489
+ "spendUnlimited": "{spent} \u00b7 no limit",
7490
+ "applies": "Applies to each new session and all open sessions. Jev splits it across providers.",
7236
7491
  "errNumber": "Enter an amount in US dollars.",
7237
7492
  "errRange": "Between {min} and {max}.",
7238
- "errMaxOverHard": "Cannot exceed the session hard cap ({hard}).",
7239
- "errDefaultOverMax": "Cannot exceed the largest per-run cap ({max}).",
7240
- "errWarnOverHard": "Must be below the session hard cap ({hard}).",
7241
- "errBrainOverHard": "Cannot exceed the session hard cap ({hard}).",
7242
- "sessionLine": "{total} spent of {hard} — brain {brain}, agents {agents}; {reserved} reserved by live runs, {available} left for new runs.",
7243
- "meterLabel": "Session spend against the hard cap",
7244
- "notMetered": "not metered",
7245
- "notMeteredCodex": "not metered (Codex brain)",
7246
- "unpriced": "{n} run(s) used a model with no known price: their tokens are recorded but the dollar caps cannot meter them.",
7247
- "pricingOk": "Codex list prices: models.dev (OpenCode cache).",
7248
- "pricingTable": "List prices: SynaBun's table, checked against the Anthropic and OpenAI pricing pages on {date}. A Codex model it does not list is priced from models.dev.",
7249
- "pricingDrift": "models.dev lists another price for {models}: the table may be out of date.",
7250
- "pricingMissing": "Codex list prices unavailable (no OpenCode models.dev cache): Codex runs are flagged unpriced.",
7251
- "repaired": "The saved file broke a rule ({fields}); the values in effect were corrected. Save to store them.",
7252
- "applies": "Saved caps apply at once to open sessions and their runs: the next dispatch, follow-up, turn end and metered step. A Claude run keeps the CLI cap it started with, and the dispatcher also stops it at the new cap after its turn.",
7253
- "chipSplit": "Brain {brain} · agents {agents}",
7254
- "chipCap": "{total} of the {hard} session cap",
7255
- "chipUnpriced": "{n} run(s) with unpriced usage"
7493
+ "invalid": "The server rejected this budget. Check the amount and try again.",
7494
+ "loadFailed": "Could not load the budget. Try again.",
7495
+ "saveFailed": "Could not save the budget. Your edit is kept; try again.",
7496
+ "conflict": "Changed elsewhere again. Your edit is kept; try again.",
7497
+ "retry": "Try again",
7498
+ "saving": "Saving\u2026",
7499
+ "saved": "Budget saved \u2014 applies now.",
7500
+ "chipSplit": "Brain {brain} \u00b7 agents {agents}",
7501
+ "chipUnpriced": "{n} run(s) with unpriced usage",
7502
+ "meterLabel": "Session spend against the budget",
7503
+ "brainRow": "Brain",
7504
+ "providerSpend": "{spent} spent",
7505
+ "providerAmounts": "Share {share} \u00b7 spent {spent} \u00b7 left for tasks {left}",
7506
+ "reserve": "{reserve} reserved for the brain within this share.",
7507
+ "dry": "Share used up",
7508
+ "fixedRule": "Fixed rule",
7509
+ "awaitingSplit": "The split is prepared when work starts.",
7510
+ "ineligible": {
7511
+ "no_models": "No available models",
7512
+ "signed_out": "Signed out",
7513
+ "limited": "Provider usage limit reached"
7514
+ },
7515
+ "fallback": {
7516
+ "jev_off": "Jev is off",
7517
+ "jev_unavailable": "Jev is unavailable",
7518
+ "jev_incomplete": "Jev returned an incomplete split",
7519
+ "nothing_left": "No budget left"
7520
+ }
7256
7521
  },
7257
7522
  "routes": {
7523
+ "budgetDecision": "budget re-route",
7524
+ "budgetProvider": "Budget: the {provider} share of this session's budget is used up.",
7525
+ "budgetSpent": "Budget: this session's budget is spent.",
7526
+ "budgetDryOne": "Budget: the {list} share is used up.",
7527
+ "budgetDryMany": "Budget: the {list} shares are used up.",
7528
+ "account": {
7529
+ "workersDefault": "Workers default",
7530
+ "removed": "{id} · account removed",
7531
+ "removedHint": "Account removed. Save another account choice before running this route.",
7532
+ "signedOut": "Signed out. Sign in from the provider account menu before running this route.",
7533
+ "conversationHint": "Uses this conversation’s account. Change it in the composer model selector."
7534
+ },
7258
7535
  "title": "Model routing",
7259
7536
  "editor": "Model routes…",
7260
7537
  "editorTitle": "Model routes",
@@ -7399,6 +7676,7 @@
7399
7676
  "chatInactive": "Plain chat stays on the current brain. A stored Chat choice is not applied in any mode.",
7400
7677
  "visionFallback": "Vision fallback, not a task class. Used when the chosen model cannot see image input.",
7401
7678
  "columns": {
7679
+ "account": "Account",
7402
7680
  "task": "Task",
7403
7681
  "model": "Model",
7404
7682
  "effort": "Effort",
@@ -8365,5 +8643,315 @@
8365
8643
  "body": "Click ? whenever you want to pick it up again. Nothing in your workspace was changed."
8366
8644
  }
8367
8645
  }
8646
+ },
8647
+ "codexSettings": {
8648
+ "title": "Codex Settings",
8649
+ "close": "Close",
8650
+ "account": "Account",
8651
+ "models": "Model & reasoning",
8652
+ "permissions": "Permissions",
8653
+ "tools": "Tools",
8654
+ "advanced": "Advanced",
8655
+ "loading": "Loading…",
8656
+ "error": "Could not save or load settings: {message}",
8657
+ "default": "(default)",
8658
+ "defaultAccount": "Default account",
8659
+ "manage": "Manage account",
8660
+ "usage": "{name}: {percent}% used · resets {time}",
8661
+ "unknown": "unknown",
8662
+ "runtime": "CLI {cli} · Automation SDK {sdk} · Protocol {protocol}",
8663
+ "mcp": "MCP servers",
8664
+ "alwaysAllowed": "Always allowed",
8665
+ "loginRequired": "Login required",
8666
+ "running": "Running",
8667
+ "configured": "{value} (configured)",
8668
+ "refresh": "Refresh",
8669
+ "revoke": "Revoke",
8670
+ "authenticate": "Authenticate",
8671
+ "noMcp": "Configure MCP servers in $CODEX_HOME/config.toml under [mcp_servers].",
8672
+ "folders": "Always allowed folders",
8673
+ "write": "Write",
8674
+ "read": "Read",
8675
+ "none": "None",
8676
+ "applyTo": "Apply to",
8677
+ "savedDefaults": "Saved defaults",
8678
+ "currentThread": "Current thread",
8679
+ "scopeHint": "Saved defaults affect new threads. Current thread choices apply to subsequent turns. MCP settings apply to this account; allowed folders apply across Codex tabs.",
8680
+ "features": "Runtime features",
8681
+ "on": "On",
8682
+ "off": "Off",
8683
+ "saveDefaults": "Save defaults",
8684
+ "applyThread": "Apply to current thread",
8685
+ "saving": "Saving…",
8686
+ "saved": "Saved and verified",
8687
+ "notApplied": "The effective value did not change for {keys}. Check the source layer or managed configuration.",
8688
+ "busy": "Wait for the active turn to finish.",
8689
+ "noSchema": "The running CLI did not report its settings schema. No settings will be written.",
8690
+ "tokens": "tokens",
8691
+ "source": "Source: {layer}",
8692
+ "managed": "Managed configuration",
8693
+ "model": "Model",
8694
+ "reviewModel": "Review model",
8695
+ "effort": "Reasoning effort",
8696
+ "summary": "Reasoning summary",
8697
+ "serviceTier": "Service tier",
8698
+ "personality": "Personality",
8699
+ "approval": "Approval policy",
8700
+ "sandbox": "Sandbox mode",
8701
+ "webSearch": "Web search",
8702
+ "provider": "Provider",
8703
+ "verbosity": "Response verbosity",
8704
+ "contextWindow": "Context window",
8705
+ "autoCompact": "Auto-compact",
8706
+ "gateway": "Gateway OAuth",
8707
+ "cancel": "Cancel",
8708
+ "signIn": "Sign in",
8709
+ "httpsRequired": "Authorization requires an HTTPS URL.",
8710
+ "continueAt": "Continue sign-in at {host}",
8711
+ "openHost": "Open {host}",
8712
+ "verification": "User verification · Experimental",
8713
+ "credentialReady": "Local credential ready",
8714
+ "credentialMissing": "No local credential",
8715
+ "localCredential": "Device credential only. Registration is managed by the verification provider.",
8716
+ "remove": "Remove",
8717
+ "enroll": "Enroll",
8718
+ "removeCredential": "Remove the local user verification credential?",
8719
+ "changedConversation": "This conversation changed. Reopen Settings to continue.",
8720
+ "configRepaired": "Codex configuration repaired. The original was backed up.",
8721
+ "warningHelp": "Edit the reported key in the reported config file, then reconnect Codex. Existing messages do not block sending.",
8722
+ "dismiss": "Dismiss",
8723
+ "openSettings": "Open settings",
8724
+ "gatewayStates": {
8725
+ "notReady": "Sign-in required",
8726
+ "started": "Waiting for sign-in",
8727
+ "succeeded": "Signed in",
8728
+ "failed": "Sign-in failed"
8729
+ },
8730
+ "values": {
8731
+ "never": "Never",
8732
+ "untrusted": "Untrusted commands",
8733
+ "on-request": "On request",
8734
+ "read-only": "Read only",
8735
+ "workspace-write": "Workspace write",
8736
+ "danger-full-access": "Full access",
8737
+ "auto": "Automatic",
8738
+ "concise": "Concise",
8739
+ "detailed": "Detailed",
8740
+ "none": "None",
8741
+ "low": "Low",
8742
+ "medium": "Medium",
8743
+ "high": "High",
8744
+ "disabled": "Disabled",
8745
+ "cached": "Cached",
8746
+ "indexed": "Indexed",
8747
+ "live": "Live",
8748
+ "friendly": "Friendly",
8749
+ "pragmatic": "Pragmatic"
8750
+ }
8751
+ },
8752
+ "desktop": {
8753
+ "update": {
8754
+ "source": "SynaBun app",
8755
+ "tooltip": "SynaBun update available: v{current} → v{latest}",
8756
+ "tooltipDownloading": "Downloading SynaBun v{latest}",
8757
+ "tooltipReady": "SynaBun v{latest} is ready: it installs when SynaBun is idle",
8758
+ "titleAvailable": "Update available",
8759
+ "titleDownloading": "Downloading the update",
8760
+ "titleDownloaded": "Update ready",
8761
+ "titleInstalling": "Installing the update",
8762
+ "titleMove": "Move SynaBun to Applications",
8763
+ "titleManual": "Install the update yourself",
8764
+ "titleError": "The update did not finish",
8765
+ "notesLabel": "What's new",
8766
+ "notesEmpty": "This release has no notes.",
8767
+ "snapshot": "Before v{version} starts for the first time, SynaBun takes a verified snapshot of your data.",
8768
+ "backup": "Download full backup",
8769
+ "backupWorking": "Creating backup...",
8770
+ "backupDone": "{file} ({size} MB)",
8771
+ "backupFailed": "Backup failed: {reason}",
8772
+ "later": "Later",
8773
+ "download": "Download update",
8774
+ "downloadStarting": "Starting the download.",
8775
+ "progress": "{transferred} of {total} MB",
8776
+ "progressUnknown": "{transferred} MB downloaded",
8777
+ "hide": "Hide",
8778
+ "hideHint": "The download continues while this is hidden. SynaBun installs the update by itself when nothing is running.",
8779
+ "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.",
8780
+ "waitingBody": "Waiting for: {list}.",
8781
+ "countdownBody": "SynaBun restarts into v{version} in {seconds} s.",
8782
+ "postponedBody": "Postponed until {time}. It also installs when you quit SynaBun.",
8783
+ "nowBody": "SynaBun restarts into v{version} as soon as nothing is running.",
8784
+ "installNow": "Install now",
8785
+ "installingBody": "SynaBun is stopping its server and installing v{version}. It closes and opens again by itself.",
8786
+ "moveBody": "macOS is running SynaBun from a disk image or a temporary location, where it cannot update itself. Move it to the Applications folder; SynaBun opens again from there and can update.",
8787
+ "move": "Move to Applications",
8788
+ "manualBody": "SynaBun cannot replace itself in its current folder. Download the disk image of v{version}, open it and drag SynaBun to the Applications folder.",
8789
+ "manualReady": "The disk image of v{version} is downloaded. Open it and drag SynaBun to the Applications folder to replace the old copy.",
8790
+ "manualFile": "File: {path}",
8791
+ "manualDownload": "Download disk image",
8792
+ "showFile": "Show disk image",
8793
+ "errorFallback": "SynaBun could not check for updates. Check the connection and try again.",
8794
+ "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
+ "manualLink": "Download it yourself",
8796
+ "close": "Close",
8797
+ "retry": "Try again",
8798
+ "testFeed": "test feed",
8799
+ "metaAvailable": "From the SynaBun app",
8800
+ "metaDownloading": "Downloading: {percent}%",
8801
+ "metaDownloaded": "Ready: installs when SynaBun is idle",
8802
+ "metaCountdown": "Restarting to install it",
8803
+ "metaPostponed": "Postponed: installs on quit or later"
8804
+ },
8805
+ "busy": {
8806
+ "assistant": "an Assistant run or dispatched agent",
8807
+ "claude-panel": "a Claude Code panel reply",
8808
+ "codex-panel": "a Codex panel reply",
8809
+ "opencode-panel": "an OpenCode panel reply",
8810
+ "claude-cli": "a Claude Code session in use",
8811
+ "loop": "a loop",
8812
+ "schedule": "a schedule",
8813
+ "backup": "a backup",
8814
+ "maintenance": "indexing or an install",
8815
+ "unknown": "work SynaBun cannot see the end of",
8816
+ "test": "the test switch"
8817
+ },
8818
+ "notice": {
8819
+ "countdownTitle": "Updating to v{version}",
8820
+ "countdownLine": "SynaBun restarts in {seconds} s.",
8821
+ "later": "Later",
8822
+ "postponed": "SynaBun asks again in an hour, or installs the update when you quit it.",
8823
+ "updatedTitle": "SynaBun is updated",
8824
+ "updatedLine": "Now v{version}, updated from v{previous}.",
8825
+ "updatedLineShort": "Now v{version}.",
8826
+ "failedTitle": "The update did not finish",
8827
+ "details": "Details",
8828
+ "close": "Close"
8829
+ },
8830
+ "menu": {
8831
+ "quit": "Quit SynaBun"
8832
+ },
8833
+ "offline": {
8834
+ "hint": "The SynaBun app restarts its server by itself. If it stays offline, quit SynaBun and open it again.",
8835
+ "stalled": "The server has not come back. Quit SynaBun and open it again.",
8836
+ "failedHint": "Quit SynaBun and open it again. If the start fails, the start screen says why."
8837
+ },
8838
+ "titleBar": {
8839
+ "appMenu": "SynaBun menu"
8840
+ }
8841
+ },
8842
+ "desktopShell": {
8843
+ "update": {
8844
+ "installingAtLaunch": "SynaBun downloaded v{version} earlier and installs it before it starts. It opens again when it is done.",
8845
+ "updateAvailableManualDetail": "This copy cannot replace itself where it is. Download the new disk image and install it the way you installed SynaBun.",
8846
+ "updateDownloading": "SynaBun v{version} is downloading",
8847
+ "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.",
8848
+ "installNow": "Install now",
8849
+ "downloadYourself": "Download it yourself",
8850
+ "countdownTitle": "Updating SynaBun to v{version}",
8851
+ "countdownBody": "SynaBun restarts in one minute. Open SynaBun to postpone it.",
8852
+ "updatedTitle": "SynaBun is updated",
8853
+ "updatedBody": "SynaBun now runs v{version} (it was v{previous}).",
8854
+ "errorSwapFailed": "The update to v{version} did not install ({reason}). SynaBun kept v{previous}."
8855
+ }
8856
+ },
8857
+ "cliInstall": {
8858
+ "titleMissing": "{label} is not installed",
8859
+ "titleBroken": "{label} failed to start",
8860
+ "titleInstalling": "Installing {label}…",
8861
+ "titleFailed": "{label} could not be installed",
8862
+ "titleDone": "{label} is installed",
8863
+ "titlePath": "Run {label} in your other terminals",
8864
+ "bodyPath": "SynaBun terminals are ready. Add {dir} to your PATH for other terminals.",
8865
+ "addPath": "Add to PATH",
8866
+ "addingPath": "Adding…",
8867
+ "pathFailed": "PATH could not be updated: {error}",
8868
+ "copyPathDiagnostics": "Copy PATH diagnostics",
8869
+ "stepPath": "Adding the CLI folder to your PATH…",
8870
+ "stepPathAdded": "Added {dir} to your PATH",
8871
+ "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
+ "bodyMissingManual": "Install it with this command, then re-check:",
8874
+ "bodyBroken": "{label} was found at {path}, but it could not be started:",
8875
+ "bodyBrokenVersion": "{label} {version} was found at {path}, but it could not be started:",
8876
+ "bodyBrokenLatched": "{label} is installed, but it could not be started:",
8877
+ "bodyBrokenHint": "Check the CLI path in Settings, then re-check.",
8878
+ "configuredFailed": "The path set in Settings did not work: {error}",
8879
+ "bodyFailedManual": "Run it yourself:",
8880
+ "doneNotOnPath": "It is in {dir}. SynaBun finds it there; add that folder to your PATH to run it in a terminal.",
8881
+ "doneAddedToPath": "Added {dir} to your PATH. New terminal windows and tabs pick it up.",
8882
+ "stepStart": "Starting the official installer…",
8883
+ "stepDownload": "Downloading…",
8884
+ "stepDownloadProgress": "Downloading: {received} of {total} MB",
8885
+ "stepDownloadReceived": "Downloading: {received} MB",
8886
+ "stepVerify": "Checking the download…",
8887
+ "stepRun": "Running the official installer…",
8888
+ "stepExtract": "Unpacking…",
8889
+ "stepPlace": "Putting it in place…",
8890
+ "stepCheck": "Checking that it starts…",
8891
+ "errorOffline": "The download server could not be reached. Check the connection and try again.",
8892
+ "errorHttp": "The download server answered with an error. Try again in a moment.",
8893
+ "errorChecksum": "The download did not match its published checksum, so it was removed and never run.",
8894
+ "errorInterrupted": "The download stopped before it was complete. Nothing was kept. Try again.",
8895
+ "errorTimeout": "The installer took too long and was stopped.",
8896
+ "errorInstallerFailed": "The official installer stopped with an error.",
8897
+ "errorNotFound": "The installer finished, but SynaBun does not find {label} afterwards.",
8898
+ "errorUnpack": "The download could not be unpacked, so it was removed.",
8899
+ "errorDisk": "The files could not be written. Check free space and permissions, then try again.",
8900
+ "errorCancelled": "The installation was stopped.",
8901
+ "errorUnsupported": "There is no one-click install for this system. Use the command below or the install guide.",
8902
+ "errorRefused": "SynaBun refused the request. Install from SynaBun on this computer.",
8903
+ "errorConnection": "The connection to SynaBun closed before the installation finished.",
8904
+ "errorUnknown": "The installation did not finish.",
8905
+ "install": "Install",
8906
+ "installing": "Installing…",
8907
+ "retry": "Try again",
8908
+ "guide": "Install guide",
8909
+ "recheck": "Re-check",
8910
+ "checking": "Checking…",
8911
+ "copy": "Copy",
8912
+ "copied": "Copied",
8913
+ "dismiss": "Dismiss",
8914
+ "logLabel": "Installer output"
8915
+ },
8916
+ "gitBash": {
8917
+ "label": "Git Bash for Claude Code (Windows)",
8918
+ "help": "Claude Code on Windows runs its Bash tool and its hooks in Git Bash. SynaBun uses the Git for Windows of this PC, or its own copy when the PC has none.",
8919
+ "badgeSystem": "On this PC",
8920
+ "badgeReady": "SynaBun's copy",
8921
+ "badgeMissing": "Not found",
8922
+ "badgeDownloading": "Downloading",
8923
+ "badgeFailed": "Not installed",
8924
+ "badgeOff": "Off",
8925
+ "sourceEnv": "CLAUDE_CODE_GIT_BASH_PATH names {path}.",
8926
+ "sourceSettings": "Your Claude Code settings name {path}.",
8927
+ "sourceSystem": "Git for Windows on this PC: {path}",
8928
+ "sourceSystemPassed": "Git for Windows on this PC: {path}. Claude Code would not find it by itself, so SynaBun names it.",
8929
+ "sourceBundled": "Git for Windows {version}, installed with SynaBun: {path}",
8930
+ "sourceDownloaded": "Git for Windows {version}, downloaded by SynaBun: {path}",
8931
+ "missing": "No Git Bash on this PC. SynaBun downloads its own copy of Git for Windows {version} ({size} MB) and checks it against its published SHA-256.",
8932
+ "stepDownload": "Downloading Git for Windows {version}: {done} of {total} MB",
8933
+ "stepExtract": "Unpacking Git for Windows {version}: {percent}%",
8934
+ "stepVerify": "Checking every file against the pinned release…",
8935
+ "stepPlace": "Putting it in place…",
8936
+ "failed": "Git for Windows could not be put in place. {reason}",
8937
+ "off": "Turned off: SYNABUN_GIT_BASH=off is set, so SynaBun downloads nothing and names no Git Bash.",
8938
+ "unsupported": "No Git for Windows release is pinned for this processor. Install Git for Windows from git-scm.com.",
8939
+ "settingsNamed": "A claude you start in another terminal uses it too: your Claude Code settings name it.",
8940
+ "settingsKept": "Your Claude Code settings name a Git Bash that is not there ({value}). SynaBun left that value as it is.",
8941
+ "settingsError": "Your Claude Code settings could not be updated: {message}",
8942
+ "download": "Download",
8943
+ "retry": "Try again",
8944
+ "recheck": "Re-check",
8945
+ "checking": "Checking…",
8946
+ "errorOffline": "The download server could not be reached. Check the connection and try again.",
8947
+ "errorHttp": "The download server answered with an error. Try again in a moment.",
8948
+ "errorInterrupted": "The download stopped before it was complete. Nothing was kept.",
8949
+ "errorTimeout": "Nothing arrived from the download server for too long.",
8950
+ "errorChecksum": "What arrived is not the published release, so it was removed and never run.",
8951
+ "errorUnpack": "The download could not be unpacked, so it was removed.",
8952
+ "errorDisk": "The files could not be written. Check free space (about 550 MB) and permissions.",
8953
+ "errorCancelled": "The download was stopped.",
8954
+ "errorUnknown": "The download did not finish.",
8955
+ "errorRequest": "SynaBun did not answer: {message}"
8368
8956
  }
8369
8957
  }