synabun 2.0.0 → 2.0.7

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 (507) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/NOTICE +5 -0
  3. package/README.md +2 -1
  4. package/THIRD-PARTY-LICENSES.md +59 -0
  5. package/benchmarks/fixtures/browser/README.md +1 -1
  6. package/benchmarks/fixtures/desktop/README.md +1 -1
  7. package/docs/whatsapp.md +153 -18
  8. package/hooks/claude-code/pre-compact.mjs +11 -0
  9. package/hooks/claude-code/prompt-submit.mjs +60 -184
  10. package/hooks/claude-code/session-start.mjs +73 -16
  11. package/hooks/claude-code/shared.mjs +26 -3
  12. package/hooks/claude-code/stop.mjs +5 -5
  13. package/lib/child-path.js +303 -0
  14. package/lib/claude-hooks.js +2 -1
  15. package/lib/data-home-migration.js +2 -0
  16. package/lib/desktop-app.js +265 -0
  17. package/lib/external-tools.js +7 -3
  18. package/lib/log-redact.js +102 -0
  19. package/lib/packaged-runtime.js +138 -11
  20. package/lib/start-launcher.js +88 -1
  21. package/mcp-server/dist/http.d.ts +3 -1
  22. package/mcp-server/dist/http.d.ts.map +1 -1
  23. package/mcp-server/dist/http.js +15 -4
  24. package/mcp-server/dist/http.js.map +1 -1
  25. package/mcp-server/dist/index.d.ts.map +1 -1
  26. package/mcp-server/dist/index.js +9 -6
  27. package/mcp-server/dist/index.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/codex-config-heal.d.ts +5 -1
  33. package/mcp-server/dist/services/codex-config-heal.d.ts.map +1 -1
  34. package/mcp-server/dist/services/codex-config-heal.js +41 -4
  35. package/mcp-server/dist/services/codex-config-heal.js.map +1 -1
  36. package/mcp-server/dist/services/identity.d.ts +11 -0
  37. package/mcp-server/dist/services/identity.d.ts.map +1 -1
  38. package/mcp-server/dist/services/identity.js +24 -0
  39. package/mcp-server/dist/services/identity.js.map +1 -1
  40. package/mcp-server/dist/services/neural-interface.d.ts +13 -0
  41. package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
  42. package/mcp-server/dist/services/neural-interface.js +34 -2
  43. package/mcp-server/dist/services/neural-interface.js.map +1 -1
  44. package/mcp-server/dist/services/typesafe-config.d.ts +1 -1
  45. package/mcp-server/dist/services/typesafe-config.d.ts.map +1 -1
  46. package/mcp-server/dist/services/typesafe-config.js +4 -1
  47. package/mcp-server/dist/services/typesafe-config.js.map +1 -1
  48. package/mcp-server/dist/tools/agents.d.ts +10 -7
  49. package/mcp-server/dist/tools/agents.d.ts.map +1 -1
  50. package/mcp-server/dist/tools/agents.js +34 -13
  51. package/mcp-server/dist/tools/agents.js.map +1 -1
  52. package/mcp-server/dist/tools/whatsapp-send-file.d.ts +17 -0
  53. package/mcp-server/dist/tools/whatsapp-send-file.d.ts.map +1 -0
  54. package/mcp-server/dist/tools/whatsapp-send-file.js +44 -0
  55. package/mcp-server/dist/tools/whatsapp-send-file.js.map +1 -0
  56. package/mcp-server/dist/tui.js +2 -1
  57. package/mcp-server/dist/tui.js.map +1 -1
  58. package/mcp-server/dist/version.d.ts +5 -0
  59. package/mcp-server/dist/version.d.ts.map +1 -0
  60. package/mcp-server/dist/version.js +21 -0
  61. package/mcp-server/dist/version.js.map +1 -0
  62. package/mcp-server/package-lock.json +2 -2
  63. package/mcp-server/package.json +1 -3
  64. package/mcp-server/run.mjs +15 -9
  65. package/mcp-server/src/http.ts +18 -3
  66. package/mcp-server/src/index.ts +9 -6
  67. package/mcp-server/src/services/budget-judgments.ts +183 -0
  68. package/mcp-server/src/services/codex-config-heal.ts +35 -4
  69. package/mcp-server/src/services/identity.ts +27 -0
  70. package/mcp-server/src/services/neural-interface.ts +34 -2
  71. package/mcp-server/src/services/typesafe-config.ts +4 -1
  72. package/mcp-server/src/tools/agents.ts +33 -14
  73. package/mcp-server/src/tools/whatsapp-send-file.ts +51 -0
  74. package/mcp-server/src/tui.ts +2 -1
  75. package/mcp-server/src/version.ts +22 -0
  76. package/neural-interface/i18n/en.json +2126 -209
  77. package/neural-interface/i18n/pt-BR.json +2123 -207
  78. package/neural-interface/lib/account-usage.js +163 -0
  79. package/neural-interface/lib/assistant-api.js +316 -57
  80. package/neural-interface/lib/assistant-brains/claude.js +19 -2
  81. package/neural-interface/lib/assistant-brains/codex.js +3 -0
  82. package/neural-interface/lib/assistant-brains/opencode.js +17 -4
  83. package/neural-interface/lib/assistant-budget-planner.js +390 -0
  84. package/neural-interface/lib/assistant-budget-split.js +408 -0
  85. package/neural-interface/lib/assistant-budget.js +94 -95
  86. package/neural-interface/lib/assistant-catalog.js +179 -27
  87. package/neural-interface/lib/assistant-config.js +91 -14
  88. package/neural-interface/lib/assistant-dispatch.js +494 -138
  89. package/neural-interface/lib/assistant-hidden-models.js +393 -66
  90. package/neural-interface/lib/assistant-jev.js +26 -3
  91. package/neural-interface/lib/assistant-memory.js +24 -10
  92. package/neural-interface/lib/assistant-persona.js +73 -12
  93. package/neural-interface/lib/assistant-plan-permissions.js +8 -1
  94. package/neural-interface/lib/assistant-pricing.js +21 -6
  95. package/neural-interface/lib/assistant-route-accounts.js +14 -0
  96. package/neural-interface/lib/assistant-route-gate.js +19 -3
  97. package/neural-interface/lib/assistant-router.js +373 -42
  98. package/neural-interface/lib/assistant-runtime.js +488 -59
  99. package/neural-interface/lib/assistant-task-prompt.js +13 -3
  100. package/neural-interface/lib/assistant-test-density.js +142 -0
  101. package/neural-interface/lib/assistant-user-context-budgets.js +123 -0
  102. package/neural-interface/lib/assistant-user-context.js +908 -0
  103. package/neural-interface/lib/assistant-user-knowledge.js +328 -0
  104. package/neural-interface/lib/assistant-user-learn.js +404 -0
  105. package/neural-interface/lib/assistant-user-threads.js +226 -0
  106. package/neural-interface/lib/assistant-user-writer.js +183 -0
  107. package/neural-interface/lib/augmented-path.js +317 -53
  108. package/neural-interface/lib/browser-background-tab.js +134 -0
  109. package/neural-interface/lib/browser-screenshot.js +678 -61
  110. package/neural-interface/lib/claude-accounts.js +342 -31
  111. package/neural-interface/lib/claude-agent-bridge.js +123 -9
  112. package/neural-interface/lib/claude-executable.js +6 -1
  113. package/neural-interface/lib/claude-model-catalog.js +33 -5
  114. package/neural-interface/lib/claude-panel-auth.js +221 -0
  115. package/neural-interface/lib/claude-profile-api-key.js +62 -0
  116. package/neural-interface/lib/claude-temporary.js +46 -7
  117. package/neural-interface/lib/cli-install-api.js +137 -0
  118. package/neural-interface/lib/cli-install.js +797 -0
  119. package/neural-interface/lib/cli-path.js +130 -0
  120. package/neural-interface/lib/cli-resolver.js +744 -0
  121. package/neural-interface/lib/cli-update-planner.js +143 -7
  122. package/neural-interface/lib/cloudflared/install.js +533 -0
  123. package/neural-interface/lib/cloudflared/manager.js +545 -0
  124. package/neural-interface/lib/cloudflared/pins.js +115 -0
  125. package/neural-interface/lib/cloudflared/pins.json +63 -0
  126. package/neural-interface/lib/cloudflared/tunnel.js +265 -0
  127. package/neural-interface/lib/codex-account-auth.js +178 -0
  128. package/neural-interface/lib/codex-accounts.js +489 -0
  129. package/neural-interface/lib/codex-capabilities.js +2 -1
  130. package/neural-interface/lib/codex-compat-rpc.js +8 -2
  131. package/neural-interface/lib/codex-mcp-approvals.js +5 -1
  132. package/neural-interface/lib/codex-panel-auth.js +62 -0
  133. package/neural-interface/lib/codex-session-settings.js +1 -1
  134. package/neural-interface/lib/codex-settings-schema.js +120 -0
  135. package/neural-interface/lib/desktop/config.js +3 -0
  136. package/neural-interface/lib/editor-completion-endpoint.js +264 -0
  137. package/neural-interface/lib/editor-completion-opencode.js +436 -0
  138. package/neural-interface/lib/editor-completion.js +714 -0
  139. package/neural-interface/lib/editor-config.js +149 -0
  140. package/neural-interface/lib/editor-files-api.js +268 -0
  141. package/neural-interface/lib/editor-git-api.js +134 -0
  142. package/neural-interface/lib/file-explorer-api.js +1039 -0
  143. package/neural-interface/lib/file-explorer-system.js +355 -0
  144. package/neural-interface/lib/file-explorer-trash.ps1 +85 -0
  145. package/neural-interface/lib/file-explorer-watch.js +239 -0
  146. package/neural-interface/lib/git-bash/bzip2.js +339 -0
  147. package/neural-interface/lib/git-bash/claude-settings.js +73 -0
  148. package/neural-interface/lib/git-bash/extract-worker.js +34 -0
  149. package/neural-interface/lib/git-bash/install.js +529 -0
  150. package/neural-interface/lib/git-bash/licenses/COPYING +360 -0
  151. package/neural-interface/lib/git-bash/licenses/LGPL-2.1 +511 -0
  152. package/neural-interface/lib/git-bash/manager.js +268 -0
  153. package/neural-interface/lib/git-bash/pins.js +206 -0
  154. package/neural-interface/lib/git-bash/pins.json +34 -0
  155. package/neural-interface/lib/git-bash/resolver.js +194 -0
  156. package/neural-interface/lib/git-diff-api.js +103 -0
  157. package/neural-interface/lib/git-read.js +234 -0
  158. package/neural-interface/lib/greeting/api.js +89 -0
  159. package/neural-interface/lib/greeting/budgets.js +90 -0
  160. package/neural-interface/lib/greeting/engine.js +461 -0
  161. package/neural-interface/lib/greeting/facts.js +320 -0
  162. package/neural-interface/lib/greeting/sources.js +252 -0
  163. package/neural-interface/lib/greeting/writer.js +139 -0
  164. package/neural-interface/lib/http-guards.js +189 -13
  165. package/neural-interface/lib/install-details.js +145 -0
  166. package/neural-interface/lib/machine-names.js +88 -0
  167. package/neural-interface/lib/mcp-installer.js +14 -2
  168. package/neural-interface/lib/memory-api.js +31 -7
  169. package/neural-interface/lib/native-loop-providers.js +26 -8
  170. package/neural-interface/lib/native-loop-runtime.js +9 -4
  171. package/neural-interface/lib/os-path.js +319 -0
  172. package/neural-interface/lib/plugin-installer.js +4 -2
  173. package/neural-interface/lib/project-storage.js +5 -7
  174. package/neural-interface/lib/provider-panel-api-key-auth.js +92 -0
  175. package/neural-interface/lib/provider-panel-terminal-auth.js +95 -0
  176. package/neural-interface/lib/pty-host/core.js +2 -1
  177. package/neural-interface/lib/pty-host/manager.js +27 -2
  178. package/neural-interface/lib/remote-policy.js +20 -11
  179. package/neural-interface/lib/request-gate.js +589 -0
  180. package/neural-interface/lib/session-title-generator.js +4 -3
  181. package/neural-interface/lib/system-about.js +340 -0
  182. package/neural-interface/lib/system-activity.js +66 -0
  183. package/neural-interface/lib/terminal-env.js +11 -3
  184. package/neural-interface/lib/terminal-path.js +55 -0
  185. package/neural-interface/lib/ui-blob-api.js +108 -0
  186. package/neural-interface/lib/ui-blob-store.js +68 -0
  187. package/neural-interface/lib/virtual-socket.js +12 -1
  188. package/neural-interface/lib/whatsapp/baileys-adapter.js +165 -45
  189. package/neural-interface/lib/whatsapp/bridge.js +78 -34
  190. package/neural-interface/lib/whatsapp/commands.js +13 -14
  191. package/neural-interface/lib/whatsapp/config.js +134 -20
  192. package/neural-interface/lib/whatsapp/fake-baileys.js +99 -14
  193. package/neural-interface/lib/whatsapp/host-core.js +168 -35
  194. package/neural-interface/lib/whatsapp/inbound.js +5 -3
  195. package/neural-interface/lib/whatsapp/local-file.js +524 -0
  196. package/neural-interface/lib/whatsapp/manager.js +92 -32
  197. package/neural-interface/lib/whatsapp/paths.js +11 -1
  198. package/neural-interface/lib/whatsapp/protocol.js +65 -5
  199. package/neural-interface/lib/whatsapp/redact.js +63 -0
  200. package/neural-interface/lib/whatsapp/service.js +343 -91
  201. package/neural-interface/lib/whatsapp/transcription.js +463 -0
  202. package/neural-interface/package-lock.json +701 -2
  203. package/neural-interface/package.json +13 -2
  204. package/neural-interface/public/index.html +2 -0
  205. package/neural-interface/public/index2d.html +2 -0
  206. package/neural-interface/public/install-app.html +9 -6
  207. package/neural-interface/public/offline.html +19 -3
  208. package/neural-interface/public/onboarding.html +107 -2
  209. package/neural-interface/public/shared/account-i18n.js +7 -0
  210. package/neural-interface/public/shared/account-menu.js +539 -0
  211. package/neural-interface/public/shared/account-usage.js +19 -0
  212. package/neural-interface/public/shared/account-view.js +335 -0
  213. package/neural-interface/public/shared/agent-runtime-options.js +50 -14
  214. package/neural-interface/public/shared/assistant/asst-accounts.js +182 -184
  215. package/neural-interface/public/shared/assistant/asst-api.js +32 -2
  216. package/neural-interface/public/shared/assistant/asst-automation.js +286 -0
  217. package/neural-interface/public/shared/assistant/asst-brain-picker.js +430 -81
  218. package/neural-interface/public/shared/assistant/asst-budget.js +259 -303
  219. package/neural-interface/public/shared/assistant/asst-composer.js +11 -1
  220. package/neural-interface/public/shared/assistant/asst-mascot.js +140 -61
  221. package/neural-interface/public/shared/assistant/asst-menu.js +27 -11
  222. package/neural-interface/public/shared/assistant/asst-panel.js +198 -42
  223. package/neural-interface/public/shared/assistant/asst-render.js +197 -23
  224. package/neural-interface/public/shared/assistant/asst-route-models.js +108 -0
  225. package/neural-interface/public/shared/assistant/asst-route.js +95 -343
  226. package/neural-interface/public/shared/assistant/asst-routes-editor.js +534 -0
  227. package/neural-interface/public/shared/assistant/asst-sanitize.js +8 -1
  228. package/neural-interface/public/shared/assistant/asst-sidepanel.js +31 -9
  229. package/neural-interface/public/shared/assistant/asst-slash.js +1 -1
  230. package/neural-interface/public/shared/assistant/asst-state.js +186 -2
  231. package/neural-interface/public/shared/assistant/asst-styles.js +247 -11
  232. package/neural-interface/public/shared/blob-store.js +111 -22
  233. package/neural-interface/public/shared/cdx/cdx-commands.js +4 -1
  234. package/neural-interface/public/shared/cdx/cdx-features.js +22 -14
  235. package/neural-interface/public/shared/cdx/cdx-icons.js +2 -0
  236. package/neural-interface/public/shared/cdx/cdx-panel.js +80 -118
  237. package/neural-interface/public/shared/cdx/cdx-render.js +25 -89
  238. package/neural-interface/public/shared/cdx/cdx-settings.js +231 -0
  239. package/neural-interface/public/shared/cdx/cdx-styles.js +164 -107
  240. package/neural-interface/public/shared/cdx/cdx-tabs.js +348 -668
  241. package/neural-interface/public/shared/cdx/cdx-ws.js +2 -0
  242. package/neural-interface/public/shared/claude-account-view.js +3 -0
  243. package/neural-interface/public/shared/cli-install-view.js +392 -0
  244. package/neural-interface/public/shared/cli-status.js +282 -22
  245. package/neural-interface/public/shared/constants.js +6 -1
  246. package/neural-interface/public/shared/cp/cp-events.js +2 -1
  247. package/neural-interface/public/shared/cp/cp-rehydrate.js +2 -1
  248. package/neural-interface/public/shared/cp/cp-styles.js +61 -0
  249. package/neural-interface/public/shared/desktop-bridge.js +39 -0
  250. package/neural-interface/public/shared/desktop-titlebar-page.js +59 -0
  251. package/neural-interface/public/shared/desktop-titlebar-view.js +122 -0
  252. package/neural-interface/public/shared/desktop-titlebar.js +153 -0
  253. package/neural-interface/public/shared/desktop-update-view.js +462 -0
  254. package/neural-interface/public/shared/editor/editor-ai-logic.js +409 -0
  255. package/neural-interface/public/shared/editor/editor-ai.js +619 -0
  256. package/neural-interface/public/shared/editor/editor-commands.js +212 -0
  257. package/neural-interface/public/shared/editor/editor-compare.js +103 -0
  258. package/neural-interface/public/shared/editor/editor-completion-list.js +172 -0
  259. package/neural-interface/public/shared/editor/editor-doc.js +257 -0
  260. package/neural-interface/public/shared/editor/editor-git-logic.js +131 -0
  261. package/neural-interface/public/shared/editor/editor-git.js +95 -0
  262. package/neural-interface/public/shared/editor/editor-languages.js +156 -0
  263. package/neural-interface/public/shared/editor/editor-lint.js +229 -0
  264. package/neural-interface/public/shared/editor/editor-loader.js +51 -0
  265. package/neural-interface/public/shared/editor/editor-markdown.js +90 -0
  266. package/neural-interface/public/shared/editor/editor-menu.js +233 -0
  267. package/neural-interface/public/shared/editor/editor-minimap.js +371 -0
  268. package/neural-interface/public/shared/editor/editor-palette-logic.js +192 -0
  269. package/neural-interface/public/shared/editor/editor-palette.js +125 -0
  270. package/neural-interface/public/shared/editor/editor-panel-logic.js +288 -0
  271. package/neural-interface/public/shared/editor/editor-panel.js +2099 -0
  272. package/neural-interface/public/shared/editor/editor-prefs.js +224 -0
  273. package/neural-interface/public/shared/editor/editor-safety.js +500 -0
  274. package/neural-interface/public/shared/editor/editor-search.js +352 -0
  275. package/neural-interface/public/shared/editor/editor-statusbar.js +144 -0
  276. package/neural-interface/public/shared/editor/editor-tabs-logic.js +331 -0
  277. package/neural-interface/public/shared/editor/editor-tabs.js +233 -0
  278. package/neural-interface/public/shared/editor/editor-theme.js +244 -0
  279. package/neural-interface/public/shared/editor/editor-view.js +332 -0
  280. package/neural-interface/public/shared/explorer/fx-api.js +216 -0
  281. package/neural-interface/public/shared/explorer/fx-links.js +204 -0
  282. package/neural-interface/public/shared/explorer/fx-logic.js +537 -0
  283. package/neural-interface/public/shared/explorer/fx-main.js +865 -0
  284. package/neural-interface/public/shared/explorer/fx-names.js +87 -0
  285. package/neural-interface/public/shared/explorer/fx-ops.js +370 -0
  286. package/neural-interface/public/shared/explorer/fx-popups.js +490 -0
  287. package/neural-interface/public/shared/explorer/fx-tree.js +790 -0
  288. package/neural-interface/public/shared/file-links.js +339 -0
  289. package/neural-interface/public/shared/git-bash-view.js +145 -0
  290. package/neural-interface/public/shared/greeting/greeting-card.js +178 -0
  291. package/neural-interface/public/shared/greeting/greeting-view.js +148 -0
  292. package/neural-interface/public/shared/html-shell.js +161 -165
  293. package/neural-interface/public/shared/i18n.js +19 -1
  294. package/neural-interface/public/shared/install-details-view.js +86 -0
  295. package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -0
  296. package/neural-interface/public/shared/ocp-v2/ocp-v2-greeting.js +47 -0
  297. package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +131 -17
  298. package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -1
  299. package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +22 -0
  300. package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +158 -0
  301. package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +3 -2
  302. package/neural-interface/public/shared/pwa-install-page.js +32 -2
  303. package/neural-interface/public/shared/pwa-install.css +3 -3
  304. package/neural-interface/public/shared/pwa-install.js +100 -1
  305. package/neural-interface/public/shared/settings/settings-about-pane.js +271 -0
  306. package/neural-interface/public/shared/settings/settings-about.js +254 -0
  307. package/neural-interface/public/shared/settings/settings-code-editor-pane.js +412 -0
  308. package/neural-interface/public/shared/settings/settings-code-editor.js +328 -0
  309. package/neural-interface/public/shared/settings/settings-greeting.js +133 -0
  310. package/neural-interface/public/shared/settings/settings-ia.js +33 -4
  311. package/neural-interface/public/shared/settings/settings-user-context.js +154 -0
  312. package/neural-interface/public/shared/showcase-privacy.js +489 -0
  313. package/neural-interface/public/shared/start-bridge.js +238 -19
  314. package/neural-interface/public/shared/storage.js +30 -3
  315. package/neural-interface/public/shared/styles.css +1710 -770
  316. package/neural-interface/public/shared/synabun-mascot.js +68 -58
  317. package/neural-interface/public/shared/tunnel-view.js +167 -0
  318. package/neural-interface/public/shared/ui-claude-panel.js +369 -229
  319. package/neural-interface/public/shared/ui-cli-banner.js +355 -0
  320. package/neural-interface/public/shared/ui-detail.js +15 -0
  321. package/neural-interface/public/shared/ui-explorer.js +22 -0
  322. package/neural-interface/public/shared/ui-file-explorer.js +481 -2496
  323. package/neural-interface/public/shared/ui-file-links.js +103 -0
  324. package/neural-interface/public/shared/ui-git-bash.js +124 -0
  325. package/neural-interface/public/shared/ui-help.js +26 -0
  326. package/neural-interface/public/shared/ui-invite.js +126 -116
  327. package/neural-interface/public/shared/ui-judgments.js +10 -1
  328. package/neural-interface/public/shared/ui-keybinds.js +4 -0
  329. package/neural-interface/public/shared/ui-loading.js +187 -19
  330. package/neural-interface/public/shared/ui-menubar.js +25 -33
  331. package/neural-interface/public/shared/ui-native-loop-router-state.js +11 -0
  332. package/neural-interface/public/shared/ui-native-loop-router.js +15 -2
  333. package/neural-interface/public/shared/ui-navbar.js +48 -22
  334. package/neural-interface/public/shared/ui-provider-auth.js +104 -0
  335. package/neural-interface/public/shared/ui-provider-terminal-auth.js +223 -0
  336. package/neural-interface/public/shared/ui-sessions.js +9 -3
  337. package/neural-interface/public/shared/ui-settings.js +509 -490
  338. package/neural-interface/public/shared/ui-sidepanel-runtime.js +2 -1
  339. package/neural-interface/public/shared/ui-sidepanel-sessions.js +3 -1
  340. package/neural-interface/public/shared/ui-sync.js +22 -0
  341. package/neural-interface/public/shared/ui-terminal.js +40 -5
  342. package/neural-interface/public/shared/ui-tool-updates.js +5 -0
  343. package/neural-interface/public/shared/ui-tunnel.js +130 -0
  344. package/neural-interface/public/shared/ui-tutorial-steps.js +6 -2
  345. package/neural-interface/public/shared/ui-update.js +594 -5
  346. package/neural-interface/public/shared/ui-whatsapp.js +21 -6
  347. package/neural-interface/public/shared/ui-whiteboard.js +12 -0
  348. package/neural-interface/public/shared/ui-worker-end.js +245 -0
  349. package/neural-interface/public/shared/ui-workspaces.js +41 -27
  350. package/neural-interface/public/shared/whatsapp/wa-view.js +51 -8
  351. package/neural-interface/public/shared/worker-end.js +253 -0
  352. package/neural-interface/public/sw.js +2 -2
  353. package/neural-interface/public/variant/2d/main.js +10 -1
  354. package/neural-interface/public/variant/3d/main.js +10 -1
  355. package/neural-interface/public/vendor/codemirror/chunks/apl-CSDKT72Z.js +1 -0
  356. package/neural-interface/public/vendor/codemirror/chunks/asciiarmor-JYYPU5BM.js +1 -0
  357. package/neural-interface/public/vendor/codemirror/chunks/asn1-NRWCZDA6.js +1 -0
  358. package/neural-interface/public/vendor/codemirror/chunks/asterisk-5OU6D4ZQ.js +1 -0
  359. package/neural-interface/public/vendor/codemirror/chunks/brainfuck-ID4N4SYC.js +1 -0
  360. package/neural-interface/public/vendor/codemirror/chunks/chunk-4RZWGCS2.js +1 -0
  361. package/neural-interface/public/vendor/codemirror/chunks/chunk-ACTJM3JR.js +11 -0
  362. package/neural-interface/public/vendor/codemirror/chunks/chunk-S6BMAXLK.js +1 -0
  363. package/neural-interface/public/vendor/codemirror/chunks/chunk-TO2RDOHQ.js +3 -0
  364. package/neural-interface/public/vendor/codemirror/chunks/chunk-US2GMZZQ.js +13 -0
  365. package/neural-interface/public/vendor/codemirror/chunks/chunk-WYYO5ZAJ.js +1 -0
  366. package/neural-interface/public/vendor/codemirror/chunks/chunk-XALZTDJC.js +1 -0
  367. package/neural-interface/public/vendor/codemirror/chunks/chunk-YRNUTRDV.js +1 -0
  368. package/neural-interface/public/vendor/codemirror/chunks/chunk-Z3QOKH62.js +1 -0
  369. package/neural-interface/public/vendor/codemirror/chunks/clike-OWQBSOGL.js +1 -0
  370. package/neural-interface/public/vendor/codemirror/chunks/clojure-KV75UQWC.js +1 -0
  371. package/neural-interface/public/vendor/codemirror/chunks/cmake-GTEP5Y3C.js +1 -0
  372. package/neural-interface/public/vendor/codemirror/chunks/cobol-WCZ7QEGJ.js +1 -0
  373. package/neural-interface/public/vendor/codemirror/chunks/coffeescript-TGLBOT6B.js +1 -0
  374. package/neural-interface/public/vendor/codemirror/chunks/commonlisp-WVVI432V.js +1 -0
  375. package/neural-interface/public/vendor/codemirror/chunks/crystal-S6R6HLKQ.js +1 -0
  376. package/neural-interface/public/vendor/codemirror/chunks/css-PDA2RINP.js +1 -0
  377. package/neural-interface/public/vendor/codemirror/chunks/cypher-HL5QPL4C.js +1 -0
  378. package/neural-interface/public/vendor/codemirror/chunks/d-HHJH2HAJ.js +1 -0
  379. package/neural-interface/public/vendor/codemirror/chunks/diff-MN3A35BY.js +1 -0
  380. package/neural-interface/public/vendor/codemirror/chunks/dist-25SQLBVS.js +3 -0
  381. package/neural-interface/public/vendor/codemirror/chunks/dist-27ZGGJJS.js +1 -0
  382. package/neural-interface/public/vendor/codemirror/chunks/dist-4E52OJIF.js +1 -0
  383. package/neural-interface/public/vendor/codemirror/chunks/dist-6FT73XDC.js +2 -0
  384. package/neural-interface/public/vendor/codemirror/chunks/dist-BE6YGRMW.js +1 -0
  385. package/neural-interface/public/vendor/codemirror/chunks/dist-CJSGKW2O.js +1 -0
  386. package/neural-interface/public/vendor/codemirror/chunks/dist-CRPH2WLI.js +1 -0
  387. package/neural-interface/public/vendor/codemirror/chunks/dist-CTG7JEQN.js +1 -0
  388. package/neural-interface/public/vendor/codemirror/chunks/dist-I3FEVELX.js +1 -0
  389. package/neural-interface/public/vendor/codemirror/chunks/dist-IM5BBSWZ.js +1 -0
  390. package/neural-interface/public/vendor/codemirror/chunks/dist-KERUKTIF.js +1 -0
  391. package/neural-interface/public/vendor/codemirror/chunks/dist-LXTMWZAM.js +1 -0
  392. package/neural-interface/public/vendor/codemirror/chunks/dist-MABASSET.js +1 -0
  393. package/neural-interface/public/vendor/codemirror/chunks/dist-MJVBUZLL.js +3 -0
  394. package/neural-interface/public/vendor/codemirror/chunks/dist-MNB3WZVU.js +1 -0
  395. package/neural-interface/public/vendor/codemirror/chunks/dist-QYWXOE3U.js +7 -0
  396. package/neural-interface/public/vendor/codemirror/chunks/dist-TEBOFWLZ.js +1 -0
  397. package/neural-interface/public/vendor/codemirror/chunks/dist-UNXFROM3.js +1 -0
  398. package/neural-interface/public/vendor/codemirror/chunks/dist-XL2SLQO6.js +1 -0
  399. package/neural-interface/public/vendor/codemirror/chunks/dist-XO42Y3AP.js +6 -0
  400. package/neural-interface/public/vendor/codemirror/chunks/dist-Y2WWDWJK.js +1 -0
  401. package/neural-interface/public/vendor/codemirror/chunks/dist-YFEZKWMU.js +1 -0
  402. package/neural-interface/public/vendor/codemirror/chunks/dist-ZY7SWQO6.js +1 -0
  403. package/neural-interface/public/vendor/codemirror/chunks/dockerfile-3Y4R4NCH.js +1 -0
  404. package/neural-interface/public/vendor/codemirror/chunks/dtd-5343GJ4P.js +1 -0
  405. package/neural-interface/public/vendor/codemirror/chunks/dylan-FI2CXSW2.js +1 -0
  406. package/neural-interface/public/vendor/codemirror/chunks/ebnf-GNQ77YWA.js +1 -0
  407. package/neural-interface/public/vendor/codemirror/chunks/ecl-MRPUAE2L.js +1 -0
  408. package/neural-interface/public/vendor/codemirror/chunks/eiffel-DZROES27.js +1 -0
  409. package/neural-interface/public/vendor/codemirror/chunks/elm-4KICRFKQ.js +1 -0
  410. package/neural-interface/public/vendor/codemirror/chunks/erlang-3IHYC263.js +1 -0
  411. package/neural-interface/public/vendor/codemirror/chunks/factor-C6D3E5UK.js +1 -0
  412. package/neural-interface/public/vendor/codemirror/chunks/fcl-VYTWUJMI.js +1 -0
  413. package/neural-interface/public/vendor/codemirror/chunks/forth-ZBO2EH5M.js +1 -0
  414. package/neural-interface/public/vendor/codemirror/chunks/fortran-5NDCRWIK.js +1 -0
  415. package/neural-interface/public/vendor/codemirror/chunks/gas-SKRMOXFP.js +1 -0
  416. package/neural-interface/public/vendor/codemirror/chunks/gherkin-L45YXZLW.js +1 -0
  417. package/neural-interface/public/vendor/codemirror/chunks/groovy-GLPTLN44.js +1 -0
  418. package/neural-interface/public/vendor/codemirror/chunks/haskell-E7NF7P4Y.js +1 -0
  419. package/neural-interface/public/vendor/codemirror/chunks/haxe-K2NVDOB6.js +1 -0
  420. package/neural-interface/public/vendor/codemirror/chunks/http-Q6DRQIJB.js +1 -0
  421. package/neural-interface/public/vendor/codemirror/chunks/idl-MZYNJVLN.js +1 -0
  422. package/neural-interface/public/vendor/codemirror/chunks/javascript-6YRYK2HR.js +1 -0
  423. package/neural-interface/public/vendor/codemirror/chunks/julia-HXEL2T5G.js +1 -0
  424. package/neural-interface/public/vendor/codemirror/chunks/livescript-MV7CI2JZ.js +1 -0
  425. package/neural-interface/public/vendor/codemirror/chunks/lua-E36NHOOD.js +1 -0
  426. package/neural-interface/public/vendor/codemirror/chunks/mathematica-3XOZZCMC.js +1 -0
  427. package/neural-interface/public/vendor/codemirror/chunks/mbox-ODYGFKS7.js +1 -0
  428. package/neural-interface/public/vendor/codemirror/chunks/mirc-WB43AWF5.js +1 -0
  429. package/neural-interface/public/vendor/codemirror/chunks/mllike-ZT6ET7ZH.js +1 -0
  430. package/neural-interface/public/vendor/codemirror/chunks/modelica-LLMZPFGA.js +1 -0
  431. package/neural-interface/public/vendor/codemirror/chunks/mscgen-2OPNNYFH.js +1 -0
  432. package/neural-interface/public/vendor/codemirror/chunks/mumps-6P3HWJH6.js +1 -0
  433. package/neural-interface/public/vendor/codemirror/chunks/nginx-TCGKQTRW.js +1 -0
  434. package/neural-interface/public/vendor/codemirror/chunks/nsis-ATIGIXTJ.js +1 -0
  435. package/neural-interface/public/vendor/codemirror/chunks/ntriples-5PLBI5OV.js +1 -0
  436. package/neural-interface/public/vendor/codemirror/chunks/octave-QF2S3NL6.js +1 -0
  437. package/neural-interface/public/vendor/codemirror/chunks/oz-JFIVFFH2.js +1 -0
  438. package/neural-interface/public/vendor/codemirror/chunks/pascal-JG6SW76V.js +1 -0
  439. package/neural-interface/public/vendor/codemirror/chunks/perl-4B3IWVVO.js +1 -0
  440. package/neural-interface/public/vendor/codemirror/chunks/pig-ABEBH4MI.js +1 -0
  441. package/neural-interface/public/vendor/codemirror/chunks/powershell-H32XE7TL.js +1 -0
  442. package/neural-interface/public/vendor/codemirror/chunks/properties-NN644MMA.js +1 -0
  443. package/neural-interface/public/vendor/codemirror/chunks/protobuf-YKWQK2J3.js +1 -0
  444. package/neural-interface/public/vendor/codemirror/chunks/pug-RIYXEKFW.js +1 -0
  445. package/neural-interface/public/vendor/codemirror/chunks/puppet-JZQ5WPEV.js +1 -0
  446. package/neural-interface/public/vendor/codemirror/chunks/python-EBCGGHAC.js +1 -0
  447. package/neural-interface/public/vendor/codemirror/chunks/q-5UMH2YQY.js +1 -0
  448. package/neural-interface/public/vendor/codemirror/chunks/r-7XMGG453.js +1 -0
  449. package/neural-interface/public/vendor/codemirror/chunks/rpm-IEV7TSLR.js +1 -0
  450. package/neural-interface/public/vendor/codemirror/chunks/ruby-T4SPFPNM.js +1 -0
  451. package/neural-interface/public/vendor/codemirror/chunks/sas-GEDX67ET.js +1 -0
  452. package/neural-interface/public/vendor/codemirror/chunks/scheme-FTLOWKPC.js +1 -0
  453. package/neural-interface/public/vendor/codemirror/chunks/shell-HUFRKFSJ.js +1 -0
  454. package/neural-interface/public/vendor/codemirror/chunks/sieve-P5QUDVYO.js +1 -0
  455. package/neural-interface/public/vendor/codemirror/chunks/smalltalk-2SORJNQI.js +1 -0
  456. package/neural-interface/public/vendor/codemirror/chunks/solr-M22TGAR5.js +1 -0
  457. package/neural-interface/public/vendor/codemirror/chunks/sparql-4M3KL752.js +1 -0
  458. package/neural-interface/public/vendor/codemirror/chunks/spreadsheet-3K23LA4N.js +1 -0
  459. package/neural-interface/public/vendor/codemirror/chunks/sql-VHRFMUBI.js +1 -0
  460. package/neural-interface/public/vendor/codemirror/chunks/stex-QZDAQUY2.js +1 -0
  461. package/neural-interface/public/vendor/codemirror/chunks/stylus-7ZDKAKBD.js +1 -0
  462. package/neural-interface/public/vendor/codemirror/chunks/swift-WCLCLGMR.js +1 -0
  463. package/neural-interface/public/vendor/codemirror/chunks/tcl-JLMU6WOK.js +1 -0
  464. package/neural-interface/public/vendor/codemirror/chunks/textile-4CHDKZ4T.js +1 -0
  465. package/neural-interface/public/vendor/codemirror/chunks/tiddlywiki-DKMCZZQ4.js +1 -0
  466. package/neural-interface/public/vendor/codemirror/chunks/tiki-F4JIG36Q.js +1 -0
  467. package/neural-interface/public/vendor/codemirror/chunks/toml-BHMHTIM2.js +1 -0
  468. package/neural-interface/public/vendor/codemirror/chunks/troff-YQ2KV5NT.js +1 -0
  469. package/neural-interface/public/vendor/codemirror/chunks/ttcn-ZHRCVFJY.js +1 -0
  470. package/neural-interface/public/vendor/codemirror/chunks/ttcn-cfg-KJOVTY4X.js +1 -0
  471. package/neural-interface/public/vendor/codemirror/chunks/turtle-535P5N6I.js +1 -0
  472. package/neural-interface/public/vendor/codemirror/chunks/vb-76UMQHOT.js +1 -0
  473. package/neural-interface/public/vendor/codemirror/chunks/vbscript-CGNDTK6Z.js +1 -0
  474. package/neural-interface/public/vendor/codemirror/chunks/velocity-VSJDO5T5.js +1 -0
  475. package/neural-interface/public/vendor/codemirror/chunks/verilog-4T6ETXIP.js +1 -0
  476. package/neural-interface/public/vendor/codemirror/chunks/vhdl-T7FNAXUN.js +1 -0
  477. package/neural-interface/public/vendor/codemirror/chunks/webidl-P6MJSJ6J.js +1 -0
  478. package/neural-interface/public/vendor/codemirror/chunks/xquery-UOVILRGN.js +1 -0
  479. package/neural-interface/public/vendor/codemirror/chunks/yacas-CV2APROL.js +1 -0
  480. package/neural-interface/public/vendor/codemirror/chunks/z80-3KFNVM4M.js +1 -0
  481. package/neural-interface/public/vendor/codemirror/codemirror-6.43.14-75f05e67.min.js +2 -0
  482. package/neural-interface/public/vendor/codemirror/manifest.json +60 -0
  483. package/neural-interface/scripts/build-vendor.mjs +78 -2
  484. package/neural-interface/scripts/vendor-codemirror-entry.js +121 -0
  485. package/neural-interface/server.js +2085 -1629
  486. package/neural-interface/templates/rulesets/README.md +1 -1
  487. package/package.json +5 -8
  488. package/setup.js +53 -15
  489. package/benchmarks/browser-live-results.json +0 -79
  490. package/benchmarks/browser-v2-results.json +0 -258
  491. package/neural-interface/lib/codex-capabilities.d.ts +0 -41
  492. package/neural-interface/public/category-logos/claude.svg +0 -1
  493. package/neural-interface/public/category-logos/gemini-color.svg +0 -1
  494. package/neural-interface/public/category-logos/openai.svg +0 -1
  495. package/neural-interface/public/category-logos/synabun.png +0 -0
  496. package/neural-interface/public/claude.svg +0 -1
  497. package/neural-interface/public/gallery.svg +0 -6
  498. package/neural-interface/public/leonardoai.svg +0 -1
  499. package/neural-interface/public/mcp.svg +0 -4
  500. package/neural-interface/public/opencode-logo-dark-square.svg +0 -1
  501. package/neural-interface/public/pin-svgrepo-com.svg +0 -25
  502. package/neural-interface/public/sessionicon.svg +0 -8
  503. package/neural-interface/public/toolbar-album.svg +0 -8
  504. package/neural-interface/public/toolbar-question.svg +0 -6
  505. package/neural-interface/public/toolbar-sessions.svg +0 -6
  506. package/neural-interface/scripts/codex-protocol-fixture.mjs +0 -83
  507. package/skills/synabun/synabunicon.png +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,100 @@
1
+ # SynaBun v.2.0.7
2
+
3
+ 2.0.7 brings the SynaBun desktop app for macOS, Windows and Linux, with updates that install themselves and a Windows installer that shows every step. SynaBun now finds every installed Claude Code, Codex and OpenCode the same way and installs a missing one with one click, you can sign in from the Claude and Codex panels, and the WhatsApp Assistant can send you files and understand voice notes.
4
+
5
+ ## ✨ New
6
+
7
+ - **SynaBun desktop app** — The installers are now a real desktop app: SynaBun opens in its own window on macOS (Apple Silicon and Intel), Windows x64 and Linux x64, around the same server, runtime and interface as before. The window has SynaBun's own title bar instead of the system's: the window buttons sit at its right end on Windows and Linux, where a button at the left opens the menu, and the traffic lights sit inside it on macOS. Closing the window keeps SynaBun running; the app menu, the Dock or the tray bring it back. npm and Git installs are unchanged.
8
+ - **Updates that install themselves** — The desktop app checks the public releases shortly after it starts and every few hours. A newer version downloads at once. When SynaBun is idle, a one-minute notice with **Later** counts down, then the update installs, the window reopens as it was and a notice says what it updated to. While work is running it waits, and it also installs when you quit or at the next start. **Install now** is in the update dialog and the menus. If an update fails, the version you have keeps running, you get a link to download the new one yourself, and it tries again later.
9
+ - **A Windows installer that shows every step** — The installer lists each step as it goes, with the seconds since it started: the check for a running SynaBun, the unpacking with its progress, each part as it is put in place, the shortcuts and the **Settings → Apps** entry. The uninstaller lists its steps too, and the whole list is saved to a log you can open from the last page. If SynaBun is running, the installer asks once and closes it for you, letting the server shut down cleanly first; it never touches a SynaBun installed with npm or Git. Installing is faster: the files are unpacked straight into place, and the app carries about 6,600 fewer files. An install counts as finished only when every file is in place, and an update that cannot finish leaves the version you have running. Updates from the app stay silent.
10
+ - **See what the desktop app is doing while it starts** — **Details** on the start screen shows a live log of the start: the checks, the browser download with its progress, the build and the server's first lines. It opens by itself on the first start and when something fails, and keeps the real error. In the setup wizard, **Details** under Environment Check and Install & Build show the commands that ran with their answers, and what the app came with.
11
+ - **npm and npx come with the desktop app** — They work even when your computer has no Node.js. Your own npm and tools always come first; the bundled ones are only a fallback, and their global installs go to a folder in SynaBun's data folder instead of into the app, unless you set an npm prefix of your own.
12
+ - **Git Bash for Claude Code on Windows** — On a Windows PC without Git for Windows, Claude Code ran its hooks in PowerShell, where SynaBun's hooks do not work. SynaBun now brings its own unchanged copy of Git for Windows and uses it only when your PC has none: the Windows installer carries it, and an npm install on Windows downloads it once and checks it against a pinned checksum before unpacking it. A Git you installed yourself always wins, and **Settings → AI connections → Executable paths** shows which one Claude Code gets.
13
+ - **Settings → About** — A new last page in Settings shows your version and how SynaBun is installed, with **Check for updates** and **Copy info** (version, install type, Node.js, SQLite, the desktop app's Electron and Chromium, your system and the dependency versions; no paths, ports, keys or settings). It also has the project's links, system details and every dependency with its version and license.
14
+ - **SynaBun finds your Claude Code, Codex and OpenCode** — The side panels, Settings and every launcher find each CLI the same way: the path you set in Settings first, then your PATH as a new terminal sees it, then the folders the official installers use. A CLI that is found but does not start shows its real error instead of "not installed".
15
+ - **One-click install of a missing CLI** — When Claude Code, Codex or OpenCode is not installed, its panel shows a banner with **Install**, which runs the vendor's official installer for your system and shows its progress, next to the manual command and the install guide. The OpenCode panel gets this banner too. **Add to PATH** makes an installed CLI available to new terminals.
16
+ - **Sign in from the Claude and Codex panels** — `/login` and the new account button open a sign-in card that drives each CLI's own sign-in: open the sign-in page, finish in your browser, and the panel shows who is signed in. Codex also offers a device code. Tokens stay with Claude Code and Codex, SynaBun stores none, and sign-in cards are never saved into stored chats.
17
+ - **Auto · most usage left** — Claude Code and Codex routes and the composer's model menu can pick the subscription account with the most usage left. Usage windows show beside each account, and an exhausted account falls back to another one of the same provider.
18
+ - **The WhatsApp Assistant can send you files** — Ask for a file on your computer and the Assistant sends it to your WhatsApp chat as a real attachment, with an optional caption: pictures, videos and audio as such, anything else as a document with its name. Files go only to your own chat, files over 100 MB are refused, and SynaBun's own data, your WhatsApp session, your AI tools' settings and keys, and system folders are never sent, whatever path leads to them.
19
+ - **WhatsApp voice notes** — Voice notes and audio messages can now be transcribed on your computer and reach the Assistant as text. Turn on **Transcribe voice notes** in **Settings → Messages → WhatsApp**; it uses your own FFmpeg and whisper.cpp with a model you provide, and no audio leaves your computer. The status line says what is missing. A transcribed note is never taken as a command or an approval, and typed commands such as `/stop` never wait behind one.
20
+ - **Language and showcase addresses** — Adding `?lang=pt-BR` to the interface's address opens it in that language for that page only. `?showcase` opens it without saving any change to your layout and blurs your memories, sessions, transcripts, terminal output and other personal content, for screenshots and recordings.
21
+
22
+ ## 🛠 Fixed
23
+
24
+ - **A named Claude profile could run as another account** — A side-panel tab on a named Claude profile could run with the credentials SynaBun itself was started with. It now runs only under its own profile.
25
+ - **Codex could start without SynaBun's tools** — The panels, the Assistant, workers, schedules and loops now register SynaBun's MCP connection with Codex when it is missing, without replacing one you connected yourself.
26
+ - **Terminals did not see newly installed tools** — Every new terminal reads the current system PATH, so a CLI installed after SynaBun started is found.
27
+ - **The MCP server reported version 2.0.0** — It now reports SynaBun's real version.
28
+ - **The WhatsApp link stopped after a connection error** — The link no longer gives up on its own after a stream or connection error from WhatsApp, a burst of reconnects or repeated restarts of the connector. It keeps retrying with your saved session and recovers without **Reconnect**, and stops only when WhatsApp says the session is no longer valid.
29
+ - **Answers to WhatsApp got lost when a task moved to another model** — When the Assistant continued a task you sent from WhatsApp on another model, its answer did not reach your phone. It now comes back once to the chat that started it.
30
+ - **The memory search sat under the menu** — In the Map view, above all in Portuguese, the search field was drawn under the menu labels and could not be used. It now has its own place in the bar at every width and in every language, and turns into a search icon when there is little room.
31
+
32
+ ## ⚙️ Changed
33
+
34
+ - **One Assistant budget per session** — Five separate caps are replaced by one budget per session, or **No limit**. The Budget chip next to Project sets it for a new session, and the spend chip, the Budget menu and `/budget` show how it is shared between Claude Code, Codex and OpenCode and what is left. When one provider's share runs out, the rest is rebalanced.
35
+ - **The Assistant mascot follows Project and Budget** — It looks at the Project and Budget chips you point at, and reacts once when a budget is saved.
36
+ - **A dispatched run's time limit counts work time only** — The limit of a run the Assistant dispatches now runs only while the worker is working. Time in the queue, idle time between follow-ups and time waiting for your answer to a permission or a question no longer use it up, so a late follow-up is not cut off midway. The limit is never below 20 minutes.
37
+ - **WhatsApp Autonomous stays on until you turn it off** — Autonomous no longer ends after 8 hours: it stays on until you lower it in Settings. `/pause` pauses messages and `/stop` stops the current task, and neither changes the level. A level that was turned on under the old 8-hour rule comes back as Ask after the update.
38
+
39
+ ---
40
+
41
+ # SynaBun v.2.0.5
42
+
43
+ 2.0.5 replaces the File Explorer's editor with a full code editor built on CodeMirror 6 and rebuilds the File Explorer around it. It also adds a greeting SynaBun writes for every agent and an Assistant that learns how you work. The public address now works without installing cloudflared, and the server checks who is calling on every route and every live connection.
44
+
45
+ ## ✨ New
46
+
47
+ - **Code editor on CodeMirror 6** — The editor that opens from the File Explorer is rebuilt and ships with SynaBun. Typing keeps up in a 1 MB file, and line numbers stay on their row with word wrap on. It adds several cursors, select next occurrence, folding, find with regular expressions and highlighting for every language CodeMirror knows. Files open in tabs that keep their own undo history and come back per project. Unsaved text is copied a second after the last change and offered back after a reload or a crash. When a file changes on disk under unsaved text, you get **Compare / Reload / Keep mine**, and a save over newer text is refused. Lines changed since the last commit are marked, and **Diff** shows the file against that commit with **Revert change** on each difference. The editor also has a minimap, JSON problem marks, a **View** menu, a command palette (`F1`) and go to file (`Cmd/Ctrl+P`). CRLF line endings and byte-order marks are kept, files that are not UTF-8 text are refused, and files up to 8 MB open. Preferences are in **Settings → Code editor → Editing**. `Cmd/Ctrl+D` now selects the next occurrence; duplicating a line is `Shift+Alt+Down`.
48
+ - **AI autocomplete in the code editor** — Grey text appears after the caret when you pause; `Tab` accepts it and `Esc` dismisses it. It ships off: switching it on in **Settings → Code editor → AI autocomplete** is your consent to send the code around the caret to the model you choose. Files on the editable **Never sent** list (`.env`, keys, certificates) and text that holds a private key are never sent. Suggestions come from an OpenCode model, through a separate serve that has no tools, or from your own Ollama or OpenAI-compatible endpoint.
49
+ - **File Explorer rebuilt** — The tree follows the disk: what an agent creates, changes or deletes shows within a second or two. It works fully from the keyboard, remembers each project's tree, and shows git marks at every level, with a **Changed files only** filter. You can create, rename, duplicate, move and copy files, and drop them in from your computer; a name that is taken is asked about. **Delete**, and anything a replace removes, go to the system Trash; where the Trash cannot take something, you are asked before it is removed for good. A move to another disk is refused, registered project folders are never renamed, moved or deleted, and a renamed file keeps its open tab and unsaved text. **Send to…** hands files to Claude Code, Codex, OpenCode or the Assistant. A click on a file opens its menu, as before; a double-click opens the file.
50
+ - **File links open in the code editor** — In the Assistant, Claude Code, Codex and OpenCode panels, a link to a text file opens it in the code editor at its line and column (`:12:3`, `#L12`). If the editor cannot open a path, a toast says why.
51
+ - **A greeting written by SynaBun, for every agent** — When you come back to a project after an hour away, a fresh session opens with a sentence or two: what you were doing, what was left open, and what finished or failed meanwhile. It shows in the Assistant, the three CLI panels and terminal Claude Code sessions. SynaBun writes it in the background on the cheapest Claude model, so opening a session waits for nothing. **Settings → Automations → Greeting** is one switch, and it shows what a new session would open with. It replaces the three template greetings, and their templates are not carried over.
52
+ - **The Assistant gets to know you** — **Settings → Automations → Automation behavior** has three switches. **Knowledge of you** gives every brain (Claude Code, Codex or OpenCode) a short digest of what SynaBun has learned about you. **Recent-interaction nudges** adds a line when there is something to say, such as where the last conversation stopped. **Show the trace** shows what each turn added, what it cost in tokens and what was learned. Learning reads only what you typed, never what you pasted, and stores one fact per memory in a new `user-knowledge` category. Learning needs AI decisions (a TypeSafe key).
53
+ - **cloudflared comes with SynaBun** — **Start tunnel** now works without installing anything. The installers carry cloudflared. An npm install downloads Cloudflare's release on first use and checks it against pinned checksums, and a file that fails the check is never run. The Share menu and **Settings → Automations → Online access** show the progress, the address and which cloudflared runs. A failure comes with **Try again**. A cloudflared on your PATH is used only when a download is not possible.
54
+
55
+ ## 🛠 Fixed
56
+
57
+ - **A dispatched worker's tab ended on an error line, or on nothing** — Each worker tab now ends with one card: **Task complete** with the result, time and cost, or **Blocked**, **Needs input**, **Task failed** or **Stopped** with the reason. **Back to Assistant** returns you to the session that dispatched the worker. Closing a finished worker's tab now completes its run instead of stopping it.
58
+ - **Restart Server looked like a hang** — **Apps → Restart Server** now shows the restart screen at once and lists each step until the app reloads; other open windows follow. The step-by-step report appears once SynaBun has been stopped and started after this update.
59
+ - **Renamed Assistant sessions were listed under their first prompt** — They are now listed and reopened under their new name, also by `/resume`.
60
+ - **Only one open Assistant session animated** — Every session's mascot now moves at the same time.
61
+ - **Model lists missed models the panels offered** — Model routes and the Assistant's model menu now follow each provider's own list, minus the models you hid, and update without a reload.
62
+ - **A hidden alias hid whatever model it later named** — Hiding `haiku` also hid the newer model once Claude Code moved the alias to it. A hidden alias now hides the model it named when you hid it.
63
+ - **Invite guests could reach some routes meant only for you** — Admin-only areas, MCP server credentials, skill installs and the git routes are now closed to guests, however the address is written. A visitor through a custom invite address needs an invite session. To use that address yourself, sign in with the invite key or use `localhost`.
64
+ - **Reading a repository could start its programs** — Git reads no longer start programs named in a repository's own configuration, such as a file-system monitor, hooks or an external diff tool. A commit still runs its hooks.
65
+ - **Smaller fixes** — A cookie with a stray `%` from another app on `localhost` no longer breaks every request. Memory chips in the Assistant panel open their memory. Deleting an empty folder in the File Explorer works.
66
+
67
+ ## ⚙️ Changed
68
+
69
+ - **The server checks who is calling** — Everything under `/api`, the MCP endpoint and every live connection now answer only requests addressed to this server. That means `localhost`, an IP address, this computer's own names (its `.local` name included), or the tunnel or invite address in use; anything else gets `403 BAD_HOST`. If you reach SynaBun under another name (a `.lan` or Tailscale name, or through a reverse proxy), add `SYNABUN_ALLOWED_HOSTS=<name>` to `~/.synabun/.env`. It takes effect without a restart, and the server's log names a refused name once.
70
+ - **Remote MCP needs its access key** — From the tunnel, a custom invite address or another machine on your network, the MCP endpoint answers only at `/mcp/<access key>`. While no key is set, it does not answer them at all. On this computer `/mcp` works as before. Only SynaBun's own pages on this computer can start or stop the tunnel.
71
+ - **Workspace toolbar** — The top-right toolbar is one compact row: the workspace switcher first, then the tools, a **»** toggle that shows or hides them, and the side-panel buttons. **Hide all toolbars** is gone. Session pills sit in a column under the bar, and nothing in the row hides them. **Snap to grid** and **Tile terminals** moved to the whiteboard rail and the **View** menu.
72
+ - **Model routes explains each mode** — **When to ask** is a radio group. A box above the rows says what the selected mode does with a task that has your choice and with one that does not. Routing itself is unchanged.
73
+
74
+ ---
75
+
76
+ # SynaBun v.2.0.4
77
+
78
+ 2.0.4 lets you set how much testing the Assistant asks of the workers it dispatches, makes `browser_screenshot` answer instead of hanging when the browser cannot produce an image, and stops asking whether to install SynaBun as an app: in Chrome and Edge the browser's own install dialog opens once, from a click you make anyway. It is the first release since 2.0.0.
79
+
80
+ ## ✨ New
81
+
82
+ - **Test density for the Assistant** — A three-bar gauge next to the permission mode in the Assistant's composer sets how much testing dispatched workers are asked to do. **None**: no tests written or run, only a check that the change loads, and the result lists what a person should check. **Light** (the default): only the existing tests that cover the change, and a new test only for a bug fix or for logic that is easy to get wrong. **Standard**: focused tests for the changed behaviour, then the package's regular suite once. **Thorough**: edge cases and failure paths, browser tests for user-facing changes, the whole suite and a live check where possible. The level is kept per session and overrides heavier test instructions in a task, unless testing is what the task delivers. It applies to Quick task, Coding and Complex engineering runs, and the Assistant follows it too: at None or Light it adds no test requirements of its own and reports what was not tested instead of starting a run to verify it. Conversations from WhatsApp run at Light.
83
+ - **Automation tabs can open behind your work** — With `"openTabsInBackground": true` in `browser-config.json`, every tab SynaBun opens in a MoreLogin profile or an attached Chrome opens behind the selected tab, and the window is neither restored nor brought to the front when a run starts. Off by default and not in the Settings form (saving the form keeps it); SynaBun's own browser windows are not affected, and a browser that cannot open a tab this way gets a normal one.
84
+
85
+ ## 🛠 Fixed
86
+
87
+ - **`browser_screenshot` could hang until the caller timed out** — The selected tab of a minimized window, or of a hidden application, does not answer a screenshot command; the tool waited out the whole request and returned a bare timeout, and a capture with a custom size could leave the tab at the capture's size. A capture with no answer in 8 seconds (1.5 when the window is reported minimized) now fails with `SCREENSHOT_NOT_PRESENTING` and names the phase it stopped in and the window state the browser reported. The tab is then put back at its own size; one that cannot be confirmed is closed, and the next browser call opens a fresh one.
88
+ - **Closing tabs could leave a browser session pointing at a closed page** — When the tab chosen to take over was itself closed while the switch was under way, the session kept a page that no longer existed. The switch now picks a tab that is still open, and a session whose last tab closed routes nowhere instead of to a dead page.
89
+
90
+ ## ⚙️ Changed
91
+
92
+ - **SynaBun no longer asks about installing as an app** — In Chrome and Edge, the page the desktop launcher opened, with its **Install as App** button and **Continue to SynaBun** link, no longer stops you: the browser's own install dialog opens once instead, from a press you make anyway. On a first run the launcher hands straight over to the setup wizard, and the dialog opens on the first click that moves the wizard on (**Fresh Install**, **Restore Backup** or **Next**). Once setup is complete it hands over to SynaBun, and the dialog opens on the first click or key press there. Accepted, dismissed or never offered, SynaBun goes on the same way.
93
+ - **The dialog opens once** — The wizard never opens it a second time, and after setup only the page load the launcher handed over opens it: a reload does not, and SynaBun in a normal browser tab never does. A click on a link, a key pressed with Ctrl, Alt or Cmd held, and a function key are left alone there; the next press is used instead. The dialog uses the press it opens from, so when that press was meant to open a popup, the clipboard or a file picker, that action may need a second press.
94
+ - **Apps → Install as App, Safari and other browsers** — The menu item is unchanged while the browser has a dialog ready. Without one, or after the automatic dialog has opened, it leads to a page with a single **Install as App** button, and it still disappears once the app is installed. The browser decides when an install can be offered; when it offers none, nothing opens by itself and the menu item is the way in. Safari shows the instruction (**File → Add to Dock**) and a link to continue, and any other browser one line naming the browsers that can install the app.
95
+
96
+ ---
97
+
1
98
  # SynaBun v.2.0.0
2
99
 
3
100
  SynaBun 2.0 adds a central Assistant that plans work and hands it to Claude Code, Codex and OpenCode, a WhatsApp link to reach it from your phone, a rebuilt memory engine and memory map, optional AI judgments where regexes used to guess, and rebuilt side panels for all three CLIs. It is also the first release on plain semantic versioning.
package/NOTICE CHANGED
@@ -12,6 +12,11 @@ licensed under the Apache License 2.0:
12
12
  Copyright 2012-2024 Microsoft Corporation
13
13
  https://github.com/microsoft/TypeScript
14
14
 
15
+ - cloudflared (Cloudflare's own release binary, unmodified: inside the
16
+ application installers; downloaded on first use by an npm install)
17
+ Copyright (c) Cloudflare, Inc.
18
+ https://github.com/cloudflare/cloudflared
19
+
15
20
  This product also includes software licensed under the MIT License
16
21
  and BSD-2-Clause License. See THIRD-PARTY-LICENSES.md for a complete
17
22
  listing of all third-party software and their respective licenses.
package/README.md CHANGED
@@ -98,6 +98,7 @@ Your AI tool ── MCP ──▶ SynaBun MCP server ──▶ memory.db (SQLite
98
98
  - **Workspace.** Terminals, a file explorer and a whiteboard next to your memories.
99
99
  - **Settings you can search**, in English and Brazilian Portuguese.
100
100
  - **A workspace tour** behind the **?** button.
101
+ - **Showcase mode for screenshots.** Open the interface with `?showcase=1` and it loads your layout without saving any change to it, and blurs your own content: memories, session titles, transcripts, terminal output, account names and anything that looks private (emails, home folder paths, ids, keys, phone numbers, the names of your other projects). `?lang=en` or `?lang=pt-BR` sets the language for that page only. Map labels drawn on the canvas cannot be blurred one by one, and the whiteboard and memory positions you drag still save.
101
102
 
102
103
  ### Coding agents
103
104
 
@@ -158,7 +159,7 @@ Everything SynaBun stores is in one folder outside the app: `~/.synabun` on macO
158
159
 
159
160
  ## Links
160
161
 
161
- - [Changelog](./CHANGELOG.md): what is new in 2.0.0 and before
162
+ - [Changelog](./CHANGELOG.md): what is new in 2.0.7 and before
162
163
  - [Security](./SECURITY.md): security model and how to report a vulnerability
163
164
  - [Contributing](./CONTRIBUTING.md): bug reports and feature requests are welcome as [issues](https://github.com/danilokhury/Synabun/issues); pull requests are not accepted
164
165
  - [Website](https://synabun.ai), [docs](https://synabun.ai/docs) and [blog](https://synabun.ai/blog)
@@ -65,6 +65,18 @@ runtime dependencies in the published package.
65
65
 
66
66
  | Package | Manifest range | Locked version | Declared license | Project |
67
67
  | --- | --- | --- | --- | --- |
68
+ | `@codemirror/autocomplete` | `6.20.3` | 6.20.3 | MIT | [npm](https://www.npmjs.com/package/@codemirror/autocomplete) |
69
+ | `@codemirror/commands` | `6.11.1` | 6.11.1 | MIT | [npm](https://www.npmjs.com/package/@codemirror/commands) |
70
+ | `@codemirror/language` | `6.13.1` | 6.13.1 | MIT | [npm](https://www.npmjs.com/package/@codemirror/language) |
71
+ | `@codemirror/language-data` | `6.5.2` | 6.5.2 | MIT | [npm](https://www.npmjs.com/package/@codemirror/language-data) |
72
+ | `@codemirror/legacy-modes` | `6.5.5` | 6.5.5 | MIT | [npm](https://www.npmjs.com/package/@codemirror/legacy-modes) |
73
+ | `@codemirror/lint` | `6.9.7` | 6.9.7 | MIT | [npm](https://www.npmjs.com/package/@codemirror/lint) |
74
+ | `@codemirror/merge` | `6.12.2` | 6.12.2 | MIT | [npm](https://www.npmjs.com/package/@codemirror/merge) |
75
+ | `@codemirror/search` | `6.7.2` | 6.7.2 | MIT | [npm](https://www.npmjs.com/package/@codemirror/search) |
76
+ | `@codemirror/state` | `6.7.6` | 6.7.6 | MIT | [npm](https://www.npmjs.com/package/@codemirror/state) |
77
+ | `@codemirror/view` | `6.43.14` | 6.43.14 | MIT | [npm](https://www.npmjs.com/package/@codemirror/view) |
78
+ | `@lezer/highlight` | `1.2.5` | 1.2.5 | MIT | [npm](https://www.npmjs.com/package/@lezer/highlight) |
79
+ | `@replit/codemirror-indentation-markers` | `6.5.3` | 6.5.3 | MIT | [npm](https://www.npmjs.com/package/@replit/codemirror-indentation-markers) |
68
80
  | `esbuild` | `^0.28.1` | 0.28.1 | MIT | [npm](https://www.npmjs.com/package/esbuild) |
69
81
  | `three` | `0.169.0` | 0.169.0 | MIT | [npm](https://www.npmjs.com/package/three) |
70
82
 
@@ -79,6 +91,29 @@ runtime dependencies in the published package.
79
91
  | Mermaid | 11.x | Loaded by the browser from a CDN; not distributed | MIT | [GitHub](https://github.com/mermaid-js/mermaid) |
80
92
  | html2canvas | 1.4.1 | Loaded by the browser from a CDN; not distributed | MIT | [GitHub](https://github.com/niklasvh/html2canvas) |
81
93
 
94
+ ### CodeMirror 6
95
+
96
+ The File Explorer's code editor. Bundled by `neural-interface/scripts/build-vendor.mjs` into `neural-interface/public/vendor/codemirror/`; its `manifest.json` lists every package in the bundle with the version that was built (54 packages, all MIT). The ones SynaBun depends on directly:
97
+
98
+ - **@codemirror/state** 6.7.6, **@codemirror/view** 6.43.14, **@codemirror/language** 6.13.1, **@codemirror/commands** 6.11.1, **@codemirror/search** 6.7.2, **@codemirror/autocomplete** 6.20.3, **@codemirror/lint** 6.9.7, **@codemirror/merge** 6.12.2, **@codemirror/language-data** 6.5.2, **@codemirror/legacy-modes** 6.5.5
99
+ - **License:** MIT
100
+ - **Copyright:** Copyright (C) 2018-2021 by Marijn Haverbeke and others
101
+ - **URL:** https://codemirror.net/ (source: https://github.com/codemirror)
102
+ - **@lezer/highlight** 1.2.5
103
+ - **License:** MIT
104
+ - **Copyright:** Copyright (C) 2018 by Marijn Haverbeke and others
105
+ - **URL:** https://lezer.codemirror.net/ (source: https://github.com/lezer-parser)
106
+ - **@replit/codemirror-indentation-markers** 6.5.3
107
+ - **License:** MIT
108
+ - **Copyright:** Copyright (c) 2022 Replit
109
+ - **URL:** https://github.com/replit/codemirror-indentation-markers
110
+
111
+ Brought in by those, and in the bundle too (MIT, Copyright (C) Marijn Haverbeke and others):
112
+
113
+ - the languages `@codemirror/language-data` loads on demand: `@codemirror/lang-angular`, `@codemirror/lang-cpp`, `@codemirror/lang-css`, `@codemirror/lang-go`, `@codemirror/lang-html`, `@codemirror/lang-java`, `@codemirror/lang-javascript`, `@codemirror/lang-jinja`, `@codemirror/lang-json`, `@codemirror/lang-less`, `@codemirror/lang-liquid`, `@codemirror/lang-markdown`, `@codemirror/lang-php`, `@codemirror/lang-python`, `@codemirror/lang-rust`, `@codemirror/lang-sass`, `@codemirror/lang-sql`, `@codemirror/lang-vue`, `@codemirror/lang-wast`, `@codemirror/lang-xml`, `@codemirror/lang-yaml`, and `@codemirror/streamparser`
114
+ - the Lezer parser runtime and grammars: `@lezer/common`, `@lezer/lr`, `@lezer/cpp`, `@lezer/css`, `@lezer/go`, `@lezer/html`, `@lezer/java`, `@lezer/javascript`, `@lezer/json`, `@lezer/markdown`, `@lezer/php`, `@lezer/python`, `@lezer/rust`, `@lezer/sass`, `@lezer/xml`, `@lezer/yaml`
115
+ - `style-mod`, `w3c-keyname`, `crelt` and `@marijn/find-cluster-break`
116
+
82
117
  ## Vendored Code
83
118
 
84
119
  | Component | Location | License | Project |
@@ -92,6 +127,30 @@ The QR Code generator is transpiled to JavaScript from
92
127
  its license header kept. It draws the WhatsApp Link QR codes as SVG on the
93
128
  computer, so no QR payload leaves SynaBun.
94
129
 
130
+ ## Bundled Programs
131
+
132
+ | Program | Version | Delivery | License | Project |
133
+ | --- | --- | --- | --- | --- |
134
+ | cloudflared | 2026.10.0 (pinned in `neural-interface/lib/cloudflared/pins.json` with the SHA-256 of each release file and of the binary inside it) | Cloudflare's own release binary, unmodified. The application installers carry it; an npm or Git install downloads the same release file from Cloudflare's GitHub releases the first time a tunnel is started and checks it against the pinned SHA-256 before it runs | Apache-2.0 | [GitHub](https://github.com/cloudflare/cloudflared) |
135
+ | Git for Windows | 2.56.0.2 (`v2.56.0.windows.2`, pinned in `neural-interface/lib/git-bash/pins.json` with the SHA-256 of its release file and the digest of the tree it holds) | Git for Windows' own release file `Git-2.56.0.2-64-bit.tar.bz2`, unmodified but for five links into `/proc` it leaves out. Windows only: the Windows x64 installer carries it; an npm install on Windows that finds no Git Bash downloads the same release file from Git for Windows' GitHub releases and checks it against the pinned SHA-256 before it is unpacked. macOS and Linux builds carry none | GPL-2.0-only for Git (some of its parts LGPL-2.1); the MSYS2 and MinGW programs and libraries it is built with carry their own licenses (GPL, LGPL, BSD, MIT, Apache-2.0 and others) | [GitHub](https://github.com/git-for-windows/git) |
136
+
137
+ cloudflared opens the Cloudflare quick tunnel behind the public address
138
+ (invite links and remote MCP). It runs as a separate process, started only
139
+ when the user starts a tunnel. Using cloudflared and the tunnel service is
140
+ subject to Cloudflare's own terms.
141
+
142
+ Git for Windows provides the Git Bash and Unix tools Claude Code runs its
143
+ Bash tool and hooks with on Windows, used only on a PC that has no Git for
144
+ Windows of its own. Claude Code starts it; SynaBun itself uses only its git,
145
+ for its own git features on such a PC. Copyright (c) Linus Torvalds and the
146
+ Git contributors; the Git for Windows project and its contributors; the
147
+ authors of each component. The copy carries `LICENSE.txt` (Git's `COPYING`
148
+ and `LGPL-2.1` of the tag) and `SOURCE.txt` (where the source is: Git at the
149
+ pinned tag, https://github.com/git-for-windows/git/tree/v2.56.0.windows.2,
150
+ and the release's "Source code" archives; the other components at
151
+ https://github.com/git-for-windows). The license of each component is in the
152
+ copy's `usr/share/licenses`, `ucrt64/share/licenses` and `ucrt64/doc`.
153
+
95
154
  ## Installed On Demand (Not Distributed)
96
155
 
97
156
  The WhatsApp Link's connector is not part of SynaBun and is not in any SynaBun
@@ -44,7 +44,7 @@ Languages by label: en 48 %, pt 15 %, de 12 %, es 10 %, fr 7 %, tr 3 %, ja 3 %,
44
44
  | `safeRecovery`, `mustNeverAutoExecute` | which gate the case counts toward |
45
45
  | `category`, `tags`, `group`, `lang`, `note` | reporting only; `group` ties correlated variants of one page together |
46
46
 
47
- ## Rules the lint enforces (`mcp-server/tests/browser-fixtures.test.ts`, no API)
47
+ ## Rules the lint enforces (a test not published with this repository, no API)
48
48
 
49
49
  - Unique ids; the expected id exists; no two target cases share a request.
50
50
  - Every forbidden-category case is `mustNeverAutoExecute` and not `safeRecovery`; every `safeRecovery` case's expected link really classifies as plain navigation, its request is not vetoed, and no control on its page addresses the agent.
@@ -43,7 +43,7 @@ It is deterministic: the same script writes the same bytes. Edit the scene or th
43
43
  | `safePress`, `mustNeverPress` | which gate the case counts toward |
44
44
  | `category`, `tags`, `group`, `lang` (intent), `uiLang` (screen), `note` | reporting only |
45
45
 
46
- ## Rules the lint enforces (`mcp-server/tests/desktop-fixtures.test.ts`, no API)
46
+ ## Rules the lint enforces (a test not published with this repository, no API)
47
47
 
48
48
  - Unique ids and refs; the expected and acceptable refs exist; `uiLang` is the app's interface language; no two cases share a request.
49
49
  - Every forbidden-category case is must-never and not a safe press. Every safe press's expected control is plain navigation (`pressable`), its intent names no class, its screen has no open sheet and no text that addresses the agent, and a certain pick of it is eligible.