synabun 2.0.0 → 2.0.5

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 (334) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/NOTICE +5 -0
  3. package/README.md +1 -1
  4. package/THIRD-PARTY-LICENSES.md +46 -0
  5. package/benchmarks/fixtures/browser/README.md +1 -1
  6. package/benchmarks/fixtures/desktop/README.md +1 -1
  7. package/docs/whatsapp.md +2 -2
  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 +20 -0
  12. package/hooks/claude-code/stop.mjs +5 -5
  13. package/lib/start-launcher.js +88 -1
  14. package/mcp-server/package-lock.json +2 -2
  15. package/mcp-server/package.json +1 -3
  16. package/neural-interface/i18n/en.json +1500 -153
  17. package/neural-interface/i18n/pt-BR.json +1498 -152
  18. package/neural-interface/lib/assistant-api.js +62 -6
  19. package/neural-interface/lib/assistant-brains/claude.js +4 -0
  20. package/neural-interface/lib/assistant-catalog.js +179 -27
  21. package/neural-interface/lib/assistant-config.js +31 -2
  22. package/neural-interface/lib/assistant-dispatch.js +62 -13
  23. package/neural-interface/lib/assistant-hidden-models.js +393 -66
  24. package/neural-interface/lib/assistant-memory.js +24 -10
  25. package/neural-interface/lib/assistant-persona.js +6 -2
  26. package/neural-interface/lib/assistant-pricing.js +21 -6
  27. package/neural-interface/lib/assistant-runtime.js +181 -12
  28. package/neural-interface/lib/assistant-task-prompt.js +13 -3
  29. package/neural-interface/lib/assistant-test-density.js +142 -0
  30. package/neural-interface/lib/assistant-user-context-budgets.js +123 -0
  31. package/neural-interface/lib/assistant-user-context.js +908 -0
  32. package/neural-interface/lib/assistant-user-knowledge.js +328 -0
  33. package/neural-interface/lib/assistant-user-learn.js +404 -0
  34. package/neural-interface/lib/assistant-user-threads.js +226 -0
  35. package/neural-interface/lib/assistant-user-writer.js +181 -0
  36. package/neural-interface/lib/browser-background-tab.js +134 -0
  37. package/neural-interface/lib/browser-screenshot.js +678 -61
  38. package/neural-interface/lib/claude-agent-bridge.js +33 -6
  39. package/neural-interface/lib/claude-model-catalog.js +30 -2
  40. package/neural-interface/lib/claude-temporary.js +46 -7
  41. package/neural-interface/lib/cloudflared/install.js +533 -0
  42. package/neural-interface/lib/cloudflared/manager.js +545 -0
  43. package/neural-interface/lib/cloudflared/pins.js +115 -0
  44. package/neural-interface/lib/cloudflared/pins.json +63 -0
  45. package/neural-interface/lib/cloudflared/tunnel.js +265 -0
  46. package/neural-interface/lib/editor-completion-endpoint.js +264 -0
  47. package/neural-interface/lib/editor-completion-opencode.js +436 -0
  48. package/neural-interface/lib/editor-completion.js +714 -0
  49. package/neural-interface/lib/editor-config.js +149 -0
  50. package/neural-interface/lib/editor-files-api.js +268 -0
  51. package/neural-interface/lib/editor-git-api.js +134 -0
  52. package/neural-interface/lib/file-explorer-api.js +1039 -0
  53. package/neural-interface/lib/file-explorer-system.js +355 -0
  54. package/neural-interface/lib/file-explorer-trash.ps1 +85 -0
  55. package/neural-interface/lib/file-explorer-watch.js +239 -0
  56. package/neural-interface/lib/git-diff-api.js +103 -0
  57. package/neural-interface/lib/git-read.js +202 -0
  58. package/neural-interface/lib/greeting/api.js +89 -0
  59. package/neural-interface/lib/greeting/budgets.js +90 -0
  60. package/neural-interface/lib/greeting/engine.js +461 -0
  61. package/neural-interface/lib/greeting/facts.js +320 -0
  62. package/neural-interface/lib/greeting/sources.js +252 -0
  63. package/neural-interface/lib/greeting/writer.js +139 -0
  64. package/neural-interface/lib/http-guards.js +189 -13
  65. package/neural-interface/lib/machine-names.js +88 -0
  66. package/neural-interface/lib/memory-api.js +31 -7
  67. package/neural-interface/lib/native-loop-providers.js +10 -5
  68. package/neural-interface/lib/plugin-installer.js +4 -2
  69. package/neural-interface/lib/project-storage.js +5 -7
  70. package/neural-interface/lib/request-gate.js +589 -0
  71. package/neural-interface/lib/ui-blob-api.js +108 -0
  72. package/neural-interface/lib/ui-blob-store.js +68 -0
  73. package/neural-interface/package-lock.json +701 -2
  74. package/neural-interface/package.json +13 -2
  75. package/neural-interface/public/install-app.html +9 -6
  76. package/neural-interface/public/offline.html +3 -2
  77. package/neural-interface/public/onboarding.html +12 -1
  78. package/neural-interface/public/shared/agent-runtime-options.js +22 -6
  79. package/neural-interface/public/shared/assistant/asst-automation.js +286 -0
  80. package/neural-interface/public/shared/assistant/asst-brain-picker.js +312 -62
  81. package/neural-interface/public/shared/assistant/asst-composer.js +11 -1
  82. package/neural-interface/public/shared/assistant/asst-mascot.js +18 -58
  83. package/neural-interface/public/shared/assistant/asst-menu.js +12 -8
  84. package/neural-interface/public/shared/assistant/asst-panel.js +150 -28
  85. package/neural-interface/public/shared/assistant/asst-render.js +162 -19
  86. package/neural-interface/public/shared/assistant/asst-route-models.js +108 -0
  87. package/neural-interface/public/shared/assistant/asst-route.js +23 -329
  88. package/neural-interface/public/shared/assistant/asst-routes-editor.js +495 -0
  89. package/neural-interface/public/shared/assistant/asst-sanitize.js +8 -1
  90. package/neural-interface/public/shared/assistant/asst-sidepanel.js +31 -9
  91. package/neural-interface/public/shared/assistant/asst-state.js +185 -1
  92. package/neural-interface/public/shared/assistant/asst-styles.js +158 -4
  93. package/neural-interface/public/shared/blob-store.js +111 -22
  94. package/neural-interface/public/shared/cdx/cdx-panel.js +32 -11
  95. package/neural-interface/public/shared/cdx/cdx-render.js +25 -89
  96. package/neural-interface/public/shared/cdx/cdx-styles.js +36 -0
  97. package/neural-interface/public/shared/cdx/cdx-tabs.js +87 -4
  98. package/neural-interface/public/shared/constants.js +6 -1
  99. package/neural-interface/public/shared/cp/cp-rehydrate.js +2 -1
  100. package/neural-interface/public/shared/cp/cp-styles.js +15 -0
  101. package/neural-interface/public/shared/editor/editor-ai-logic.js +409 -0
  102. package/neural-interface/public/shared/editor/editor-ai.js +619 -0
  103. package/neural-interface/public/shared/editor/editor-commands.js +212 -0
  104. package/neural-interface/public/shared/editor/editor-compare.js +103 -0
  105. package/neural-interface/public/shared/editor/editor-completion-list.js +172 -0
  106. package/neural-interface/public/shared/editor/editor-doc.js +257 -0
  107. package/neural-interface/public/shared/editor/editor-git-logic.js +131 -0
  108. package/neural-interface/public/shared/editor/editor-git.js +95 -0
  109. package/neural-interface/public/shared/editor/editor-languages.js +156 -0
  110. package/neural-interface/public/shared/editor/editor-lint.js +229 -0
  111. package/neural-interface/public/shared/editor/editor-loader.js +51 -0
  112. package/neural-interface/public/shared/editor/editor-markdown.js +90 -0
  113. package/neural-interface/public/shared/editor/editor-menu.js +233 -0
  114. package/neural-interface/public/shared/editor/editor-minimap.js +371 -0
  115. package/neural-interface/public/shared/editor/editor-palette-logic.js +192 -0
  116. package/neural-interface/public/shared/editor/editor-palette.js +125 -0
  117. package/neural-interface/public/shared/editor/editor-panel-logic.js +288 -0
  118. package/neural-interface/public/shared/editor/editor-panel.js +2099 -0
  119. package/neural-interface/public/shared/editor/editor-prefs.js +224 -0
  120. package/neural-interface/public/shared/editor/editor-safety.js +500 -0
  121. package/neural-interface/public/shared/editor/editor-search.js +352 -0
  122. package/neural-interface/public/shared/editor/editor-statusbar.js +144 -0
  123. package/neural-interface/public/shared/editor/editor-tabs-logic.js +331 -0
  124. package/neural-interface/public/shared/editor/editor-tabs.js +233 -0
  125. package/neural-interface/public/shared/editor/editor-theme.js +244 -0
  126. package/neural-interface/public/shared/editor/editor-view.js +332 -0
  127. package/neural-interface/public/shared/explorer/fx-api.js +216 -0
  128. package/neural-interface/public/shared/explorer/fx-links.js +204 -0
  129. package/neural-interface/public/shared/explorer/fx-logic.js +537 -0
  130. package/neural-interface/public/shared/explorer/fx-main.js +865 -0
  131. package/neural-interface/public/shared/explorer/fx-names.js +87 -0
  132. package/neural-interface/public/shared/explorer/fx-ops.js +370 -0
  133. package/neural-interface/public/shared/explorer/fx-popups.js +490 -0
  134. package/neural-interface/public/shared/explorer/fx-tree.js +790 -0
  135. package/neural-interface/public/shared/file-links.js +339 -0
  136. package/neural-interface/public/shared/greeting/greeting-card.js +178 -0
  137. package/neural-interface/public/shared/greeting/greeting-view.js +148 -0
  138. package/neural-interface/public/shared/html-shell.js +160 -165
  139. package/neural-interface/public/shared/ocp-v2/ocp-v2-childpanel.js +4 -0
  140. package/neural-interface/public/shared/ocp-v2/ocp-v2-greeting.js +47 -0
  141. package/neural-interface/public/shared/ocp-v2/ocp-v2-panel.js +99 -17
  142. package/neural-interface/public/shared/ocp-v2/ocp-v2-render.js +7 -1
  143. package/neural-interface/public/shared/ocp-v2/ocp-v2-send.js +5 -0
  144. package/neural-interface/public/shared/ocp-v2/ocp-v2-styles.js +40 -0
  145. package/neural-interface/public/shared/ocp-v2/ocp-v2-ws.js +3 -2
  146. package/neural-interface/public/shared/pwa-install-page.js +29 -1
  147. package/neural-interface/public/shared/pwa-install.css +3 -3
  148. package/neural-interface/public/shared/pwa-install.js +100 -1
  149. package/neural-interface/public/shared/settings/settings-code-editor-pane.js +412 -0
  150. package/neural-interface/public/shared/settings/settings-code-editor.js +328 -0
  151. package/neural-interface/public/shared/settings/settings-greeting.js +133 -0
  152. package/neural-interface/public/shared/settings/settings-ia.js +18 -4
  153. package/neural-interface/public/shared/settings/settings-user-context.js +154 -0
  154. package/neural-interface/public/shared/start-bridge.js +238 -19
  155. package/neural-interface/public/shared/styles.css +1414 -721
  156. package/neural-interface/public/shared/synabun-mascot.js +20 -56
  157. package/neural-interface/public/shared/tunnel-view.js +167 -0
  158. package/neural-interface/public/shared/ui-claude-panel.js +157 -16
  159. package/neural-interface/public/shared/ui-detail.js +15 -0
  160. package/neural-interface/public/shared/ui-explorer.js +22 -0
  161. package/neural-interface/public/shared/ui-file-explorer.js +481 -2496
  162. package/neural-interface/public/shared/ui-file-links.js +103 -0
  163. package/neural-interface/public/shared/ui-help.js +26 -0
  164. package/neural-interface/public/shared/ui-invite.js +126 -116
  165. package/neural-interface/public/shared/ui-keybinds.js +4 -0
  166. package/neural-interface/public/shared/ui-loading.js +159 -15
  167. package/neural-interface/public/shared/ui-menubar.js +12 -30
  168. package/neural-interface/public/shared/ui-native-loop-router-state.js +11 -0
  169. package/neural-interface/public/shared/ui-native-loop-router.js +15 -2
  170. package/neural-interface/public/shared/ui-navbar.js +45 -21
  171. package/neural-interface/public/shared/ui-settings.js +455 -488
  172. package/neural-interface/public/shared/ui-sidepanel-runtime.js +2 -1
  173. package/neural-interface/public/shared/ui-sync.js +16 -0
  174. package/neural-interface/public/shared/ui-terminal.js +23 -5
  175. package/neural-interface/public/shared/ui-tunnel.js +130 -0
  176. package/neural-interface/public/shared/ui-tutorial-steps.js +6 -2
  177. package/neural-interface/public/shared/ui-whiteboard.js +12 -0
  178. package/neural-interface/public/shared/ui-worker-end.js +245 -0
  179. package/neural-interface/public/shared/ui-workspaces.js +41 -27
  180. package/neural-interface/public/shared/worker-end.js +251 -0
  181. package/neural-interface/public/sw.js +2 -2
  182. package/neural-interface/public/vendor/codemirror/chunks/apl-CSDKT72Z.js +1 -0
  183. package/neural-interface/public/vendor/codemirror/chunks/asciiarmor-JYYPU5BM.js +1 -0
  184. package/neural-interface/public/vendor/codemirror/chunks/asn1-NRWCZDA6.js +1 -0
  185. package/neural-interface/public/vendor/codemirror/chunks/asterisk-5OU6D4ZQ.js +1 -0
  186. package/neural-interface/public/vendor/codemirror/chunks/brainfuck-ID4N4SYC.js +1 -0
  187. package/neural-interface/public/vendor/codemirror/chunks/chunk-4RZWGCS2.js +1 -0
  188. package/neural-interface/public/vendor/codemirror/chunks/chunk-ACTJM3JR.js +11 -0
  189. package/neural-interface/public/vendor/codemirror/chunks/chunk-S6BMAXLK.js +1 -0
  190. package/neural-interface/public/vendor/codemirror/chunks/chunk-TO2RDOHQ.js +3 -0
  191. package/neural-interface/public/vendor/codemirror/chunks/chunk-US2GMZZQ.js +13 -0
  192. package/neural-interface/public/vendor/codemirror/chunks/chunk-WYYO5ZAJ.js +1 -0
  193. package/neural-interface/public/vendor/codemirror/chunks/chunk-XALZTDJC.js +1 -0
  194. package/neural-interface/public/vendor/codemirror/chunks/chunk-YRNUTRDV.js +1 -0
  195. package/neural-interface/public/vendor/codemirror/chunks/chunk-Z3QOKH62.js +1 -0
  196. package/neural-interface/public/vendor/codemirror/chunks/clike-OWQBSOGL.js +1 -0
  197. package/neural-interface/public/vendor/codemirror/chunks/clojure-KV75UQWC.js +1 -0
  198. package/neural-interface/public/vendor/codemirror/chunks/cmake-GTEP5Y3C.js +1 -0
  199. package/neural-interface/public/vendor/codemirror/chunks/cobol-WCZ7QEGJ.js +1 -0
  200. package/neural-interface/public/vendor/codemirror/chunks/coffeescript-TGLBOT6B.js +1 -0
  201. package/neural-interface/public/vendor/codemirror/chunks/commonlisp-WVVI432V.js +1 -0
  202. package/neural-interface/public/vendor/codemirror/chunks/crystal-S6R6HLKQ.js +1 -0
  203. package/neural-interface/public/vendor/codemirror/chunks/css-PDA2RINP.js +1 -0
  204. package/neural-interface/public/vendor/codemirror/chunks/cypher-HL5QPL4C.js +1 -0
  205. package/neural-interface/public/vendor/codemirror/chunks/d-HHJH2HAJ.js +1 -0
  206. package/neural-interface/public/vendor/codemirror/chunks/diff-MN3A35BY.js +1 -0
  207. package/neural-interface/public/vendor/codemirror/chunks/dist-25SQLBVS.js +3 -0
  208. package/neural-interface/public/vendor/codemirror/chunks/dist-27ZGGJJS.js +1 -0
  209. package/neural-interface/public/vendor/codemirror/chunks/dist-4E52OJIF.js +1 -0
  210. package/neural-interface/public/vendor/codemirror/chunks/dist-6FT73XDC.js +2 -0
  211. package/neural-interface/public/vendor/codemirror/chunks/dist-BE6YGRMW.js +1 -0
  212. package/neural-interface/public/vendor/codemirror/chunks/dist-CJSGKW2O.js +1 -0
  213. package/neural-interface/public/vendor/codemirror/chunks/dist-CRPH2WLI.js +1 -0
  214. package/neural-interface/public/vendor/codemirror/chunks/dist-CTG7JEQN.js +1 -0
  215. package/neural-interface/public/vendor/codemirror/chunks/dist-I3FEVELX.js +1 -0
  216. package/neural-interface/public/vendor/codemirror/chunks/dist-IM5BBSWZ.js +1 -0
  217. package/neural-interface/public/vendor/codemirror/chunks/dist-KERUKTIF.js +1 -0
  218. package/neural-interface/public/vendor/codemirror/chunks/dist-LXTMWZAM.js +1 -0
  219. package/neural-interface/public/vendor/codemirror/chunks/dist-MABASSET.js +1 -0
  220. package/neural-interface/public/vendor/codemirror/chunks/dist-MJVBUZLL.js +3 -0
  221. package/neural-interface/public/vendor/codemirror/chunks/dist-MNB3WZVU.js +1 -0
  222. package/neural-interface/public/vendor/codemirror/chunks/dist-QYWXOE3U.js +7 -0
  223. package/neural-interface/public/vendor/codemirror/chunks/dist-TEBOFWLZ.js +1 -0
  224. package/neural-interface/public/vendor/codemirror/chunks/dist-UNXFROM3.js +1 -0
  225. package/neural-interface/public/vendor/codemirror/chunks/dist-XL2SLQO6.js +1 -0
  226. package/neural-interface/public/vendor/codemirror/chunks/dist-XO42Y3AP.js +6 -0
  227. package/neural-interface/public/vendor/codemirror/chunks/dist-Y2WWDWJK.js +1 -0
  228. package/neural-interface/public/vendor/codemirror/chunks/dist-YFEZKWMU.js +1 -0
  229. package/neural-interface/public/vendor/codemirror/chunks/dist-ZY7SWQO6.js +1 -0
  230. package/neural-interface/public/vendor/codemirror/chunks/dockerfile-3Y4R4NCH.js +1 -0
  231. package/neural-interface/public/vendor/codemirror/chunks/dtd-5343GJ4P.js +1 -0
  232. package/neural-interface/public/vendor/codemirror/chunks/dylan-FI2CXSW2.js +1 -0
  233. package/neural-interface/public/vendor/codemirror/chunks/ebnf-GNQ77YWA.js +1 -0
  234. package/neural-interface/public/vendor/codemirror/chunks/ecl-MRPUAE2L.js +1 -0
  235. package/neural-interface/public/vendor/codemirror/chunks/eiffel-DZROES27.js +1 -0
  236. package/neural-interface/public/vendor/codemirror/chunks/elm-4KICRFKQ.js +1 -0
  237. package/neural-interface/public/vendor/codemirror/chunks/erlang-3IHYC263.js +1 -0
  238. package/neural-interface/public/vendor/codemirror/chunks/factor-C6D3E5UK.js +1 -0
  239. package/neural-interface/public/vendor/codemirror/chunks/fcl-VYTWUJMI.js +1 -0
  240. package/neural-interface/public/vendor/codemirror/chunks/forth-ZBO2EH5M.js +1 -0
  241. package/neural-interface/public/vendor/codemirror/chunks/fortran-5NDCRWIK.js +1 -0
  242. package/neural-interface/public/vendor/codemirror/chunks/gas-SKRMOXFP.js +1 -0
  243. package/neural-interface/public/vendor/codemirror/chunks/gherkin-L45YXZLW.js +1 -0
  244. package/neural-interface/public/vendor/codemirror/chunks/groovy-GLPTLN44.js +1 -0
  245. package/neural-interface/public/vendor/codemirror/chunks/haskell-E7NF7P4Y.js +1 -0
  246. package/neural-interface/public/vendor/codemirror/chunks/haxe-K2NVDOB6.js +1 -0
  247. package/neural-interface/public/vendor/codemirror/chunks/http-Q6DRQIJB.js +1 -0
  248. package/neural-interface/public/vendor/codemirror/chunks/idl-MZYNJVLN.js +1 -0
  249. package/neural-interface/public/vendor/codemirror/chunks/javascript-6YRYK2HR.js +1 -0
  250. package/neural-interface/public/vendor/codemirror/chunks/julia-HXEL2T5G.js +1 -0
  251. package/neural-interface/public/vendor/codemirror/chunks/livescript-MV7CI2JZ.js +1 -0
  252. package/neural-interface/public/vendor/codemirror/chunks/lua-E36NHOOD.js +1 -0
  253. package/neural-interface/public/vendor/codemirror/chunks/mathematica-3XOZZCMC.js +1 -0
  254. package/neural-interface/public/vendor/codemirror/chunks/mbox-ODYGFKS7.js +1 -0
  255. package/neural-interface/public/vendor/codemirror/chunks/mirc-WB43AWF5.js +1 -0
  256. package/neural-interface/public/vendor/codemirror/chunks/mllike-ZT6ET7ZH.js +1 -0
  257. package/neural-interface/public/vendor/codemirror/chunks/modelica-LLMZPFGA.js +1 -0
  258. package/neural-interface/public/vendor/codemirror/chunks/mscgen-2OPNNYFH.js +1 -0
  259. package/neural-interface/public/vendor/codemirror/chunks/mumps-6P3HWJH6.js +1 -0
  260. package/neural-interface/public/vendor/codemirror/chunks/nginx-TCGKQTRW.js +1 -0
  261. package/neural-interface/public/vendor/codemirror/chunks/nsis-ATIGIXTJ.js +1 -0
  262. package/neural-interface/public/vendor/codemirror/chunks/ntriples-5PLBI5OV.js +1 -0
  263. package/neural-interface/public/vendor/codemirror/chunks/octave-QF2S3NL6.js +1 -0
  264. package/neural-interface/public/vendor/codemirror/chunks/oz-JFIVFFH2.js +1 -0
  265. package/neural-interface/public/vendor/codemirror/chunks/pascal-JG6SW76V.js +1 -0
  266. package/neural-interface/public/vendor/codemirror/chunks/perl-4B3IWVVO.js +1 -0
  267. package/neural-interface/public/vendor/codemirror/chunks/pig-ABEBH4MI.js +1 -0
  268. package/neural-interface/public/vendor/codemirror/chunks/powershell-H32XE7TL.js +1 -0
  269. package/neural-interface/public/vendor/codemirror/chunks/properties-NN644MMA.js +1 -0
  270. package/neural-interface/public/vendor/codemirror/chunks/protobuf-YKWQK2J3.js +1 -0
  271. package/neural-interface/public/vendor/codemirror/chunks/pug-RIYXEKFW.js +1 -0
  272. package/neural-interface/public/vendor/codemirror/chunks/puppet-JZQ5WPEV.js +1 -0
  273. package/neural-interface/public/vendor/codemirror/chunks/python-EBCGGHAC.js +1 -0
  274. package/neural-interface/public/vendor/codemirror/chunks/q-5UMH2YQY.js +1 -0
  275. package/neural-interface/public/vendor/codemirror/chunks/r-7XMGG453.js +1 -0
  276. package/neural-interface/public/vendor/codemirror/chunks/rpm-IEV7TSLR.js +1 -0
  277. package/neural-interface/public/vendor/codemirror/chunks/ruby-T4SPFPNM.js +1 -0
  278. package/neural-interface/public/vendor/codemirror/chunks/sas-GEDX67ET.js +1 -0
  279. package/neural-interface/public/vendor/codemirror/chunks/scheme-FTLOWKPC.js +1 -0
  280. package/neural-interface/public/vendor/codemirror/chunks/shell-HUFRKFSJ.js +1 -0
  281. package/neural-interface/public/vendor/codemirror/chunks/sieve-P5QUDVYO.js +1 -0
  282. package/neural-interface/public/vendor/codemirror/chunks/smalltalk-2SORJNQI.js +1 -0
  283. package/neural-interface/public/vendor/codemirror/chunks/solr-M22TGAR5.js +1 -0
  284. package/neural-interface/public/vendor/codemirror/chunks/sparql-4M3KL752.js +1 -0
  285. package/neural-interface/public/vendor/codemirror/chunks/spreadsheet-3K23LA4N.js +1 -0
  286. package/neural-interface/public/vendor/codemirror/chunks/sql-VHRFMUBI.js +1 -0
  287. package/neural-interface/public/vendor/codemirror/chunks/stex-QZDAQUY2.js +1 -0
  288. package/neural-interface/public/vendor/codemirror/chunks/stylus-7ZDKAKBD.js +1 -0
  289. package/neural-interface/public/vendor/codemirror/chunks/swift-WCLCLGMR.js +1 -0
  290. package/neural-interface/public/vendor/codemirror/chunks/tcl-JLMU6WOK.js +1 -0
  291. package/neural-interface/public/vendor/codemirror/chunks/textile-4CHDKZ4T.js +1 -0
  292. package/neural-interface/public/vendor/codemirror/chunks/tiddlywiki-DKMCZZQ4.js +1 -0
  293. package/neural-interface/public/vendor/codemirror/chunks/tiki-F4JIG36Q.js +1 -0
  294. package/neural-interface/public/vendor/codemirror/chunks/toml-BHMHTIM2.js +1 -0
  295. package/neural-interface/public/vendor/codemirror/chunks/troff-YQ2KV5NT.js +1 -0
  296. package/neural-interface/public/vendor/codemirror/chunks/ttcn-ZHRCVFJY.js +1 -0
  297. package/neural-interface/public/vendor/codemirror/chunks/ttcn-cfg-KJOVTY4X.js +1 -0
  298. package/neural-interface/public/vendor/codemirror/chunks/turtle-535P5N6I.js +1 -0
  299. package/neural-interface/public/vendor/codemirror/chunks/vb-76UMQHOT.js +1 -0
  300. package/neural-interface/public/vendor/codemirror/chunks/vbscript-CGNDTK6Z.js +1 -0
  301. package/neural-interface/public/vendor/codemirror/chunks/velocity-VSJDO5T5.js +1 -0
  302. package/neural-interface/public/vendor/codemirror/chunks/verilog-4T6ETXIP.js +1 -0
  303. package/neural-interface/public/vendor/codemirror/chunks/vhdl-T7FNAXUN.js +1 -0
  304. package/neural-interface/public/vendor/codemirror/chunks/webidl-P6MJSJ6J.js +1 -0
  305. package/neural-interface/public/vendor/codemirror/chunks/xquery-UOVILRGN.js +1 -0
  306. package/neural-interface/public/vendor/codemirror/chunks/yacas-CV2APROL.js +1 -0
  307. package/neural-interface/public/vendor/codemirror/chunks/z80-3KFNVM4M.js +1 -0
  308. package/neural-interface/public/vendor/codemirror/codemirror-6.43.14-75f05e67.min.js +2 -0
  309. package/neural-interface/public/vendor/codemirror/manifest.json +60 -0
  310. package/neural-interface/scripts/build-vendor.mjs +78 -2
  311. package/neural-interface/scripts/vendor-codemirror-entry.js +121 -0
  312. package/neural-interface/server.js +873 -1028
  313. package/neural-interface/templates/rulesets/README.md +1 -1
  314. package/package.json +2 -8
  315. package/setup.js +44 -7
  316. package/benchmarks/browser-live-results.json +0 -79
  317. package/benchmarks/browser-v2-results.json +0 -258
  318. package/neural-interface/lib/codex-capabilities.d.ts +0 -41
  319. package/neural-interface/public/category-logos/claude.svg +0 -1
  320. package/neural-interface/public/category-logos/gemini-color.svg +0 -1
  321. package/neural-interface/public/category-logos/openai.svg +0 -1
  322. package/neural-interface/public/category-logos/synabun.png +0 -0
  323. package/neural-interface/public/claude.svg +0 -1
  324. package/neural-interface/public/gallery.svg +0 -6
  325. package/neural-interface/public/leonardoai.svg +0 -1
  326. package/neural-interface/public/mcp.svg +0 -4
  327. package/neural-interface/public/opencode-logo-dark-square.svg +0 -1
  328. package/neural-interface/public/pin-svgrepo-com.svg +0 -25
  329. package/neural-interface/public/sessionicon.svg +0 -8
  330. package/neural-interface/public/toolbar-album.svg +0 -8
  331. package/neural-interface/public/toolbar-question.svg +0 -6
  332. package/neural-interface/public/toolbar-sessions.svg +0 -6
  333. package/neural-interface/scripts/codex-protocol-fixture.mjs +0 -83
  334. package/skills/synabun/synabunicon.png +0 -0
@@ -165,13 +165,32 @@
165
165
  "elapsedLabel": "Tempo desde que Iniciar foi pressionado",
166
166
  "headingStarting": "Iniciando o servidor",
167
167
  "headingReady": "Servidor no ar",
168
- "headingFailed": "O servidor não iniciou"
168
+ "headingFailed": "O servidor não iniciou",
169
+ "restartAsked": "Pedimos ao servidor para reiniciar.",
170
+ "restartStopping": "O servidor aceitou o reinício e está encerrando.",
171
+ "restartSlowStop": "Ainda encerrando depois de {seconds} s.",
172
+ "restartDown": "O servidor parou de responder. Aguardando ele voltar.",
173
+ "restartRespawning": "O supervisor está iniciando o servidor de novo.",
174
+ "restartStalled": "O servidor não voltou. Inicie-o com o botão ou execute o comando abaixo.",
175
+ "restartRefused": "O servidor não aceitou o reinício: {reason}",
176
+ "restartUnreachable": "O servidor não respondeu ao pedido de reinício.",
177
+ "restartStillRunning": "O servidor aceitou o reinício, mas não encerrou.",
178
+ "trailAccepted": "Reinício aceito",
179
+ "trailNoAnswer": "Servidor parou de responder",
180
+ "trailStopped": "Processo do servidor encerrado",
181
+ "restartElapsedLabel": "Tempo desde o início do reinício",
182
+ "headingRestarting": "Reiniciando o servidor",
183
+ "headingRestartFailed": "O servidor não reiniciou"
169
184
  },
170
185
  "runCommandOr": "Ou execute este comando:",
171
186
  "runCommandSetup": "Execute este comando uma vez. Ele também configura o botão Iniciar:",
172
187
  "serverOffline": "Servidor offline",
173
188
  "serverNotRunning": "O servidor do Neural Interface não está em execução",
174
189
  "connectionFailed": "Falha na conexão",
190
+ "restartSubAsked": "Você pediu este reinício. O SynaBun recarrega quando o servidor voltar.",
191
+ "restartSubTold": "Um reinício do servidor foi solicitado. O SynaBun recarrega quando ele voltar.",
192
+ "restartSubRefused": "O SynaBun continua em execução.",
193
+ "restartBack": "Voltar ao SynaBun",
175
194
  "health": {
176
195
  "databaseUnreachable": {
177
196
  "title": "Banco de dados inacessível",
@@ -268,6 +287,751 @@
268
287
  "copyId": "Copiar ID"
269
288
  }
270
289
  },
290
+ "editor": {
291
+ "header": {
292
+ "close": "Fechar editor",
293
+ "find": "Localizar",
294
+ "wordWrap": "Alternar quebra de linha",
295
+ "shortcuts": "Atalhos de teclado",
296
+ "raw": "Bruto",
297
+ "preview": "Prévia",
298
+ "discard": "Descartar",
299
+ "save": "Salvar",
300
+ "closeButton": "Fechar",
301
+ "view": "Opções de exibição",
302
+ "diff": "Comparar com o último commit"
303
+ },
304
+ "shortcuts": {
305
+ "title": "Atalhos de teclado",
306
+ "click": "Clique",
307
+ "drag": "Arraste"
308
+ },
309
+ "command": {
310
+ "save": "Salvar",
311
+ "find": "Localizar",
312
+ "replace": "Substituir",
313
+ "findNext": "Localizar próxima",
314
+ "findPrevious": "Localizar anterior",
315
+ "goToLine": "Ir para a linha",
316
+ "undo": "Desfazer",
317
+ "redo": "Refazer",
318
+ "selectNextOccurrence": "Selecionar próxima ocorrência",
319
+ "selectAllOccurrences": "Selecionar todas as ocorrências",
320
+ "copyLineDown": "Copiar linha para baixo",
321
+ "copyLineUp": "Copiar linha para cima",
322
+ "moveLineDown": "Mover linha para baixo",
323
+ "moveLineUp": "Mover linha para cima",
324
+ "deleteLine": "Excluir linha",
325
+ "toggleLineComment": "Alternar comentário de linha",
326
+ "toggleBlockComment": "Alternar comentário de bloco",
327
+ "indent": "Aumentar recuo",
328
+ "outdent": "Diminuir recuo",
329
+ "addCursor": "Adicionar cursor",
330
+ "addCursorBelow": "Adicionar cursor abaixo",
331
+ "addCursorAbove": "Adicionar cursor acima",
332
+ "columnSelection": "Seleção em coluna",
333
+ "fold": "Recolher",
334
+ "unfold": "Expandir",
335
+ "jumpToBracket": "Ir para o colchete correspondente",
336
+ "toggleWordWrap": "Alternar quebra de linha",
337
+ "dismiss": "Fechar barra de localizar",
338
+ "aiAccept": "Aceitar sugestão",
339
+ "aiAcceptWord": "Aceitar uma palavra da sugestão",
340
+ "aiDismiss": "Dispensar sugestão",
341
+ "aiTrigger": "Pedir uma sugestão agora",
342
+ "nextTab": "Próxima aba",
343
+ "previousTab": "Aba anterior",
344
+ "closeTab": "Fechar aba",
345
+ "toggleMinimap": "Alternar minimapa",
346
+ "toggleIndentGuides": "Alternar guias de indentação",
347
+ "cycleWhitespace": "Mudar como os espaços em branco aparecem",
348
+ "fontLarger": "Texto maior",
349
+ "fontSmaller": "Texto menor",
350
+ "fontReset": "Redefinir o tamanho do texto",
351
+ "commandPalette": "Paleta de comandos",
352
+ "goToFile": "Ir para o arquivo",
353
+ "nextProblem": "Ir para o próximo problema",
354
+ "previousProblem": "Ir para o problema anterior",
355
+ "toggleDiff": "Comparar com o último commit"
356
+ },
357
+ "find": {
358
+ "placeholder": "Localizar...",
359
+ "label": "Localizar",
360
+ "matchCase": "Diferenciar maiúsculas de minúsculas",
361
+ "wholeWord": "Palavra inteira",
362
+ "regexp": "Expressão regular",
363
+ "previous": "Anterior",
364
+ "next": "Próxima",
365
+ "close": "Fechar",
366
+ "replacePlaceholder": "Substituir...",
367
+ "replaceLabel": "Substituir por",
368
+ "replace": "Substituir",
369
+ "replaceAll": "Todas",
370
+ "invalid": "Padrão inválido",
371
+ "noResults": "Nenhum resultado",
372
+ "count": "{current} de {total}",
373
+ "total": {
374
+ "one": "{count} resultado",
375
+ "other": "{count} resultados"
376
+ }
377
+ },
378
+ "goto": {
379
+ "label": "Ir para a linha",
380
+ "placeholder": "Linha...",
381
+ "range": "1 a {max}"
382
+ },
383
+ "fold": {
384
+ "fold": "Recolher",
385
+ "unfold": "Expandir"
386
+ },
387
+ "aria": {
388
+ "content": "Conteúdo do arquivo"
389
+ },
390
+ "status": {
391
+ "plainText": "Texto simples",
392
+ "spaces": "Espaços: {n}",
393
+ "tabSize": "Tabulação: {n}",
394
+ "eolMixed": "Misto → {eol}",
395
+ "utf8Bom": "UTF-8 com BOM",
396
+ "position": "Ln {line}, Col {column}",
397
+ "positionSelected": "Ln {line}, Col {column} ({selected} selecionados)",
398
+ "cursors": "Ln {line}, Col {column} ({count} cursores)",
399
+ "cursorsSelected": "Ln {line}, Col {column} ({count} cursores, {selected} selecionados)",
400
+ "selectLanguage": "Selecionar linguagem",
401
+ "selectIndent": "Selecionar indentação",
402
+ "selectEol": "Selecionar fim de linha",
403
+ "goToLine": "Ir para a linha",
404
+ "languageSearch": "Buscar linguagens...",
405
+ "languageAuto": "Detectar automaticamente",
406
+ "languageNone": "Nenhuma linguagem encontrada",
407
+ "indentTabs": "Tabulações",
408
+ "indentDetect": "Detectar"
409
+ },
410
+ "banner": {
411
+ "planReview": "Editando o plano — salve para voltar à revisão",
412
+ "planSend": "Editando o plano — salve para enviar ao {name}",
413
+ "changelog": "Editando o changelog — salve para enviar ao Claude",
414
+ "planSaveFailed": "{message} Suas edições continuam abertas."
415
+ },
416
+ "toast": {
417
+ "saved": "Salvo",
418
+ "saveFailed": "Falha ao salvar",
419
+ "planSaved": "Plano salvo",
420
+ "changelogSaved": "Changelog salvo — enviando ao Claude",
421
+ "cannotOpen": "Não foi possível abrir o arquivo",
422
+ "openFailed": "Falha ao abrir o arquivo",
423
+ "planChanged": "O arquivo do plano mudou. Reabra a revisão atual do plano.",
424
+ "restartForOpencodeConfig": "Reinicie o Synabun para ativar a edição da configuração do OpenCode",
425
+ "tooLarge": "Este arquivo é grande demais para abrir no editor.",
426
+ "tooLargeOver": "Este arquivo tem mais de {size}, o máximo que o editor abre.",
427
+ "changedOnDisk": "O arquivo mudou no disco. Suas edições não foram salvas.",
428
+ "pathCopied": "Caminho copiado",
429
+ "notInTree": "Este arquivo não está em um projeto do Explorador de arquivos."
430
+ },
431
+ "error": {
432
+ "bundle": "Não foi possível carregar o editor.",
433
+ "retry": "Tentar novamente",
434
+ "planMissingRevision": "Este editor de plano está sem a revisão. Reabra o plano para salvar.",
435
+ "planChanged": "O plano mudou. Reabra a revisão mais recente antes de salvar."
436
+ },
437
+ "refused": {
438
+ "binary": "{name} é um arquivo binário. Ele não pode ser editado aqui.",
439
+ "encoding": "{name} não é texto UTF-8. Ele não foi aberto, porque salvá-lo aqui o danificaria."
440
+ },
441
+ "confirm": {
442
+ "close": "Descartar alterações não salvas?",
443
+ "discard": "Descartar alterações?",
444
+ "reload": "Descartar suas alterações e recarregar o arquivo do disco?",
445
+ "closeOne": "Descartar alterações não salvas em {name}?",
446
+ "closeMany": "Descartar alterações não salvas em {count} arquivos?\n\n{files}"
447
+ },
448
+ "conflict": {
449
+ "text": "Este arquivo mudou no disco depois que você o abriu.",
450
+ "overwrite": "Sobrescrever",
451
+ "reload": "Recarregar"
452
+ },
453
+ "tabs": {
454
+ "label": "Arquivos abertos",
455
+ "close": "Fechar {name}",
456
+ "closeUnsaved": "Fechar {name} (alterações não salvas)",
457
+ "plan": "Plano",
458
+ "changelog": "Changelog",
459
+ "menu": {
460
+ "label": "Ações da aba",
461
+ "close": "Fechar",
462
+ "closeOthers": "Fechar as outras",
463
+ "closeSaved": "Fechar as salvas",
464
+ "copyPath": "Copiar caminho",
465
+ "reveal": "Mostrar na árvore"
466
+ }
467
+ },
468
+ "disk": {
469
+ "changed": "Este arquivo mudou no disco.",
470
+ "deleted": "Este arquivo foi excluído ou movido no disco.",
471
+ "compare": "Comparar",
472
+ "keepMine": "Manter o meu",
473
+ "keepOpen": "Manter aberto",
474
+ "closeTab": "Fechar aba"
475
+ },
476
+ "backup": {
477
+ "restored": "Alterações não salvas restauradas",
478
+ "restoredChanged": "Alterações não salvas restauradas. O arquivo mudou no disco desde que foram feitas.",
479
+ "keep": "Manter",
480
+ "discard": "Descartar"
481
+ },
482
+ "compare": {
483
+ "text": "Comparando sua versão com o arquivo no disco",
484
+ "close": "Fechar comparação",
485
+ "useDisk": "Usar a versão do disco",
486
+ "unchanged": "{count} linhas sem alterações",
487
+ "failed": "Não foi possível ler o arquivo do disco."
488
+ },
489
+ "ai": {
490
+ "chip": "IA",
491
+ "title": "Autocompletar com IA",
492
+ "consent": "Envia o código ao redor do cursor para o modelo que você escolher. Arquivos da lista de excluídos nunca são enviados.",
493
+ "state": {
494
+ "off": "O autocompletar com IA está desligado",
495
+ "excluded": "O autocompletar com IA está desligado para este arquivo: o nome dele está na lista de arquivos que nunca são enviados",
496
+ "ready": "O autocompletar com IA está pronto",
497
+ "thinking": "O autocompletar com IA está consultando o modelo"
498
+ },
499
+ "problem": {
500
+ "rate": "Pedidos demais. Nova tentativa em {seconds} s.",
501
+ "noModel": "Nenhum modelo selecionado ainda. Escolha um abaixo.",
502
+ "noEndpoint": "O endpoint ainda não tem endereço ou modelo. Defina-os nas Configurações.",
503
+ "timeout": "O modelo não respondeu a tempo.",
504
+ "network": "O SynaBun não respondeu.",
505
+ "engine": "A chamada ao modelo falhou: {message}",
506
+ "engineUnknown": "A chamada ao modelo falhou.",
507
+ "server": "O pedido falhou."
508
+ },
509
+ "model": "Modelo",
510
+ "modelNone": "Escolha um modelo",
511
+ "modelsLoading": "Carregando modelos…",
512
+ "modelsUnavailable": "O OpenCode não está em execução, então os modelos dele não podem ser listados.",
513
+ "modelsFailed": "Não foi possível ler os modelos.",
514
+ "price": "${input} entrada / ${output} saída por milhão de tokens",
515
+ "priceFree": "grátis",
516
+ "endpointModel": "Seu endpoint: {model}",
517
+ "endpointNone": "Seu endpoint ainda não foi configurado.",
518
+ "findFastest": "Encontrar o mais rápido",
519
+ "finding": "Testando modelos…",
520
+ "fastest": "Mais rápido: {model}, {time}. Selecionado.",
521
+ "fastestNone": "Nenhum modelo respondeu a tempo.",
522
+ "today": {
523
+ "one": "Hoje: {count} pedido · {input} tokens de entrada · {output} de saída",
524
+ "other": "Hoje: {count} pedidos · {input} tokens de entrada · {output} de saída"
525
+ },
526
+ "todayNone": "Nenhum pedido hoje.",
527
+ "todayFailed": "Não foi possível ler o uso de hoje.",
528
+ "settings": "Mais nas Configurações"
529
+ },
530
+ "view": {
531
+ "wordWrap": "Quebra de linha",
532
+ "minimap": "Minimapa",
533
+ "indentGuides": "Guias de indentação",
534
+ "whitespaceNone": "Espaços em branco: ocultos",
535
+ "whitespaceSelection": "Espaços em branco: na seleção",
536
+ "whitespaceAll": "Espaços em branco: em todo o texto",
537
+ "fontLarger": "Texto maior",
538
+ "fontSmaller": "Texto menor",
539
+ "fontReset": "Redefinir o tamanho do texto",
540
+ "fontSize": "{size} px"
541
+ },
542
+ "palette": {
543
+ "commands": "Paleta de comandos",
544
+ "commandsPlaceholder": "Digite um comando...",
545
+ "noCommand": "Nenhum comando corresponde",
546
+ "files": "Ir para o arquivo",
547
+ "filesPlaceholder": "Digite o nome de um arquivo...",
548
+ "noFile": "Nenhum arquivo corresponde",
549
+ "typeToSearch": "Digite para buscar nos arquivos deste projeto",
550
+ "noProject": "Selecione um projeto no Explorador de arquivos para buscar nos arquivos dele",
551
+ "searchFailed": "Não foi possível buscar os arquivos.",
552
+ "searching": "Buscando…"
553
+ },
554
+ "diff": {
555
+ "text": "Comparando sua versão com o último commit",
556
+ "close": "Fechar comparação",
557
+ "revert": "Reverter alteração",
558
+ "failed": "Não foi possível carregar a comparação."
559
+ }
560
+ },
561
+ "fileLinks": {
562
+ "open": "Abrir no editor",
563
+ "openAtLine": "Abrir no editor na linha {line}",
564
+ "openAtLineColumn": "Abrir no editor na linha {line}, coluna {column}",
565
+ "missing": "{name} não foi encontrado, ou é uma pasta.",
566
+ "notText": "{name} não é um arquivo de texto que o editor consiga abrir.",
567
+ "tooLarge": "{name} é grande demais para abrir no editor.",
568
+ "outside": "{name} está fora dos seus projetos registrados. Adicione a pasta como projeto para abri-lo aqui.",
569
+ "failed": "Não foi possível acessar o SynaBun para abrir {name}. Verifique se o servidor está em execução."
570
+ },
571
+ "tunnel": {
572
+ "stateOff": "Desligado",
573
+ "stateDownloading": "Obtendo o programa do túnel",
574
+ "stateStarting": "Iniciando",
575
+ "stateRunning": "Ligado",
576
+ "stateFailed": "Não iniciou",
577
+ "stateUnsupported": "Indisponível",
578
+ "stateRestart": "Reinício necessário",
579
+ "idle": "Um endereço público pela Cloudflare, para links de convite e MCP remoto.",
580
+ "idleDownload": "Um endereço público pela Cloudflare, para links de convite e MCP remoto. Na primeira vez, o programa do túnel é baixado ({size} MB).",
581
+ "downloading": "Baixando o programa do túnel: {received} de {total} MB",
582
+ "starting": "Aguardando a Cloudflare fornecer um endereço…",
583
+ "restart": "Reinicie o SynaBun para usar o endereço público: o servidor em execução foi iniciado antes de poder baixar o programa do túnel.",
584
+ "unsupported": "A Cloudflare não publica o programa do túnel para este sistema. Se você instalar o cloudflared por conta própria, o SynaBun o usa.",
585
+ "errorOffline": "Não foi possível baixar o programa do túnel: o servidor de download não respondeu. Verifique a conexão e tente novamente.",
586
+ "errorHttp": "Não foi possível baixar o programa do túnel: o servidor de download respondeu com erro. Tente novamente em instantes.",
587
+ "errorInterrupted": "O download parou antes de terminar. Nada foi mantido. Tente novamente.",
588
+ "errorTimeout": "O download travou. Nada foi mantido. Tente novamente.",
589
+ "errorChecksum": "O download não era o arquivo que o SynaBun espera; por isso foi removido e nunca executado. Tente novamente; se acontecer de novo, algo na rede está alterando o arquivo.",
590
+ "errorUnpack": "Não foi possível descompactar o arquivo baixado; por isso ele foi removido. Tente novamente.",
591
+ "errorDisk": "Não foi possível salvar o programa do túnel na pasta de dados do SynaBun. Verifique o espaço livre e as permissões e tente novamente.",
592
+ "errorLaunch": "Não foi possível iniciar o programa do túnel neste computador. Tente novamente.",
593
+ "errorExited": "A Cloudflare não forneceu um endereço. O programa do túnel informou: {reason}",
594
+ "errorExitedNoReason": "O programa do túnel parou antes de a Cloudflare fornecer um endereço. Tente novamente.",
595
+ "errorNoAddress": "A Cloudflare não forneceu um endereço a tempo. Tente novamente.",
596
+ "errorEnded": "O túnel parou. Inicie de novo para obter um novo endereço.",
597
+ "errorRefused": "O SynaBun recusou este pedido. Inicie o túnel pelo SynaBun neste computador.",
598
+ "errorUnknown": "O túnel não iniciou: {reason}",
599
+ "errorUnknownNoReason": "O túnel não iniciou. Tente novamente.",
600
+ "start": "Iniciar túnel",
601
+ "stop": "Parar",
602
+ "cancel": "Cancelar",
603
+ "retry": "Tentar novamente",
604
+ "copyBundled": "cloudflared {version}, incluído no SynaBun",
605
+ "copyDownloaded": "cloudflared {version}, baixado pelo SynaBun",
606
+ "copySystem": "cloudflared {version}, instalado neste computador",
607
+ "copySystemWhy": "O SynaBun não conseguiu baixar a própria cópia; por isso usa a que está instalada neste computador.",
608
+ "mcpKeyNeeded": "O MCP remoto precisa de uma chave de acesso. Crie uma abaixo; o endereço para conectar passa a ser este, seguido de /mcp/ e da chave."
609
+ },
610
+ "workerEnd": {
611
+ "complete": "Tarefa concluída",
612
+ "blocked": "Bloqueada",
613
+ "needsInput": "Precisa de resposta",
614
+ "failed": "A tarefa falhou",
615
+ "stopped": "Parada",
616
+ "interrupted": "Interrompida",
617
+ "back": "Voltar ao Assistente",
618
+ "backHint": "Fechar esta aba e abrir a sessão do Assistente que a enviou",
619
+ "warmNote": "O agente continua aberto para novas instruções. Voltar o fecha.",
620
+ "failedNoReason": "A execução terminou com um erro.",
621
+ "reasonUser": "Parada por você.",
622
+ "reasonAssistant": "Parada pelo Assistente.",
623
+ "reasonAssistantSaid": "Parada pelo Assistente: {reason}",
624
+ "reasonTimeCap": "A execução atingiu o limite de tempo.",
625
+ "reasonBudget": "A execução atingiu o limite de orçamento.",
626
+ "reasonMaxTurns": "A execução atingiu o limite de turnos.",
627
+ "reasonIdle": "O agente esperou uma nova instrução que não veio e foi fechado.",
628
+ "reasonRestart": "O servidor reiniciou com a execução aberta.",
629
+ "reasonKillAll": "Parada junto com todas as outras execuções.",
630
+ "reasonCleared": "O estado da execução foi removido.",
631
+ "reasonOther": "Parada ({reason}).",
632
+ "durationSeconds": "{s} s",
633
+ "durationMinutes": "{m} min {s} s",
634
+ "durationHours": "{h} h {m} min"
635
+ },
636
+ "fileExplorer": {
637
+ "title": "Explorador de Arquivos",
638
+ "tree": "Arquivos de {project}",
639
+ "resize": "Redimensionar o Explorador de Arquivos",
640
+ "loadFailed": "Não foi possível carregar o Explorador de Arquivos. Recarregue a página.",
641
+ "needsRestart": "Passa a funcionar depois que o servidor for reiniciado.",
642
+ "filter": {
643
+ "placeholder": "Filtrar arquivos...",
644
+ "label": "Filtrar arquivos pelo nome",
645
+ "clear": "Limpar filtro"
646
+ },
647
+ "toolbar": {
648
+ "newFile": "Novo arquivo",
649
+ "newFolder": "Nova pasta",
650
+ "goToFile": "Ir para arquivo",
651
+ "revealActive": "Mostrar o arquivo aberto na árvore",
652
+ "changedOnly": "Só os alterados",
653
+ "collapseAll": "Recolher tudo",
654
+ "refresh": "Atualizar",
655
+ "more": "Mais"
656
+ },
657
+ "project": {
658
+ "none": "Nenhum projeto",
659
+ "label": "Projeto: {name}",
660
+ "choose": "Escolha um projeto",
661
+ "add": "Adicionar projeto...",
662
+ "pickFolder": "Selecione a pasta do projeto",
663
+ "addFailed": "Não foi possível adicionar o projeto."
664
+ },
665
+ "branch": {
666
+ "label": "Branch {branch}: {count} alterados"
667
+ },
668
+ "count": {
669
+ "items": {
670
+ "one": "1 item",
671
+ "other": "{count} itens"
672
+ },
673
+ "selected": {
674
+ "one": "1 selecionado",
675
+ "other": "{count} selecionados"
676
+ },
677
+ "matches": {
678
+ "one": "1 resultado",
679
+ "other": "{count} resultados"
680
+ },
681
+ "changed": {
682
+ "one": "1 alterado",
683
+ "other": "{count} alterados"
684
+ }
685
+ },
686
+ "state": {
687
+ "loading": "Carregando...",
688
+ "searching": "Buscando...",
689
+ "retry": "Tentar de novo",
690
+ "showMore": "Mostrar mais",
691
+ "more": {
692
+ "one": "mais 1",
693
+ "other": "mais {count}"
694
+ },
695
+ "truncated": "Mostrando {shown} de {total}. Filtre pelo nome para achar o resto.",
696
+ "emptyFolder": "Pasta vazia",
697
+ "emptyProject": "Esta pasta está vazia.",
698
+ "noProject": "Nenhum projeto ainda. Adicione uma pasta para ver os arquivos.",
699
+ "addProject": "Adicionar projeto",
700
+ "noMatch": "Nenhum arquivo com “{query}”.",
701
+ "noChanges": "Nada mudou desde o último commit.",
702
+ "notRepo": "Este projeto não é um repositório git.",
703
+ "searchFailed": "A busca falhou. Tente de novo.",
704
+ "moreMatches": "Mostrando os primeiros {count} resultados. Digite mais para refinar.",
705
+ "partial": "A busca parou antes do fim neste projeto grande. Digite mais para refinar.",
706
+ "restartHint": "Atualização ao vivo, renomear, mover, Lixeira e prévia de imagens passam a funcionar depois que o servidor for reiniciado."
707
+ },
708
+ "git": {
709
+ "modified": "modificado",
710
+ "mixed": "modificado",
711
+ "staged": "em stage",
712
+ "renamed": "renomeado",
713
+ "added": "adicionado",
714
+ "untracked": "novo",
715
+ "deleted": "excluído",
716
+ "conflict": "conflito",
717
+ "contains": "tem alterações",
718
+ "ignored": "ignorado pelo git"
719
+ },
720
+ "row": {
721
+ "open": "aberto no editor",
722
+ "unsaved": "alterações não salvas",
723
+ "link": "link",
724
+ "linkOutside": "link para fora do projeto",
725
+ "linkBroken": "link quebrado",
726
+ "cut": "recortado"
727
+ },
728
+ "notice": {
729
+ "dismiss": "Dispensar"
730
+ },
731
+ "menu": {
732
+ "label": "Ações de {name}",
733
+ "labelMany": "Ações de {count} itens",
734
+ "labelProject": "Ações do projeto",
735
+ "back": "Voltar",
736
+ "open": "Abrir",
737
+ "openKeep": "Abrir e manter a aba",
738
+ "preview": "Visualizar",
739
+ "openAsText": "Abrir como texto",
740
+ "send": {
741
+ "one": "Enviar para {name}",
742
+ "other": "Enviar {count} itens para {name}"
743
+ },
744
+ "sendTo": "Enviar para...",
745
+ "newFile": "Novo arquivo...",
746
+ "newFolder": "Nova pasta...",
747
+ "expand": "Expandir",
748
+ "collapse": "Recolher",
749
+ "collapseChildren": "Recolher subpastas",
750
+ "cut": "Recortar",
751
+ "copy": "Copiar",
752
+ "paste": "Colar",
753
+ "duplicate": "Duplicar",
754
+ "nothingCopied": "Nada foi recortado nem copiado.",
755
+ "copyPath": {
756
+ "one": "Copiar caminho",
757
+ "other": "Copiar caminhos"
758
+ },
759
+ "copyRelativePath": {
760
+ "one": "Copiar caminho relativo",
761
+ "other": "Copiar caminhos relativos"
762
+ },
763
+ "copyName": "Copiar nome",
764
+ "color": "Cor da pasta...",
765
+ "rename": "Renomear...",
766
+ "delete": "Excluir",
767
+ "deleteMany": "Excluir {count} itens",
768
+ "reveal": {
769
+ "darwin": "Mostrar no Finder",
770
+ "win32": "Mostrar no Explorador de Arquivos",
771
+ "other": "Mostrar no gerenciador de arquivos"
772
+ },
773
+ "changedOnly": "Só os alterados",
774
+ "sortBy": "Ordenar por...",
775
+ "sort": {
776
+ "name": "Nome",
777
+ "date": "Data de modificação",
778
+ "size": "Tamanho"
779
+ },
780
+ "expandAll": "Expandir mais um nível",
781
+ "collapseAll": "Recolher tudo",
782
+ "refresh": "Atualizar"
783
+ },
784
+ "colors": {
785
+ "amber": "Âmbar (padrão)",
786
+ "blue": "Azul",
787
+ "green": "Verde",
788
+ "red": "Vermelho",
789
+ "purple": "Roxo",
790
+ "cyan": "Ciano",
791
+ "yellow": "Amarelo",
792
+ "brown": "Marrom",
793
+ "grey": "Cinza"
794
+ },
795
+ "send": {
796
+ "assistant": "Assistente",
797
+ "session": "a sessão em foco",
798
+ "done": {
799
+ "one": "“{name}” enviado para {target}.",
800
+ "other": "{count} itens enviados para {target}."
801
+ },
802
+ "failed": "Não foi possível enviar para {target}."
803
+ },
804
+ "edit": {
805
+ "rename": "Novo nome de {name}",
806
+ "newFile": "Nome do novo arquivo",
807
+ "newFolder": "Nome da nova pasta",
808
+ "taken": "Já existe “{name}” nesta pasta.",
809
+ "gone": "“{name}” sumiu do disco."
810
+ },
811
+ "delete": {
812
+ "titleOne": "Excluir “{name}”?",
813
+ "titleMany": "Excluir {count} itens?",
814
+ "toTrash": {
815
+ "win32": "Dá para restaurar pela Lixeira.",
816
+ "other": "Dá para recuperar pela Lixeira."
817
+ },
818
+ "forGood": "Este sistema não tem Lixeira: a exclusão é definitiva.",
819
+ "forGoodLegacy": "Não há Lixeira até o servidor ser reiniciado: a exclusão é definitiva.",
820
+ "unsaved": {
821
+ "one": "“{name}” tem alterações não salvas no editor.",
822
+ "other": "{count} deles têm alterações não salvas no editor."
823
+ },
824
+ "moveToTrash": {
825
+ "win32": "Mover para a Lixeira",
826
+ "other": "Mover para a Lixeira"
827
+ },
828
+ "deleteForever": "Excluir de vez",
829
+ "noTrashTitle": "Este disco não tem Lixeira",
830
+ "noTrashOne": "“{name}” está em um disco sem Lixeira. Nada foi excluído. Excluir de vez?",
831
+ "noTrashMany": "{count} itens estão em um disco sem Lixeira e não foram excluídos. Excluir de vez?",
832
+ "notEmpty": "Até o servidor ser reiniciado, só dá para excluir uma pasta vazia.",
833
+ "stopped": "{done} de {total} excluídos de vez; parou em “{name}”. {why}",
834
+ "stoppedTrash": {
835
+ "win32": "{done} de {total} foram para a Lixeira; parou em “{name}”. {why}",
836
+ "other": "{done} de {total} foram para a Lixeira; parou em “{name}”. {why}"
837
+ },
838
+ "done": {
839
+ "one": "“{name}” excluído de vez.",
840
+ "other": "{count} itens excluídos de vez."
841
+ },
842
+ "doneTrash": {
843
+ "win32": {
844
+ "one": "“{name}” foi para a Lixeira.",
845
+ "other": "{count} itens foram para a Lixeira."
846
+ },
847
+ "other": {
848
+ "one": "“{name}” foi para a Lixeira.",
849
+ "other": "{count} itens foram para a Lixeira."
850
+ }
851
+ }
852
+ },
853
+ "replace": {
854
+ "title": "Substituir o que já existe?",
855
+ "one": "Já existe “{name}” em “{folder}”.",
856
+ "many": "{count} itens já existem em “{folder}”.",
857
+ "toTrash": {
858
+ "win32": "O que for substituído vai para a Lixeira.",
859
+ "other": "O que for substituído vai para a Lixeira."
860
+ },
861
+ "forGood": "O que for substituído não tem volta.",
862
+ "unsaved": {
863
+ "one": "“{name}” tem alterações não salvas no editor. Elas são salvas antes da substituição.",
864
+ "other": "{count} deles têm alterações não salvas no editor. Elas são salvas antes da substituição."
865
+ },
866
+ "notSaved": "Não foi possível salvar “{name}”. Nada foi substituído.",
867
+ "confirm": "Substituir"
868
+ },
869
+ "move": {
870
+ "same": "Já está nessa pasta.",
871
+ "done": {
872
+ "one": "“{name}” movido para “{folder}”.",
873
+ "other": "{count} itens movidos para “{folder}”."
874
+ },
875
+ "stopped": "{done} de {total} movidos; parou em “{name}”. {why}"
876
+ },
877
+ "copy": {
878
+ "done": {
879
+ "one": "“{name}” copiado para “{folder}”.",
880
+ "other": "{count} itens copiados para “{folder}”."
881
+ },
882
+ "stopped": "{done} de {total} copiados; parou em “{name}”. {why}",
883
+ "partial": "“{name}” ficou lá só em parte."
884
+ },
885
+ "duplicate": {
886
+ "done": {
887
+ "one": "“{name}” criado.",
888
+ "other": "{count} cópias criadas."
889
+ }
890
+ },
891
+ "clipboard": {
892
+ "cut": {
893
+ "one": "“{name}” recortado. Escolha uma pasta e cole.",
894
+ "other": "{count} itens recortados. Escolha uma pasta e cole."
895
+ },
896
+ "copied": {
897
+ "one": "“{name}” copiado. Escolha uma pasta e cole.",
898
+ "other": "{count} itens copiados. Escolha uma pasta e cole."
899
+ }
900
+ },
901
+ "copied": {
902
+ "path": {
903
+ "one": "Caminho copiado.",
904
+ "other": "{count} caminhos copiados."
905
+ },
906
+ "name": "Nome copiado.",
907
+ "failed": "O navegador não permitiu copiar."
908
+ },
909
+ "upload": {
910
+ "none": "Nada para copiar.",
911
+ "progress": "Copiando {done} de {total}...",
912
+ "tooMany": "São mais de {max} arquivos. Copie a pasta pelo gerenciador de arquivos do sistema.",
913
+ "done": {
914
+ "one": "“{name}” copiado para “{folder}”.",
915
+ "other": "{count} arquivos copiados para “{folder}”."
916
+ }
917
+ },
918
+ "preview": {
919
+ "label": "Prévia de {name}",
920
+ "image": "Imagem",
921
+ "openAsText": "Abrir como texto",
922
+ "noPreview": "A imagem aparece depois que o servidor for reiniciado.",
923
+ "failed": "Não foi possível carregar a imagem.",
924
+ "notText": "Não é texto: o editor não abre."
925
+ },
926
+ "kind": {
927
+ "archive": "Arquivo compactado",
928
+ "document": "Documento",
929
+ "audio": "Áudio",
930
+ "video": "Vídeo",
931
+ "font": "Fonte",
932
+ "database": "Banco de dados",
933
+ "program": "Programa ou biblioteca",
934
+ "diskImage": "Imagem de disco ou instalador",
935
+ "design": "Arquivo de design ou imagem",
936
+ "system": "Arquivo do sistema"
937
+ },
938
+ "open": {
939
+ "deleted": "“{name}” foi excluído: não está no disco.",
940
+ "linkOutside": "“{name}” é um link para fora do projeto. Não dá para abrir daqui.",
941
+ "linkBroken": "“{name}” é um link para algo que não existe."
942
+ },
943
+ "reveal": {
944
+ "none": "Nenhum arquivo aberto no editor.",
945
+ "notShown": "“{name}” não está neste projeto."
946
+ },
947
+ "watch": {
948
+ "none": "Este projeto não pode ser monitorado agora. A árvore é lida de novo quando você volta a esta janela.",
949
+ "partial": "Algumas pastas abertas não podem ser monitoradas agora. A árvore é lida de novo quando você volta a esta janela."
950
+ },
951
+ "error": {
952
+ "exists": "Já existe “{name}”. Nada foi substituído.",
953
+ "gone": "Não está mais no disco.",
954
+ "denied": "O sistema não permitiu (sem permissão).",
955
+ "root": "Uma pasta de projeto não pode ser renomeada, movida, excluída nem substituída por aqui.",
956
+ "intoSelf": "Uma pasta não pode ir para dentro dela mesma.",
957
+ "tooLarge": "Esse arquivo é grande demais.",
958
+ "busy": "Outro programa está usando.",
959
+ "noSpace": "O disco está cheio.",
960
+ "outside": "Isso fica fora das pastas dos projetos.",
961
+ "notDir": "Isso não é uma pasta.",
962
+ "offline": "O servidor não respondeu. Nada foi alterado.",
963
+ "noReveal": "Este sistema não tem gerenciador de arquivos para mostrar.",
964
+ "noTrash": "Não há Lixeira para isso. Ficou como estava.",
965
+ "changed": "Uma pasta mudou enquanto isso estava em andamento. Nada mais foi feito.",
966
+ "otherDisk": "Está em outro disco. Copie para lá e depois exclua o original.",
967
+ "needsRestart": "Isso passa a funcionar depois que o servidor for reiniciado.",
968
+ "owner": "Só o dono pode usar o Explorador de Arquivos.",
969
+ "limit": "É coisa demais de uma vez.",
970
+ "notImage": "Isso não é uma imagem.",
971
+ "failed": "Não deu certo.",
972
+ "name": {
973
+ "empty": "Digite um nome.",
974
+ "dots": "“.” e “..” não são nomes.",
975
+ "separator": "O nome não pode ter “/” nem “\\”.",
976
+ "control": "O nome não pode ter caracteres de controle.",
977
+ "reserved": "O Windows reserva esse nome.",
978
+ "chars": "No Windows o nome não pode ter < > : \" | ? *",
979
+ "trailing": "No Windows o nome não pode terminar com espaço ou ponto.",
980
+ "long": "Esse nome é longo demais.",
981
+ "other": "Esse nome não pode ser usado."
982
+ }
983
+ },
984
+ "gitPanel": {
985
+ "label": "Branch e commit",
986
+ "branch": "Branch",
987
+ "commit": "Commit",
988
+ "message": "Mensagem...",
989
+ "generate": "Gerar mensagem",
990
+ "commitAction": "Fazer commit de tudo",
991
+ "clean": "Nada a commitar",
992
+ "count": {
993
+ "modified": "{count} modificados",
994
+ "added": "{count} adicionados",
995
+ "deleted": "{count} excluídos",
996
+ "untracked": "{count} novos",
997
+ "other": "{count} outros"
998
+ },
999
+ "switched": "Agora em {branch}",
1000
+ "checkoutFailed": "Falha ao trocar de branch",
1001
+ "commitFailed": "Falha no commit",
1002
+ "committed": "Commit feito",
1003
+ "failed": "Falhou",
1004
+ "noChanges": "Sem alterações",
1005
+ "generateFailed": "Falha ao gerar a mensagem"
1006
+ },
1007
+ "trust": {
1008
+ "title": "Pasta de outro usuário",
1009
+ "body": "O git se recusa a ler esta pasta porque ela pertence a outra conta de usuário. Ao confiar nela, a pasta entra na sua configuração global safe.directory, e o SynaBun consegue mostrar o branch e as alterações.",
1010
+ "skip": "Pular",
1011
+ "confirm": "Confiar na pasta",
1012
+ "trusting": "Confiando...",
1013
+ "done": "Pasta marcada como confiável",
1014
+ "failed": "Não foi possível confiar"
1015
+ },
1016
+ "help": {
1017
+ "title": "Explorador de Arquivos",
1018
+ "toggle": "Abrir / fechar o explorador de arquivos",
1019
+ "move": "Andar pelas linhas",
1020
+ "fold": "Abrir / fechar a pasta, ir para a pasta de cima",
1021
+ "open": "Abrir no editor e manter a aba",
1022
+ "peek": "Espiar o arquivo na aba reutilizada",
1023
+ "range": "Selecionar várias linhas",
1024
+ "typeAhead": "Ir até uma linha digitando o nome",
1025
+ "offers": "Ir até “Mostrar mais” ou “Tentar de novo” e usar",
1026
+ "rename": "Renomear",
1027
+ "delete": "Excluir (vai para a Lixeira)",
1028
+ "clipboard": "Recortar / copiar / colar",
1029
+ "copyPath": "Copiar caminho / caminho relativo",
1030
+ "goToFile": "Ir para arquivo",
1031
+ "menu": "Abrir o menu",
1032
+ "escape": "Desistir do recorte, limpar o filtro"
1033
+ }
1034
+ },
271
1035
  "detail": {
272
1036
  "category": "Categoria",
273
1037
  "subcategory": "Subcategoria",
@@ -583,6 +1347,10 @@
583
1347
  "appearance": {
584
1348
  "label": "Aparência",
585
1349
  "help": "Tema, tamanho e ícones"
1350
+ },
1351
+ "code_editor": {
1352
+ "label": "Editor de código",
1353
+ "help": "Preferências de edição e autocompletar com IA"
586
1354
  }
587
1355
  },
588
1356
  "page": {
@@ -616,7 +1384,7 @@
616
1384
  },
617
1385
  "automations": {
618
1386
  "title": "Automações",
619
- "purpose": "Escolha o que acontece automaticamente enquanto você programa: saudações, hooks, acesso online, ações sociais e o fluxo do YouTube."
1387
+ "purpose": "Escolha o que acontece automaticamente: a saudação, o que o Assistente sabe sobre você, hooks, acesso online, ações sociais e o pipeline do YouTube."
620
1388
  },
621
1389
  "messages": {
622
1390
  "title": "Mensagens",
@@ -629,6 +1397,10 @@
629
1397
  "appearance": {
630
1398
  "title": "Aparência",
631
1399
  "purpose": "Escolha um tema e ajuste o tamanho, as cores e os ícones de arquivos da interface."
1400
+ },
1401
+ "code_editor": {
1402
+ "title": "Editor de código",
1403
+ "purpose": "Configure o editor que abre os arquivos do Explorador de arquivos: como o texto é exibido, indentado e salvo, e o autocompletar com IA."
632
1404
  }
633
1405
  },
634
1406
  "section": {
@@ -656,12 +1428,12 @@
656
1428
  },
657
1429
  "automations": {
658
1430
  "greetings": {
659
- "title": "Saudações",
660
- "purpose": "O que cada assistente diz ao iniciar uma sessão. Ative uma saudação para editá-la."
1431
+ "title": "Saudação",
1432
+ "purpose": "Uma saudação para todos os agentes. Quando você volta e abre uma nova sessão, o SynaBun diz em uma ou duas frases onde você parou e o que aconteceu enquanto esteve fora."
661
1433
  },
662
1434
  "automation_behavior": {
663
1435
  "title": "Comportamento das automações",
664
- "purpose": "O que o SynaBun faz sozinho enquanto o Claude Code trabalha: lembrar, aprender e proteger."
1436
+ "purpose": "O que o Assistente sabe sobre você e traz à tona sozinho, em qualquer modelo. Os hooks antigos do Claude Code ficam abaixo."
665
1437
  },
666
1438
  "online_access": {
667
1439
  "title": "Acesso online",
@@ -945,6 +1717,16 @@
945
1717
  "title": "Idioma",
946
1718
  "purpose": "O idioma que o SynaBun usa."
947
1719
  }
1720
+ },
1721
+ "code_editor": {
1722
+ "ai_autocomplete": {
1723
+ "title": "Autocompletar com IA",
1724
+ "purpose": "Sugestões em cinza depois do cursor, que Tab aceita. Desligado até você ligar."
1725
+ },
1726
+ "editing": {
1727
+ "title": "Edição",
1728
+ "purpose": "Como o editor exibe, indenta e salva o texto. O menu Exibir do editor altera as mesmas configurações."
1729
+ }
948
1730
  }
949
1731
  },
950
1732
  "common": {
@@ -1014,90 +1796,6 @@
1014
1796
  "label": "Fazer backup agora",
1015
1797
  "help": "Cria um backup imediatamente na pasta escolhida."
1016
1798
  },
1017
- "aut001": {
1018
- "label": "Mostrar saudação do Claude Code",
1019
- "help": "Ativa ou desativa a saudação do Claude Code. Ative para editá-la."
1020
- },
1021
- "aut002": {
1022
- "label": "Saudação para",
1023
- "help": "Cada projeto pode ter sua própria saudação. O padrão é usado quando o projeto não tem uma."
1024
- },
1025
- "aut003": {
1026
- "label": "Texto da saudação",
1027
- "help": "O que o assistente diz primeiro. Palavras entre {braces} são preenchidas para você."
1028
- },
1029
- "aut004": {
1030
- "label": "Mostrar lembretes",
1031
- "help": "Lista seus lembretes abaixo da saudação."
1032
- },
1033
- "aut005": {
1034
- "label": "Mostrar última sessão",
1035
- "help": "Adiciona uma linha sobre o que a última sessão fez."
1036
- },
1037
- "aut009": {
1038
- "label": "Adicionar lembrete",
1039
- "help": "Adiciona uma linha de lembrete vazia."
1040
- },
1041
- "aut010": {
1042
- "label": "Salvar saudação",
1043
- "help": "Salva a saudação do projeto escolhido acima."
1044
- },
1045
- "aut011": {
1046
- "label": "Mostrar saudação do Codex",
1047
- "help": "Ativa ou desativa a saudação do Codex. Ative para editá-la."
1048
- },
1049
- "aut012": {
1050
- "label": "Saudação para",
1051
- "help": "Cada projeto pode ter sua própria saudação. O padrão é usado quando o projeto não tem uma."
1052
- },
1053
- "aut013": {
1054
- "label": "Texto da saudação",
1055
- "help": "O que o assistente diz primeiro. Palavras entre {braces} são preenchidas para você."
1056
- },
1057
- "aut014": {
1058
- "label": "Mostrar lembretes",
1059
- "help": "Lista seus lembretes abaixo da saudação."
1060
- },
1061
- "aut015": {
1062
- "label": "Mostrar última sessão",
1063
- "help": "Adiciona uma linha sobre o que a última sessão fez."
1064
- },
1065
- "aut016": {
1066
- "label": "Adicionar lembrete",
1067
- "help": "Adiciona uma linha de lembrete vazia."
1068
- },
1069
- "aut017": {
1070
- "label": "Salvar saudação",
1071
- "help": "Salva a saudação do projeto escolhido acima."
1072
- },
1073
- "aut018": {
1074
- "label": "Mostrar saudação do OpenCode",
1075
- "help": "Ativa ou desativa a saudação do OpenCode. Ative para editá-la."
1076
- },
1077
- "aut019": {
1078
- "label": "Saudação para",
1079
- "help": "Cada projeto pode ter sua própria saudação. O padrão é usado quando o projeto não tem uma."
1080
- },
1081
- "aut020": {
1082
- "label": "Texto da saudação",
1083
- "help": "O que o assistente diz primeiro. Palavras entre {braces} são preenchidas para você."
1084
- },
1085
- "aut021": {
1086
- "label": "Mostrar lembretes",
1087
- "help": "Lista seus lembretes abaixo da saudação."
1088
- },
1089
- "aut022": {
1090
- "label": "Mostrar última sessão",
1091
- "help": "Adiciona uma linha sobre o que a última sessão fez."
1092
- },
1093
- "aut026": {
1094
- "label": "Adicionar lembrete",
1095
- "help": "Adiciona uma linha de lembrete vazia."
1096
- },
1097
- "aut027": {
1098
- "label": "Salvar saudação",
1099
- "help": "Salva a saudação do projeto escolhido acima."
1100
- },
1101
1799
  "aut028": {
1102
1800
  "label": "Início da sessão",
1103
1801
  "help": "Carrega memória e contexto ao iniciar uma nova sessão."
@@ -1156,7 +1854,7 @@
1156
1854
  },
1157
1855
  "aut042": {
1158
1856
  "label": "Criar chave de acesso",
1159
- "help": "Cria uma chave que protege o endereço público. A chave existente para de funcionar."
1857
+ "help": "Cria a chave com que o MCP remoto é acessado. A chave existente para de funcionar."
1160
1858
  },
1161
1859
  "aut043": {
1162
1860
  "label": "Copiar chave de acesso",
@@ -1164,7 +1862,7 @@
1164
1862
  },
1165
1863
  "aut044": {
1166
1864
  "label": "Revogar",
1167
- "help": "Exclui a chave. O endereço público passa a aceitar qualquer pessoa."
1865
+ "help": "Exclui a chave. As conexões que a usam param de funcionar."
1168
1866
  },
1169
1867
  "aut045": {
1170
1868
  "label": "Conectar OpenClaw",
@@ -2382,10 +3080,6 @@
2382
3080
  "label": "Compatível com",
2383
3081
  "help": "Quais assistentes esta parte do SynaBun suporta."
2384
3082
  },
2385
- "aut047": {
2386
- "label": "Placeholders disponíveis",
2387
- "help": "Mostra as palavras entre {braces} e o que cada uma representa."
2388
- },
2389
3083
  "aut048": {
2390
3084
  "label": "Estado do endereço público",
2391
3085
  "help": "Se o endereço público está em execução e qual é o endereço."
@@ -2557,6 +3251,130 @@
2557
3251
  "app001": {
2558
3252
  "label": "Idioma",
2559
3253
  "help": "O SynaBun recarrega para aplicar o idioma."
3254
+ },
3255
+ "aut053": {
3256
+ "label": "Conhecimento sobre você",
3257
+ "help": "Começa cada conversa do Assistente com um resumo curto do que o SynaBun aprendeu sobre como você trabalha e continua aprendendo com o que você digita. O aprendizado requer o Jev. Desativado: sem resumo e nada novo é aprendido; o que já está na Memória permanece."
3258
+ },
3259
+ "aut054": {
3260
+ "label": "Lembretes de interações recentes",
3261
+ "help": "Lembra o Assistente da última conversa, do que ficou em aberto e do que mudou desde então. Desativado: sem lembretes, e nenhum registro da conversa é guardado para a próxima."
3262
+ },
3263
+ "aut055": {
3264
+ "label": "Mostrar o rastro",
3265
+ "help": "Adiciona uma linha abaixo de cada resposta no painel do Assistente: o que foi dito ao modelo, o que foi retido e o que foi aprendido. Requer uma das duas opções acima. Desativado: as novas respostas ficam sem a linha; as duas opções continuam funcionando."
3266
+ },
3267
+ "aut056": {
3268
+ "label": "O que uma nova conversa sabe sobre você",
3269
+ "help": "O resumo com que toda nova conversa do Assistente começa. Selecione uma linha para abrir a memória e corrigi-la."
3270
+ },
3271
+ "aut057": {
3272
+ "label": "Ver tudo na Memória",
3273
+ "help": "Abre o explorador de memórias em tudo o que o SynaBun sabe sobre você."
3274
+ },
3275
+ "aut058": {
3276
+ "label": "Me cumprimentar quando eu voltar",
3277
+ "help": "No Assistente, nos painéis do Claude Code, Codex e OpenCode e em uma sessão do Claude Code no terminal: depois de uma hora fora, e só quando há algo novo a dizer. O SynaBun escreve antes, então o modelo da própria sessão não gasta nada com isso. Desligado: toda sessão abre em silêncio."
3278
+ },
3279
+ "aut059": {
3280
+ "label": "Como uma nova sessão abriria",
3281
+ "help": "Feita a partir das suas conversas e sessões recentes, das execuções que você despachou, dos agendamentos que não terminaram e do que o SynaBun sabe sobre você. Abra “Com base em” para ver os registros e quanto a frase custou."
3282
+ },
3283
+ "aut060": {
3284
+ "label": "Escrever agora",
3285
+ "help": "Pede a frase ao escritor agora, sem esperar o segundo plano: uma chamada pequena no modelo Claude mais barato."
3286
+ },
3287
+ "edt001": {
3288
+ "label": "Sugerir código enquanto digito",
3289
+ "help": "Cada vez que você para de digitar, o código ao redor do cursor é enviado ao modelo escolhido abaixo, e a sugestão aparece como texto cinza. Os arquivos da lista “Nunca enviados” não são enviados. Desligado: nada é enviado e nenhum modelo é consultado."
3290
+ },
3291
+ "edt002": {
3292
+ "label": "Consultar",
3293
+ "help": "Os modelos do OpenCode são consultados por um pequeno servidor OpenCode próprio, iniciado quando a primeira sugestão é necessária e encerrado após dez minutos sem uso. Um endpoint seu é um Ollama local ou qualquer endereço que fale o protocolo da OpenAI."
3294
+ },
3295
+ "edt003": {
3296
+ "label": "Modelo",
3297
+ "help": "Os modelos do OpenCode conectados que você não ocultou, os rápidos primeiro. Testar envia um exemplo fixo, nunca o seu código."
3298
+ },
3299
+ "edt004": {
3300
+ "label": "Encontrar o mais rápido",
3301
+ "help": "Envia o exemplo a até quatro modelos rápidos e seleciona o mais veloz. Leva alguns segundos."
3302
+ },
3303
+ "edt005": {
3304
+ "label": "Tipo de endpoint",
3305
+ "help": "Ollama, ou um servidor que fale o protocolo de completions ou de chat da OpenAI."
3306
+ },
3307
+ "edt006": {
3308
+ "label": "Endereço",
3309
+ "help": "Para o Ollama, o próprio servidor. Para um servidor compatível com a OpenAI, o endereço completo para onde o pedido é enviado."
3310
+ },
3311
+ "edt007": {
3312
+ "label": "Nome do modelo",
3313
+ "help": "O nome pelo qual o endpoint conhece o modelo."
3314
+ },
3315
+ "edt008": {
3316
+ "label": "Formato do pedido",
3317
+ "help": "Preenchimento envia o texto antes e depois do cursor, para modelos treinados em preencher lacunas. Chat envia uma mensagem, para qualquer modelo de chat."
3318
+ },
3319
+ "edt009": {
3320
+ "label": "Chave de API",
3321
+ "help": "Enviada ao endpoint como bearer token. Fica no arquivo .env do SynaBun: nunca é mostrada de novo nem devolvida a esta página."
3322
+ },
3323
+ "edt010": {
3324
+ "label": "Testar endpoint",
3325
+ "help": "Envia um exemplo fixo ao endpoint, nunca o seu código."
3326
+ },
3327
+ "edt011": {
3328
+ "label": "Nunca enviados",
3329
+ "help": "Nomes de arquivo que o autocompletar com IA nunca lê, um padrão por linha; * vale por qualquer sequência de caracteres. Texto que contém uma chave privada também não é enviado, seja qual for o nome do arquivo."
3330
+ },
3331
+ "edt012": {
3332
+ "label": "Restaurar a lista padrão",
3333
+ "help": "Repõe a lista que vem com o SynaBun: arquivos de ambiente, chaves, certificados e arquivos de credenciais."
3334
+ },
3335
+ "edt013": {
3336
+ "label": "Hoje",
3337
+ "help": "Pedidos enviados a um modelo hoje, os tokens deles e quantas sugestões você aceitou."
3338
+ },
3339
+ "edt014": {
3340
+ "label": "Tamanho do texto",
3341
+ "help": "O tamanho do texto no editor, de 10 a 18 px."
3342
+ },
3343
+ "edt015": {
3344
+ "label": "Ligaduras",
3345
+ "help": "Desenha pares de caracteres como => e != como um único glifo, nas fontes que os têm."
3346
+ },
3347
+ "edt016": {
3348
+ "label": "Quebrar linhas longas",
3349
+ "help": "Uma linha mais larga que o editor continua na linha de baixo em vez de rolar para o lado."
3350
+ },
3351
+ "edt017": {
3352
+ "label": "Minimapa",
3353
+ "help": "Uma visão geral do arquivo na borda direita do editor. Ele não aparece quando o editor tem menos de 760 px de largura nem em arquivos com mais de 2 MB."
3354
+ },
3355
+ "edt018": {
3356
+ "label": "Guias de indentação",
3357
+ "help": "Linhas verticais finas que mostram cada nível de indentação."
3358
+ },
3359
+ "edt019": {
3360
+ "label": "Mostrar espaços em branco",
3361
+ "help": "Desenha espaços e tabulações como marcas discretas: em lugar nenhum, no texto selecionado ou em todo o texto."
3362
+ },
3363
+ "edt020": {
3364
+ "label": "Indentar com",
3365
+ "help": "O que a tecla Tab insere. Detectar segue o arquivo que está aberto."
3366
+ },
3367
+ "edt021": {
3368
+ "label": "Tamanho da tabulação",
3369
+ "help": "A largura com que uma tabulação é desenhada e quantos espaços tem um nível de indentação. Detectar segue o arquivo que está aberto."
3370
+ },
3371
+ "edt022": {
3372
+ "label": "Remover espaços no fim das linhas ao salvar",
3373
+ "help": "Remove espaços e tabulações do fim de cada linha quando um arquivo é salvo. Arquivos Markdown ficam como estão: neles, dois espaços no fim de uma linha são uma quebra de linha."
3374
+ },
3375
+ "edt023": {
3376
+ "label": "Terminar arquivos com uma quebra de linha ao salvar",
3377
+ "help": "Quando um arquivo é salvo, a quebra de linha final que faltar é adicionada e as linhas vazias depois da última linha de texto são removidas."
2560
3378
  }
2561
3379
  },
2562
3380
  "pane": {
@@ -3383,34 +4201,15 @@
3383
4201
  "failed": "com falha"
3384
4202
  },
3385
4203
  "hooks": {
3386
- "greeting": {
3387
- "title": {
3388
- "cc": "Saudação do Claude Code",
3389
- "codex": "Saudação do painel do Codex",
3390
- "opencode": "Saudação do painel do OpenCode"
3391
- },
3392
- "purpose": {
3393
- "cc": "O que o Claude Code diz ao iniciar uma sessão.",
3394
- "codex": "Apenas para o painel do Codex. É mantida separadamente da saudação do Claude.",
3395
- "opencode": "Apenas para o painel do OpenCode. É mantida separadamente das demais."
3396
- },
3397
- "global": "Todos os projetos (padrão)",
3398
- "templatePlaceholder": "{time_greeting}! Trabalhando em **{project_label}** (branch {branch}). {date}.",
3399
- "placeholder": "Marcador de posição",
3400
- "showsAs": "Exibido como",
3401
- "example": "Exemplo",
3402
- "reminders": "Lembretes",
3403
- "remindersHelp": "Comandos curtos exibidos abaixo da saudação, como um script de inicialização. Arraste uma linha para reordenar."
3404
- },
3405
- "claudeOnly": "Aplicam-se ao Claude Code. Os painéis do Codex e do OpenCode não os leem.",
4204
+ "claudeOnly": "Aplicam-se às sessões do Claude Code que você mesmo executa. O Assistente usa as três opções acima, em qualquer modelo.",
3406
4205
  "ul": {
3407
4206
  "every": "Refletir a cada",
3408
4207
  "interactions": "interações",
3409
4208
  "max": "no máximo",
3410
4209
  "perSession": "vezes por sessão"
3411
4210
  },
3412
- "hooksTitle": "Hooks",
3413
- "hooksPurpose": "Os momentos de uma sessão do Claude Code em que o SynaBun intervém. Deixe ativados, a menos que esteja investigando um problema.",
4211
+ "hooksTitle": "Hooks para o Claude Code fora do Assistente",
4212
+ "hooksPurpose": "Para sessões do Claude Code fora do Assistente: comportamentos de memória e os momentos em que o SynaBun intervém. Mantenha-os ativados, a menos que esteja investigando um problema.",
3414
4213
  "compat": {
3415
4214
  "claude": "Compatível com Claude",
3416
4215
  "gemini": "Compatível com Gemini",
@@ -3425,6 +4224,7 @@
3425
4224
  "apikey": {
3426
4225
  "title": "Chave de acesso",
3427
4226
  "none": "Sem chave: qualquer pessoa com o endereço pode conectar",
4227
+ "noneClosed": "Sem chave: o MCP não pode ser acessado de fora",
3428
4228
  "saveNow": "Copie agora. Não será exibida novamente."
3429
4229
  },
3430
4230
  "connectorsHint": "Em {link}, abra Conectores e adicione o endereço de conexão.",
@@ -3454,14 +4254,7 @@
3454
4254
  "active": "Ativo",
3455
4255
  "failedToToggleHook": "Falha ao alternar hook",
3456
4256
  "failedToToggleFeature": "Falha ao alternar recurso",
3457
- "failedToToggleCodexGreeting": "Falha ao alternar saudação do Codex",
3458
- "failedToToggleOpencodeGreeting": "Falha ao alternar saudação do OpenCode",
3459
- "dragToReorder": "Arrastar para reordenar",
3460
- "label": "Rótulo",
3461
- "command": "Comando",
3462
- "remove": "Remover",
3463
4257
  "failedToSave": "Falha ao salvar",
3464
- "greetingConfigSaved": "Configuração da saudação salva",
3465
4258
  "dev": "dev",
3466
4259
  "skillUninstalledRestartToApply": "Skill desinstalada — reinicie {runtime} para aplicar",
3467
4260
  "skillInstalledRestartToApply": "Skill instalada — reinicie {runtime} para aplicar",
@@ -3482,12 +4275,83 @@
3482
4275
  "failedToGenerateKey": "Falha ao gerar chave",
3483
4276
  "copyKey": "Copiar chave",
3484
4277
  "revokeThisApiKeyTheMcp": "Revogar esta chave de API? O endpoint MCP ficará aberto.",
4278
+ "revokeKeyClosed": "Revogar esta chave de acesso? Nada alcança o MCP de fora até você criar uma nova.",
3485
4279
  "noKeyConfiguredTunnelIsOpen": "Nenhuma chave configurada - o túnel está aberto",
3486
4280
  "generateKey": "Gerar chave",
3487
- "goodMorning": "Bom dia",
3488
- "goodAfternoon": "Boa tarde",
3489
- "goodEvening": "Boa noite",
3490
- "failed2": "Falhou: {message}"
4281
+ "failed2": "Falhou: {message}",
4282
+ "uc": {
4283
+ "restart": "Reinicie o SynaBun para usar estas opções: o servidor em execução foi iniciado antes de elas existirem.",
4284
+ "failed": "O Assistente está funcionando sem estas opções: esta parte do SynaBun não iniciou ({reason}). Reinicie o SynaBun; se acontecer de novo, o log do servidor mostra o motivo.",
4285
+ "failedNoReason": "O Assistente está funcionando sem estas opções: esta parte do SynaBun não iniciou. Reinicie o SynaBun; se acontecer de novo, o log do servidor mostra o motivo.",
4286
+ "unreadable": "O SynaBun não conseguiu ler estas opções ({reason}). Nada foi alterado. Feche os Ajustes e abra de novo.",
4287
+ "unreadableNoReason": "O SynaBun não conseguiu ler estas opções. Nada foi alterado. Feche os Ajustes e abra de novo.",
4288
+ "applies": "A alteração vale a partir da sua próxima mensagem ao Assistente.",
4289
+ "noStore": "A memória não está disponível neste servidor, então isto não faz nada por enquanto.",
4290
+ "tokens": "{tokens} de {max} tokens",
4291
+ "openMemory": "Abrir esta memória",
4292
+ "seed": "de uma nota anterior",
4293
+ "empty": "Nada aprendido ainda. A lista se preenche conforme você diz ao Assistente como quer que as coisas sejam feitas.",
4294
+ "omitted": "Outros {n} não couberam e só aparecem quando forem relevantes.",
4295
+ "learn": {
4296
+ "killSwitch": "Sem aprender no momento: as avaliações inteligentes estão desativadas neste servidor (SYNABUN_TYPESAFE=off). O que já se sabe continua sendo usado.",
4297
+ "masterOff": "Sem aprender no momento: o {page} está desativado. O que já se sabe continua sendo usado.",
4298
+ "noKey": "Sem aprender no momento: o {page} está sem chave de API. O que já se sabe continua sendo usado.",
4299
+ "surfaceOff": "Sem aprender no momento: “User learning” está desativado no {page}. O que já se sabe continua sendo usado.",
4300
+ "waiting": "Sem aprender por um instante: o {page} precisou esperar antes do próximo pedido. O que já se sabe continua sendo usado.",
4301
+ "unavailable": "Sem aprender no momento: o {page} não está disponível. O que já se sabe continua sendo usado."
4302
+ },
4303
+ "openPage": "Abrir {page}",
4304
+ "writer": {
4305
+ "missing": "As novas afirmações ficam com a sua própria frase: o redator de afirmações não está disponível neste servidor.",
4306
+ "failed": "A última afirmação ficou com a sua própria frase: o redator não conseguiu rodar ({reason}). Ele usa o seu login do Claude Code.",
4307
+ "failedNoReason": "A última afirmação ficou com a sua própria frase: o redator não conseguiu rodar. Ele usa o seu login do Claude Code."
4308
+ },
4309
+ "trace": {
4310
+ "nothing": "Nada para mostrar enquanto as duas opções acima estiverem desativadas."
4311
+ },
4312
+ "off": {
4313
+ "note": "Nada: “Conhecimento sobre você” está desativado, então uma nova conversa começa sem resumo. O que o SynaBun aprendeu continua na Memória."
4314
+ },
4315
+ "save": {
4316
+ "on": "Não foi possível ativar “{name}”: {reason}. Nada foi alterado.",
4317
+ "off": "Não foi possível desativar “{name}”: {reason}. Nada foi alterado.",
4318
+ "noAnswer": "o SynaBun não respondeu",
4319
+ "oldServer": "o servidor em execução ainda não tem esta opção"
4320
+ }
4321
+ },
4322
+ "greet": {
4323
+ "state": {
4324
+ "oldServer": "Reinicie o SynaBun para usar isto. O servidor em execução foi iniciado antes de a saudação existir.",
4325
+ "failed": "A saudação não iniciou: {reason}. As sessões abrem em silêncio até isso ser corrigido e o SynaBun reiniciado.",
4326
+ "failedUnknown": "A saudação não iniciou. As sessões abrem em silêncio até isso ser corrigido e o SynaBun reiniciado.",
4327
+ "unreadable": "Não foi possível ler o ajuste da saudação ({reason}).",
4328
+ "unreadableUnknown": "Não foi possível ler o ajuste da saudação.",
4329
+ "killed": "Desligada por SYNABUN_GREETING=off no ambiente do servidor. Esta chave não faz nada até isso ser removido e o SynaBun reiniciado."
4330
+ },
4331
+ "note": {
4332
+ "noWriter": "Sem login do Claude para escrever: a saudação é montada a partir dos registros, sem modelo."
4333
+ },
4334
+ "preview": {
4335
+ "loading": "Lendo seus registros…",
4336
+ "now": "Uma nova sessão em {project} abriria com isto agora:",
4337
+ "recent": "Você esteve aqui há {time}, então uma nova sessão em {project} abre em silêncio. Depois de {gap} fora ela diria:",
4338
+ "moment": "um instante",
4339
+ "nothingNew": "A última saudação em {project} já disse isto, então uma nova sessão abre em silêncio até algo mudar:",
4340
+ "off": "Desligada. Ligada, uma nova sessão em {project} abriria com:",
4341
+ "firstSession": "Nada registrado em {project} ainda. Uma primeira sessão abre em silêncio.",
4342
+ "nothingToSay": "Nada a dizer em {project} agora. Uma nova sessão abre em silêncio.",
4343
+ "error": "Não foi possível montar a prévia ({reason}).",
4344
+ "spend": "Chamadas ao escritor hoje: {calls} de {cap} · {cost}",
4345
+ "spendNone": "Nenhuma chamada ao escritor hoje.",
4346
+ "writing": "Escrevendo…"
4347
+ },
4348
+ "save": {
4349
+ "failed": "Não foi possível salvar: {reason}. A chave voltou para onde estava.",
4350
+ "oldServer": "Não foi possível salvar: o servidor em execução ainda não tem a saudação. Reinicie o SynaBun.",
4351
+ "forbidden": "Não foi possível salvar: esta janela não tem permissão para alterar ajustes.",
4352
+ "noAnswer": "Não foi possível salvar: o servidor não respondeu. A chave voltou para onde estava."
4353
+ }
4354
+ }
3491
4355
  },
3492
4356
  "discord": {
3493
4357
  "tokenHelp": "Crie um bot em {link} e ative suas intents Message Content, Server Members e Presence.",
@@ -4733,10 +5597,11 @@
4733
5597
  "browser": "chrome, chromium, perfil, cookies, user agent, proxy, viewport, headless",
4734
5598
  "connected_tools": "mcp, servidor, plugin, ferramentas, morelogin, perfil, extensão",
4735
5599
  "tool_access": "skills, comandos de barra, permissões, permitir, negar, aprovar",
4736
- "automations": "hooks, saudação, túnel, tunnel, remoto, cloudflare, redes sociais, youtube",
5600
+ "automations": "assistente, conhecimento, hooks, saudação, túnel, tunnel, remoto, cloudflare, redes sociais, youtube",
4737
5601
  "messages": "whatsapp, discord, celular, telefone, chat, bot, mensagens",
4738
5602
  "notifications": "alertas, som, volume, banner, toast, silenciar, notificação do sistema",
4739
- "appearance": "tema, modo escuro, dark mode, skin, cor, fonte, tamanho do texto, idioma, ícones, zoom, visual"
5603
+ "appearance": "tema, modo escuro, dark mode, skin, cor, fonte, tamanho do texto, idioma, ícones, zoom, visual",
5604
+ "code_editor": "editor, código, fonte, tamanho do texto, quebra de linha, minimapa, espaços em branco, indentação, tabulações, autocompletar, completar, sugestões, copilot, texto fantasma, inline, ia, modelo, ollama, arquivo"
4740
5605
  },
4741
5606
  "section": {
4742
5607
  "ai_connections": {
@@ -4796,8 +5661,8 @@
4796
5661
  "tool_permissions": "permitir, aprovar, aprovação automática, perguntar"
4797
5662
  },
4798
5663
  "automations": {
4799
- "greetings": "boas-vindas, início da sessão, lembrete, olá, modelo",
4800
- "automation_behavior": "hooks, lembrar, recall, aprendizado, subagentes, compactação, proteção",
5664
+ "greetings": "boas-vindas, olá, retorno, voltar, de volta, ausência, onde parei, última sessão, o que aconteceu",
5665
+ "automation_behavior": "assistente, conhecimento, sobre mim, contexto do usuário, preferências, resumo, lembretes, rastro, hooks, lembrar, recall, aprendizado, subagentes, compactação, proteção",
4801
5666
  "online_access": "túnel, tunnel, cloudflare, remoto, url pública, chave de acesso, api key, claude web, openclaw, ponte",
4802
5667
  "social_platform_access": "redes sociais, twitter, x, facebook, instagram, linkedin, tiktok, permissões",
4803
5668
  "youtube_pipeline": "trailer, enviar, upload, baixar, download, oauth, client id, steam, canal, yt-dlp"
@@ -4833,6 +5698,10 @@
4833
5698
  "advanced_visual_tuning": "desfoque, blur, transparência, opacidade, sombra, raio, cantos, fonte, vidro",
4834
5699
  "file_icons": "explorador de arquivos, extensão, svg, ícone personalizado",
4835
5700
  "d2_graph": "2d, grafo, espaçamento, brilho, cartões"
5701
+ },
5702
+ "code_editor": {
5703
+ "ai_autocomplete": "autocompletar, completar, sugestões, copilot, texto fantasma, inline, tab, modelo, opencode, ollama, openai, endpoint, chave de api, mais rápido, latência, arquivos excluídos, segredos, env",
5704
+ "editing": "tamanho da fonte, tamanho do texto, ligaduras, quebra de linha, quebrar linhas, minimapa, guias de indentação, espaços em branco, espaços, tabulações, tamanho da tabulação, indentação, remover espaços no fim, quebra de linha final, ao salvar"
4836
5705
  }
4837
5706
  },
4838
5707
  "control": {
@@ -4863,6 +5732,99 @@
4863
5732
  "ml007": "chave de api, api key, app id, credenciais"
4864
5733
  }
4865
5734
  }
5735
+ },
5736
+ "code_editor": {
5737
+ "state": {
5738
+ "oldServer": "Reinicie o SynaBun para usar isto: o servidor em execução foi iniciado antes de o autocompletar com IA existir.",
5739
+ "unreadable": "O SynaBun não conseguiu ler estas configurações ({reason}). Nada foi alterado. Feche as Configurações e abra de novo.",
5740
+ "unreadableNoReason": "O SynaBun não conseguiu ler estas configurações. Nada foi alterado. Feche as Configurações e abra de novo."
5741
+ },
5742
+ "pill": {
5743
+ "on": "Ligado",
5744
+ "off": "Desligado",
5745
+ "setup": "Falta um modelo",
5746
+ "unavailable": "Indisponível"
5747
+ },
5748
+ "engine": {
5749
+ "opencode": "Modelos do OpenCode",
5750
+ "endpoint": "Um endpoint meu"
5751
+ },
5752
+ "kind": {
5753
+ "ollama": "Ollama",
5754
+ "openai": "Compatível com OpenAI"
5755
+ },
5756
+ "shape": {
5757
+ "fim": "Preenchimento",
5758
+ "chat": "Chat"
5759
+ },
5760
+ "models": {
5761
+ "loading": "Lendo os modelos…",
5762
+ "none": "Nenhum modelo conectado. Entre em um provedor em {page}.",
5763
+ "unavailable": "O OpenCode não está em execução, então os modelos dele não podem ser listados.",
5764
+ "start": "Iniciar e listar os modelos",
5765
+ "fast": "rápido",
5766
+ "free": "grátis",
5767
+ "price": "${input} entrada · ${output} saída por milhão de tokens",
5768
+ "noPrice": "preço não informado",
5769
+ "notListed": "selecionado, mas não está mais na lista",
5770
+ "pick": "Usar {model}",
5771
+ "test": "Testar",
5772
+ "testNamed": "Testar {model}"
5773
+ },
5774
+ "test": {
5775
+ "running": "Testando…",
5776
+ "ok": "{time} · {input} tokens de entrada, {output} de saída · sugeriu: {sample}",
5777
+ "okNoTokens": "{time} · sugeriu: {sample}",
5778
+ "empty": "Respondeu em {time}, sem nada a sugerir.",
5779
+ "failed": "Falhou: {reason}",
5780
+ "noAnswer": "O SynaBun não respondeu"
5781
+ },
5782
+ "fastest": {
5783
+ "running": "Testando os modelos rápidos…",
5784
+ "found": "Mais rápido: {model}, {time}. Selecionado.",
5785
+ "none": "Nenhum modelo respondeu a tempo. Nada foi alterado.",
5786
+ "noCandidates": "Nenhum modelo rápido conectado. Escolha um na lista."
5787
+ },
5788
+ "key": {
5789
+ "set": "Há uma chave definida",
5790
+ "notSet": "Nenhuma chave definida",
5791
+ "placeholder": "Cole uma chave",
5792
+ "placeholderReplace": "Cole uma chave para substituir a que está definida",
5793
+ "save": "Salvar chave",
5794
+ "remove": "Remover chave",
5795
+ "saved": "Chave salva.",
5796
+ "removed": "Chave removida."
5797
+ },
5798
+ "url": {
5799
+ "invalid": "Um endereço começa com http:// ou https://. Nada foi alterado.",
5800
+ "placeholderOllama": "http://localhost:11434",
5801
+ "placeholderOpenai": "https://api.example.com/v1/completions"
5802
+ },
5803
+ "save": {
5804
+ "failed": "Não foi possível salvar: {reason}. Nada foi alterado.",
5805
+ "oldServer": "o servidor em execução ainda não tem esta configuração",
5806
+ "noAnswer": "O SynaBun não respondeu"
5807
+ },
5808
+ "usage": {
5809
+ "today": "{requests} pedidos · {input} tokens de entrada, {output} de saída · {accepted} de {shown} sugestões aceitas",
5810
+ "none": "Nenhum pedido hoje."
5811
+ },
5812
+ "exclude": {
5813
+ "count": "{n} padrões",
5814
+ "empty": "A lista está vazia: qualquer arquivo pode ser enviado."
5815
+ },
5816
+ "editing": {
5817
+ "oldServer": "Reinicie o SynaBun para usar isto: o servidor em execução foi iniciado antes de o editor guardar suas configurações. Até lá, o menu Exibir do editor as altera para a página aberta.",
5818
+ "fontSize": "{size} px",
5819
+ "detect": "Detectar",
5820
+ "spaces": "Espaços",
5821
+ "tabs": "Tabulações",
5822
+ "whitespace": {
5823
+ "none": "Ocultos",
5824
+ "selection": "Na seleção",
5825
+ "all": "Em todo o texto"
5826
+ }
5827
+ }
4866
5828
  }
4867
5829
  }
4868
5830
  },
@@ -5108,6 +6070,19 @@
5108
6070
  "fullscreen": "Tela cheia (F11)",
5109
6071
  "toggleExplorer": "Alternar explorador (F)"
5110
6072
  },
6073
+ "toolbar": {
6074
+ "hideTools": "Ocultar ferramentas do workspace",
6075
+ "showTools": "Mostrar ferramentas do workspace",
6076
+ "workspaceNone": "Workspaces: nenhum carregado",
6077
+ "workspaceActive": "Workspace: {name}",
6078
+ "quickSave": "Salvar agora",
6079
+ "memoryExplorer": "Memory Explorer",
6080
+ "fileExplorer": "Explorador de Arquivos",
6081
+ "share": "Compartilhar / Convidar",
6082
+ "keybinds": "Keybinds",
6083
+ "snapToGrid": "Alinhar à grade",
6084
+ "tileTerminals": "Organizar terminais lado a lado"
6085
+ },
5111
6086
  "assistant": {
5112
6087
  "usage": {
5113
6088
  "task": "Tarefa atual",
@@ -5680,7 +6655,10 @@
5680
6655
  "suggestSchedule": "Agendar …",
5681
6656
  "templateSchedule": "Agendar {caret}",
5682
6657
  "suggestRemember": "Lembrar …",
5683
- "templateRemember": "Lembrar {caret}"
6658
+ "templateRemember": "Lembrar {caret}",
6659
+ "project": "Projeto",
6660
+ "chooseProject": "Escolha um projeto",
6661
+ "projectAria": "Escolha um projeto (atual: {project})"
5684
6662
  },
5685
6663
  "status": {
5686
6664
  "aborted": "Interrompido.",
@@ -5691,6 +6669,7 @@
5691
6669
  "dispatchFailed": "Falha ao despachar",
5692
6670
  "mode": "Modo de permissão: {mode}",
5693
6671
  "queued": "Na posição {position} da fila (limite de simultaneidade).",
6672
+ "renameFailed": "Não foi possível salvar o nome “{name}”. A sessão continua se chamando “{previous}”.",
5694
6673
  "resuming": "retomando {id}",
5695
6674
  "rewound": "Arquivos restaurados ao ponto de controle",
5696
6675
  "rewindFailed": "Falha ao restaurar",
@@ -5698,6 +6677,7 @@
5698
6677
  "stopFailed": "Falha ao parar",
5699
6678
  "stopRequested": "Parada solicitada para {id}",
5700
6679
  "routeMode": "Roteamento de modelos: {mode}",
6680
+ "testDensity": "Densidade de testes: {level}",
5701
6681
  "computerOn": "Uso do computador ativado.",
5702
6682
  "computerOff": "Uso do computador desativado.",
5703
6683
  "computerRemote": "Uso do computador nesta conversa do WhatsApp: {why}.",
@@ -5726,6 +6706,127 @@
5726
6706
  "done": "concluídos",
5727
6707
  "error": "erro"
5728
6708
  },
6709
+ "automation": {
6710
+ "title": "Automação",
6711
+ "sum": {
6712
+ "turn": "{n} tok neste turno",
6713
+ "standing": "{n} fixos",
6714
+ "none": "nada injetado"
6715
+ },
6716
+ "state": {
6717
+ "waiting": "aprende após a resposta",
6718
+ "running": "aprendendo…",
6719
+ "learned": "aprendeu 1 coisa",
6720
+ "confirmed": "confirmou 1 coisa",
6721
+ "replaced": "substituiu 1 coisa"
6722
+ },
6723
+ "group": {
6724
+ "injected": "Injetado",
6725
+ "withheld": "Retido",
6726
+ "learning": "Aprendizado",
6727
+ "session": "Esta conversa"
6728
+ },
6729
+ "tier": {
6730
+ "digest": "Resumo de conhecimento",
6731
+ "last-thread": "Última conversa",
6732
+ "environment": "Ambiente",
6733
+ "open-item": "Item em aberto",
6734
+ "cue": "Dica de conhecimento",
6735
+ "delta": "Conhecimento novo",
6736
+ "recall": "Memórias relacionadas",
6737
+ "knowledge": "Conhecimento sobre você",
6738
+ "nudges": "Lembretes de interações recentes",
6739
+ "greeting": "Saudação",
6740
+ "turn": "Notas do turno"
6741
+ },
6742
+ "tok": "{n} tok",
6743
+ "meta": {
6744
+ "standing": "slot de sistema · congelado às {time}",
6745
+ "standingRef": "já está no slot de sistema, não foi reenviado",
6746
+ "memories": "{n} memórias",
6747
+ "memory": "1 memória",
6748
+ "alreadyPresent": "já fornecidas antes",
6749
+ "greetingWriter": "dita ao abrir a sessão · escrita antes por {model}",
6750
+ "greetingFallback": "dita ao abrir a sessão · a partir dos registros, sem modelo",
6751
+ "budget": "orçamento {used}/{max} tok"
6752
+ },
6753
+ "reason": {
6754
+ "layer-off": "desativado nas Configurações",
6755
+ "nothing-known": "nada aprendido ainda",
6756
+ "no-recent-thread": "nenhuma conversa recente para mencionar",
6757
+ "in-greeting": "já dito na saudação",
6758
+ "budget": "acima do orçamento do turno, fica para um próximo",
6759
+ "not-ranked": "o Jev não classificou como relevante",
6760
+ "in-digest": "já está no resumo",
6761
+ "already-told": "já foi dito nesta conversa",
6762
+ "replaced": "substituído por uma afirmação mais nova",
6763
+ "one-per-turn": "uma dica por turno",
6764
+ "unusable": "sem afirmação utilizável",
6765
+ "not-delivered": "o turno terminou antes que as notas pudessem ser entregues",
6766
+ "trivial": "prompt trivial",
6767
+ "pattern": "um comando ou uma confirmação",
6768
+ "judged": "Jev: a memória não mudaria a resposta",
6769
+ "nothing-retrieved": "nada relevante encontrado",
6770
+ "disabled": "a busca automática está desativada",
6771
+ "error": "a busca falhou",
6772
+ "system": "não é um prompt seu"
6773
+ },
6774
+ "learn": {
6775
+ "waiting": "Suas palavras são avaliadas quando a resposta terminar.",
6776
+ "running": "O Jev está lendo o que você digitou…",
6777
+ "skipped": "Não avaliado: {reason}.",
6778
+ "cues": "Palavras-chave: {cues}",
6779
+ "judged": "Jev: sinal duradouro {p} · {facet} · {scope}",
6780
+ "matched": "Corresponde a: {statement}",
6781
+ "contradicts": "Contradiz: {statement}",
6782
+ "created": "Aprendido: {statement}",
6783
+ "updated": "Confirmado (visto {n}×): {statement}",
6784
+ "superseded": "Substituiu “{old}” por: {statement}",
6785
+ "none": "Nada armazenado: {reason}.",
6786
+ "evidence": "Evidência: “{quote}”",
6787
+ "writer": "Escrito por {engine}",
6788
+ "writerOwn": "Mantida a sua própria frase ({reason})",
6789
+ "writerKept": "Afirmação mantida como estava",
6790
+ "cost": "{requests} requisições ao Jev · {tokens} tok · {cost}",
6791
+ "scope": {
6792
+ "global": "todos os projetos"
6793
+ }
6794
+ },
6795
+ "skip": {
6796
+ "no-cue": "sem expressões como sempre / nunca / de agora em diante",
6797
+ "trivial": "prompt trivial",
6798
+ "short": "curto demais",
6799
+ "origin": "não foi digitado por você",
6800
+ "untrusted": "conteúdo encaminhado",
6801
+ "no-typed-text": "apenas anexos ou texto colado",
6802
+ "seen": "as mesmas palavras já foram avaliadas",
6803
+ "gate-cap": "esta conversa atingiu o limite de avaliações",
6804
+ "write-cap": "esta conversa atingiu o limite de fatos aprendidos",
6805
+ "layer-off": "Conhecimento sobre você está desativado",
6806
+ "system": "não é um prompt seu"
6807
+ },
6808
+ "none": {
6809
+ "not-durable": "não é uma preferência duradoura",
6810
+ "no-answer": "o Jev não respondeu",
6811
+ "jev-unavailable": "o Jev está desativado ou sem chave",
6812
+ "duplicate": "a memória já afirma isso",
6813
+ "write-cap": "esta conversa atingiu o limite de fatos aprendidos",
6814
+ "no-evidence": "nenhuma frase trazia isso",
6815
+ "no-statement": "sem afirmação utilizável",
6816
+ "write-error": "a gravação na memória falhou",
6817
+ "no-store": "a memória não está disponível",
6818
+ "error": "a etapa de aprendizado falhou"
6819
+ },
6820
+ "writer": {
6821
+ "unverified": "a reescrita não pôde ser verificada",
6822
+ "not-faithful": "a reescrita acrescentou algo",
6823
+ "no-writer": "sem modelo redator",
6824
+ "writer-cap": "limite do redator atingido",
6825
+ "other": "o redator falhou"
6826
+ },
6827
+ "totals": "Avaliados {gate}/{gateCap} · redator {writer}/{writerCap} · aprendidos {writes}/{writeCap} · {tokens} tok injetados em {turns} turnos · {cost}",
6828
+ "open": "Abrir memória"
6829
+ },
5729
6830
  "memories": {
5730
6831
  "recalled": "Consultou memórias",
5731
6832
  "saved": "Memória salva"
@@ -5978,6 +7079,21 @@
5978
7079
  "opencode": "Agente de planejamento do OpenCode (sem edições de arquivos)"
5979
7080
  }
5980
7081
  },
7082
+ "tests": {
7083
+ "title": "Densidade de testes",
7084
+ "levels": {
7085
+ "none": "Nenhuma",
7086
+ "light": "Leve",
7087
+ "standard": "Padrão",
7088
+ "thorough": "Completa"
7089
+ },
7090
+ "desc": {
7091
+ "none": "Sem testes. Só confere se a alteração carrega.",
7092
+ "light": "Executa os testes que cobrem a alteração. Testes novos só quando fazem diferença.",
7093
+ "standard": "Adiciona testes focados e executa a suíte da área uma vez.",
7094
+ "thorough": "Cobertura completa, suíte inteira, verificações ao vivo."
7095
+ }
7096
+ },
5981
7097
  "accounts": {
5982
7098
  "title": "Contas de {provider}",
5983
7099
  "add": "Adicionar conta…",
@@ -6103,9 +7219,9 @@
6103
7219
  "always": "Sempre perguntar",
6104
7220
  "unsure": "Perguntar se houver dúvida",
6105
7221
  "never": "Nunca perguntar",
6106
- "alwaysDesc": "Mostrar o cartão de rota antes de cada tarefa.",
6107
- "unsureDesc": "{model} roteia sozinho quando há confiança; caso contrário, pergunta.",
6108
- "neverDesc": "{model} classifica cada pedido; suas rotas de tarefas são aplicadas sem perguntar."
7222
+ "alwaysDesc": "Confirme cada tarefa que exige uma ação.",
7223
+ "unsureDesc": "Confirme abaixo de {pct}% de confiança ou se o modelo não puder executar a tarefa.",
7224
+ "neverDesc": "Execute as rotas salvas imediatamente; nos demais casos, o assistente escolhe."
6109
7225
  },
6110
7226
  "correction": {
6111
7227
  "remembered": "sua rota salva {to} substituiu {from}",
@@ -6125,7 +7241,7 @@
6125
7241
  "badge": {
6126
7242
  "suggested": "Sugerido",
6127
7243
  "suggestedPct": "Sugerido · {pct}",
6128
- "remembered": "Lembrado",
7244
+ "remembered": "Sua escolha",
6129
7245
  "current": "Atual",
6130
7246
  "cheaper": "Mais barato",
6131
7247
  "stronger": "Mais capaz",
@@ -6145,7 +7261,7 @@
6145
7261
  },
6146
7262
  "decidedBy": "decidido por {model}",
6147
7263
  "youChose": "você escolheu",
6148
- "remembered": "lembrado",
7264
+ "remembered": "sua escolha salva",
6149
7265
  "timeout": "padrão após tempo esgotado",
6150
7266
  "alternatives": "Também considerado",
6151
7267
  "corrections": "Ajustado",
@@ -6155,7 +7271,7 @@
6155
7271
  "chooseModel": "Onde executar?",
6156
7272
  "other": "Outro modelo…",
6157
7273
  "otherTitle": "Executar em outro modelo",
6158
- "rememberFor": "Lembrar para tarefas de {taskClass}",
7274
+ "rememberFor": "Usar esta escolha em tarefas de {taskClass}",
6159
7275
  "rememberCurrent": "agora: {current}",
6160
7276
  "run": "Executar",
6161
7277
  "keys": "1–4 escolher · Enter executar · Esc cancelar",
@@ -6163,12 +7279,12 @@
6163
7279
  "cancelling": "Cancelando…",
6164
7280
  "expiresIn": "Expira em {time}",
6165
7281
  "invalid": "Essa rota está indisponível. Escolha outra opção.",
6166
- "brainDecides": "Deixar o cérebro decidir",
7282
+ "brainDecides": "O assistente escolhe",
6167
7283
  "resetAll": "Redefinir tudo",
6168
7284
  "whenToAsk": "Quando perguntar",
6169
7285
  "taskRoutes": "Rotas de tarefas",
6170
7286
  "visionRow": "Capturas de tela e imagens",
6171
- "visionDesc": "Usado quando uma tarefa precisa de um modelo com visão.",
7287
+ "visionDesc": "Alternativa para tarefas que precisam de um modelo capaz de ver imagens.",
6172
7288
  "noCapableModel": "Nenhum modelo do seu catálogo pode gerar {medium} ainda.",
6173
7289
  "incapableTip": "Este modelo não pode gerar {medium}, então a rota não é aplicada.",
6174
7290
  "noSeeingModel": "Nenhum modelo do seu catálogo pode ver imagens ainda.",
@@ -6179,25 +7295,202 @@
6179
7295
  "images": "imagens",
6180
7296
  "videos": "vídeos"
6181
7297
  },
6182
- "effortAuto": "esforço automático",
6183
- "effortAutoDefault": "automático ({effort})",
7298
+ "effortAuto": "Padrão do modelo",
7299
+ "effortAutoDefault": "Padrão · {effort}",
6184
7300
  "effortUnsupported": "{effort} · não compatível",
6185
7301
  "source": {
6186
- "yours": "sua escolha",
6187
- "remembered": "lembrado",
6188
- "default": "padrão",
6189
- "disabled": "desativado",
6190
- "incapable": "incapaz"
7302
+ "yours": "Sua escolha",
7303
+ "remembered": "Sua escolha",
7304
+ "default": "O assistente escolhe",
7305
+ "disabled": "Oculto",
7306
+ "incapable": "Precisa de atenção"
6191
7307
  },
6192
7308
  "reset": "Redefinir {taskClass}",
6193
- "resetTip": "Voltar ao padrão",
7309
+ "resetTip": "Deixar o assistente escolher",
6194
7310
  "reload": "Recarregar",
6195
7311
  "unavailable": "Roteamento de modelos ainda indisponível neste servidor.",
6196
7312
  "loadFailed": "Não foi possível carregar as rotas de modelos",
6197
- "conflict": "Alterado em outro lugar — recarregue",
7313
+ "conflict": "As configurações mudaram em outra janela. Recarregue para manter suas alterações e conferir as escolhas atuais.",
6198
7314
  "invalidField": "Ajuste de roteamento inválido: {field}",
6199
- "saveFailed": "Não foi possível salvar",
6200
- "saved": "Rotas de modelos salvas."
7315
+ "saveFailed": "Não foi possível salvar. Suas alterações foram mantidas; tente novamente.",
7316
+ "saved": "Rotas de modelos salvas.",
7317
+ "effortDefaultUnknown": "Padrão · desconhecido",
7318
+ "effortNotSupported": "Sem suporte",
7319
+ "resetChoice": "Redefinir",
7320
+ "reloadModels": "Recarregar modelos",
7321
+ "fieldLabel": "{task}: {field}, {value}",
7322
+ "editorEffortAuto": "Auto",
7323
+ "editorInConversation": "Esta conversa",
7324
+ "editorUnusedValue": "—",
7325
+ "editorSessionOverride": "Esta conversa usa outro padrão: {mode}.",
7326
+ "notApplied": "Não aplicada",
7327
+ "modeSummary": {
7328
+ "always-ask": "Pergunta antes de cada tarefa. As rotas salvas em Nunca perguntar são oferecidas primeiro no cartão de rota.",
7329
+ "ask-unsure": "Pergunta abaixo de {pct}% de confiança ou se um modelo não puder executar a tarefa. As rotas salvas em Nunca perguntar são oferecidas primeiro no cartão de rota.",
7330
+ "never": "Executa as rotas salvas válidas imediatamente; o Assistente escolhe para as outras tarefas. O Chat continua no modelo atual."
7331
+ },
7332
+ "defaultScope": "Padrão das conversas. As escolhas por tarefa são compartilhadas entre todos os modos.",
7333
+ "sessionOverride": "Esta conversa usa {mode}. Altere essa configuração no controle de rotas ou com /routes.",
7334
+ "brainLabel": "Modelo que decide a rota: {model}",
7335
+ "withChoice": "Com sua escolha",
7336
+ "withoutChoice": "O assistente escolhe",
7337
+ "effortNote": "O esforço padrão usa o padrão do modelo quando o modelo que decide a rota não propõe um nível.",
7338
+ "workerOnly": "Somente agente",
7339
+ "needsVision": "Precisa de visão",
7340
+ "needs": {
7341
+ "image": "Precisa gerar imagens",
7342
+ "video": "Precisa gerar vídeos"
7343
+ },
7344
+ "chatCurrent": "Usa o modelo atual",
7345
+ "workerChooses": "Agente · assistente escolhe",
7346
+ "inConversation": "Na conversa",
7347
+ "onWorker": "Agente {provider}",
7348
+ "conversationDesc": "Continue esta conversa no modelo escolhido durante esta tarefa.",
7349
+ "workerDesc": "Envie a tarefa para um agente e receba o resultado aqui.",
7350
+ "otherProviderWorker": "Um modelo de outro provedor executa a tarefa em um agente.",
7351
+ "chatInactive": "Conversas sem ações usam o modelo atual. A escolha salva para Chat não é aplicada em nenhum modo.",
7352
+ "visionFallback": "Alternativa para visão, não uma classe de tarefa. Usada quando o modelo escolhido não consegue ver as imagens recebidas.",
7353
+ "columns": {
7354
+ "task": "Tarefa",
7355
+ "model": "Modelo",
7356
+ "effort": "Esforço",
7357
+ "run": "Executa em",
7358
+ "reset": "Redefinir"
7359
+ },
7360
+ "behavior": {
7361
+ "always-ask": {
7362
+ "saved": "Orienta a sugestão do modelo e aparece no cartão de rota.",
7363
+ "unsaved": "O modelo sugere uma rota; você confirma antes da execução.",
7364
+ "note": "Toda tarefa que exige uma ação pede sua escolha. Uma tarefa sem modelo capaz de executá-la não pode começar."
7365
+ },
7366
+ "ask-unsure": {
7367
+ "saved": "Orienta a decisão do modelo. Ele pode escolher outro se a tarefa precisar.",
7368
+ "unsaved": "O modelo escolhe quem executa a tarefa e onde ela acontece.",
7369
+ "note": "Pede confirmação abaixo de {pct}% de confiança, ou se o modelo estiver ausente, desconhecido, desativado ou sem uma capacidade necessária. Sem modelo capaz, a tarefa não começa."
7370
+ },
7371
+ "never": {
7372
+ "saved": "Executa imediatamente no modelo e no destino salvos, quando a escolha é válida.",
7373
+ "unsaved": "O modelo escolhe uma rota e executa imediatamente.",
7374
+ "note": "Escolhas desativadas ou incompatíveis são ignoradas. Modelos inválidos podem ser substituídos. Sem modelo capaz, a tarefa não começa."
7375
+ }
7376
+ },
7377
+ "efforts": {
7378
+ "none": "Nenhum",
7379
+ "thinking": "Raciocínio",
7380
+ "minimal": "Mínimo",
7381
+ "low": "Baixo",
7382
+ "medium": "Médio",
7383
+ "high": "Alto",
7384
+ "xhigh": "Muito alto",
7385
+ "max": "Máximo",
7386
+ "ultra": "Ultra"
7387
+ },
7388
+ "issue": {
7389
+ "disabled": "Oculto em Modelos. Reative-o lá ou escolha outro modelo.",
7390
+ "missing": "Não está na lista atual. Recarregue os modelos, escolha um da lista ou redefina esta escolha.",
7391
+ "unavailable": "Modelo indisponível. Escolha um disponível ou redefina esta escolha.",
7392
+ "blind": "Esta tarefa precisa de visão. Escolha um modelo que consiga ver imagens.",
7393
+ "unknownVision": "Visão não confirmada. Escolha um modelo que reconheça imagens ou redefina esta escolha.",
7394
+ "incapable": "Este modelo não gera {medium}. Escolha um que consiga.",
7395
+ "effort": "O esforço salvo não é compatível. Escolha um nível aceito ou use o padrão.",
7396
+ "unverified": "Não foi possível verificar este modelo. Recarregue os modelos antes de usar esta escolha."
7397
+ },
7398
+ "issueLabel": {
7399
+ "disabled": "Oculto",
7400
+ "missing": "Fora da lista",
7401
+ "unavailable": "Indisponível",
7402
+ "blind": "Precisa de visão",
7403
+ "unknownVision": "Visão não confirmada",
7404
+ "incapable": "Incompatível",
7405
+ "effort": "Esforço incompatível",
7406
+ "unverified": "Não verificado"
7407
+ },
7408
+ "editorState": {
7409
+ "modelsUpdated": "Lista de modelos atualizada. Suas alterações não salvas foram mantidas.",
7410
+ "discardTitle": "Descartar as alterações não salvas?",
7411
+ "discardDesc": "As configurações salvas serão mantidas.",
7412
+ "resetTitle": "Redefinir {count} escolhas salvas?",
7413
+ "resetDesc": "O assistente escolherá nessas tarefas. Nada muda até você salvar.",
7414
+ "keepEditing": "Continuar editando",
7415
+ "discard": "Descartar alterações",
7416
+ "resetConfirm": "Redefinir escolhas",
7417
+ "moreBelow": "Mais rotas de tarefas abaixo ↓",
7418
+ "saving": "Salvando…",
7419
+ "unsavedOne": "1 alteração não salva",
7420
+ "unsaved": "{count} alterações não salvas",
7421
+ "noChanges": "Nenhuma alteração pendente",
7422
+ "fixChoices": "Corrija as escolhas destacadas ou redefina-as antes de salvar.",
7423
+ "offline": "Sem conexão. Suas alterações foram mantidas. Reconecte para salvar ou recarregar os modelos.",
7424
+ "loadingRoutes": "Carregando configurações de rotas e modelos…",
7425
+ "loadingModels": "Carregando modelos…",
7426
+ "modelsFailed": "Não foi possível atualizar a lista de modelos. As listas dos provedores são exibidas quando disponíveis. Recarregue para verificar suas escolhas.",
7427
+ "modelsEmpty": "Nenhum modelo disponível. Confira Modelos ou conecte um provedor e recarregue.",
7428
+ "tasksEmpty": "Este servidor não disponibiliza classes de tarefas.",
7429
+ "edited": " · alterado",
7430
+ "settingsReloaded": "Configurações atuais carregadas. Suas alterações foram mantidas; confira antes de salvar.",
7431
+ "permission": "Você não tem permissão para editar as configurações de rotas."
7432
+ },
7433
+ "menu": {
7434
+ "priceUnknown": "Preço desconhecido",
7435
+ "contextUnknown": "Contexto desconhecido",
7436
+ "contextTokens": "{count} tokens",
7437
+ "hiddenCount": "{count} ocultos em Modelos",
7438
+ "noCompatible": "Nenhum modelo compatível deste provedor é exibido.",
7439
+ "providerEmpty": "Nenhum modelo deste provedor é exibido.",
7440
+ "noMatches": "Nenhum modelo encontrado. Confira as escolhas ocultas em Modelos.",
7441
+ "failed": "Não foi possível atualizar a lista. As listas dos provedores podem estar desatualizadas.",
7442
+ "hiddenHelp": "Não encontrou um modelo? A lista em Modelos define o que aparece aqui."
7443
+ },
7444
+ "classes": {
7445
+ "chat": {
7446
+ "label": "Chat",
7447
+ "desc": "Conversas e respostas a partir de conhecimento ou memória"
7448
+ },
7449
+ "quick": {
7450
+ "label": "Tarefa rápida",
7451
+ "desc": "Pequenas edições, comandos avulsos e consultas"
7452
+ },
7453
+ "code": {
7454
+ "label": "Programação",
7455
+ "desc": "Um recurso ou uma correção em um repositório"
7456
+ },
7457
+ "complex": {
7458
+ "label": "Engenharia complexa",
7459
+ "desc": "Arquitetura, refatorações entre arquivos e depuração difícil"
7460
+ },
7461
+ "review": {
7462
+ "label": "Revisão",
7463
+ "desc": "Um segundo modelo revisa código, um plano ou um resultado"
7464
+ },
7465
+ "research": {
7466
+ "label": "Pesquisa",
7467
+ "desc": "Pesquisa na web ou no código e resumos"
7468
+ },
7469
+ "browser": {
7470
+ "label": "Navegador",
7471
+ "desc": "Tarefas na web pelo navegador do SynaBun"
7472
+ },
7473
+ "computer": {
7474
+ "label": "Uso do computador",
7475
+ "desc": "Operar aplicativos neste Mac"
7476
+ },
7477
+ "automation": {
7478
+ "label": "Automação",
7479
+ "desc": "Loops, agendamentos e tarefas recorrentes"
7480
+ },
7481
+ "design": {
7482
+ "label": "Design",
7483
+ "desc": "Pesquisa de UI/UX, sistemas de design, mockups e protótipos"
7484
+ },
7485
+ "image_gen": {
7486
+ "label": "Criação de imagens",
7487
+ "desc": "Criar imagens com um modelo capaz de gerá-las"
7488
+ },
7489
+ "video_gen": {
7490
+ "label": "Criação de vídeos",
7491
+ "desc": "Criar vídeos com um modelo capaz de gerá-los"
7492
+ }
7493
+ }
6201
7494
  },
6202
7495
  "computer": {
6203
7496
  "toggle": "Computador",
@@ -7022,5 +8315,58 @@
7022
8315
  "body": "Clique em ? quando quiser retomar. Nada no seu workspace foi alterado."
7023
8316
  }
7024
8317
  }
8318
+ },
8319
+ "greeting": {
8320
+ "label": "Saudação do SynaBun",
8321
+ "back": "De volta depois de {time}",
8322
+ "time": {
8323
+ "minute": "1 minuto",
8324
+ "minutes": "{n} minutos",
8325
+ "hour": "1 hora",
8326
+ "hours": "{n} horas",
8327
+ "day": "1 dia",
8328
+ "days": "{n} dias",
8329
+ "week": "1 semana",
8330
+ "weeks": "{n} semanas",
8331
+ "month": "1 mês",
8332
+ "months": "{n} meses"
8333
+ },
8334
+ "basis": {
8335
+ "one": "Com base em 1 registro",
8336
+ "many": "Com base em {n} registros",
8337
+ "none": "Em que isto se baseia"
8338
+ },
8339
+ "kind": {
8340
+ "thread": "Última conversa",
8341
+ "session": "Última sessão",
8342
+ "open": "Em aberto",
8343
+ "memory": "Anotado",
8344
+ "run": "Execução",
8345
+ "schedule": "Agendamento",
8346
+ "elsewhere": "Em outro projeto",
8347
+ "git": "Árvore de trabalho",
8348
+ "owner": "Sobre você"
8349
+ },
8350
+ "agent": {
8351
+ "assistant": "Assistente",
8352
+ "claude-code": "Claude Code",
8353
+ "codex": "Codex",
8354
+ "opencode": "OpenCode"
8355
+ },
8356
+ "open": "Abrir memória",
8357
+ "source": {
8358
+ "writer": "Escrita antes por {model}",
8359
+ "fallback": "Montada a partir dos registros, sem modelo"
8360
+ },
8361
+ "why": {
8362
+ "not-prepared": "nada tinha sido escrito antes",
8363
+ "out-of-date": "o que tinha sido escrito era mais antigo que as novidades",
8364
+ "no-writer": "sem login do Claude para escrever",
8365
+ "daily-cap": "o limite diário de chamadas ao escritor foi atingido",
8366
+ "other": "o escritor não deu uma frase utilizável"
8367
+ },
8368
+ "tokens": "{n} tokens",
8369
+ "prepared": "escrita há {time}",
8370
+ "free": "nenhum token gasto"
7025
8371
  }
7026
8372
  }