nastech-app 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1111) hide show
  1. package/.claude/agents/i18n-translator.md +119 -0
  2. package/.claude/settings.json +8 -0
  3. package/.eas/workflows/ota.yaml +9 -0
  4. package/.eas/workflows/preview.yaml +12 -0
  5. package/.easignore +12 -0
  6. package/.github/workflows/eas-build.yml +24 -0
  7. package/CHANGELOG.md +117 -0
  8. package/CLAUDE.md +413 -0
  9. package/GoogleService-Info.plist +30 -0
  10. package/LICENSE +21 -0
  11. package/NasTechapp.md +383 -0
  12. package/README.md +75 -0
  13. package/Stores.md +85 -0
  14. package/TERMS.md +83 -0
  15. package/app.config.js +153 -0
  16. package/babel.config.js +28 -0
  17. package/deploy/nastech-app.yaml +51 -0
  18. package/docs/marketing/README-creators.md +73 -0
  19. package/eas-build-post-install.sh +11 -0
  20. package/eas-build-pre-install.sh +27 -0
  21. package/eas.json +78 -0
  22. package/google-services.json +67 -0
  23. package/index.ts +3 -0
  24. package/logo.png +0 -0
  25. package/metro.config.js +54 -0
  26. package/nativewind-env.d.ts +1 -0
  27. package/package.json +233 -0
  28. package/patches/.keep +0 -0
  29. package/plugins/withEinkCompatibility.js +156 -0
  30. package/public/.well-known/apple-app-site-association +22 -0
  31. package/public/.well-known/assetlinks.json +12 -0
  32. package/public/canvaskit.wasm +0 -0
  33. package/public/favicon-active.ico +0 -0
  34. package/release-dev.sh +7 -0
  35. package/release-production.sh +3 -0
  36. package/release.cjs +160 -0
  37. package/sources/-session/SessionView.tsx +944 -0
  38. package/sources/-session/sessionOverlayNav.ts +34 -0
  39. package/sources/app/(app)/_layout.tsx +321 -0
  40. package/sources/app/(app)/artifacts/[id].tsx +279 -0
  41. package/sources/app/(app)/artifacts/edit/[id].tsx +318 -0
  42. package/sources/app/(app)/artifacts/index.tsx +264 -0
  43. package/sources/app/(app)/artifacts/new.tsx +219 -0
  44. package/sources/app/(app)/changelog.tsx +113 -0
  45. package/sources/app/(app)/dev/colors.tsx +197 -0
  46. package/sources/app/(app)/dev/device-info.tsx +183 -0
  47. package/sources/app/(app)/dev/expo-constants.tsx +394 -0
  48. package/sources/app/(app)/dev/index.tsx +400 -0
  49. package/sources/app/(app)/dev/input-styles.tsx +1951 -0
  50. package/sources/app/(app)/dev/inverted-list.tsx +295 -0
  51. package/sources/app/(app)/dev/list-demo.tsx +125 -0
  52. package/sources/app/(app)/dev/logs.tsx +160 -0
  53. package/sources/app/(app)/dev/messages-demo-data.ts +479 -0
  54. package/sources/app/(app)/dev/messages-demo.tsx +45 -0
  55. package/sources/app/(app)/dev/modal-demo.tsx +211 -0
  56. package/sources/app/(app)/dev/multi-text-input.tsx +224 -0
  57. package/sources/app/(app)/dev/purchases.tsx +228 -0
  58. package/sources/app/(app)/dev/qr-test.tsx +168 -0
  59. package/sources/app/(app)/dev/session-composer.tsx +812 -0
  60. package/sources/app/(app)/dev/shimmer-demo.tsx +275 -0
  61. package/sources/app/(app)/dev/tests.tsx +203 -0
  62. package/sources/app/(app)/dev/tools2.tsx +556 -0
  63. package/sources/app/(app)/dev/typography.tsx +177 -0
  64. package/sources/app/(app)/dev/unistyles-demo.tsx +376 -0
  65. package/sources/app/(app)/friends/index.tsx +167 -0
  66. package/sources/app/(app)/friends/search.tsx +232 -0
  67. package/sources/app/(app)/inbox/index.tsx +124 -0
  68. package/sources/app/(app)/index.tsx +264 -0
  69. package/sources/app/(app)/machine/[id].tsx +646 -0
  70. package/sources/app/(app)/new/index.tsx +1611 -0
  71. package/sources/app/(app)/restore/index.tsx +167 -0
  72. package/sources/app/(app)/restore/manual.tsx +138 -0
  73. package/sources/app/(app)/server.tsx +234 -0
  74. package/sources/app/(app)/session/[id]/file.tsx +527 -0
  75. package/sources/app/(app)/session/[id]/files.tsx +442 -0
  76. package/sources/app/(app)/session/[id]/info.tsx +655 -0
  77. package/sources/app/(app)/session/[id]/message/[messageId].tsx +125 -0
  78. package/sources/app/(app)/session/[id].tsx +10 -0
  79. package/sources/app/(app)/session/recent.tsx +270 -0
  80. package/sources/app/(app)/settings/account.tsx +600 -0
  81. package/sources/app/(app)/settings/agents.tsx +180 -0
  82. package/sources/app/(app)/settings/appearance.tsx +259 -0
  83. package/sources/app/(app)/settings/connect/claude.tsx +178 -0
  84. package/sources/app/(app)/settings/features.tsx +177 -0
  85. package/sources/app/(app)/settings/index.tsx +3 -0
  86. package/sources/app/(app)/settings/language.tsx +106 -0
  87. package/sources/app/(app)/settings/usage.tsx +11 -0
  88. package/sources/app/(app)/settings/voice/language.tsx +114 -0
  89. package/sources/app/(app)/settings/voice.tsx +274 -0
  90. package/sources/app/(app)/terminal/connect.tsx +241 -0
  91. package/sources/app/(app)/terminal/index.tsx +184 -0
  92. package/sources/app/(app)/text-selection.tsx +149 -0
  93. package/sources/app/(app)/user/[id].tsx +314 -0
  94. package/sources/app/+html.tsx +39 -0
  95. package/sources/app/_layout.tsx +402 -0
  96. package/sources/assets/animations/game.json +1 -0
  97. package/sources/assets/animations/owl.json +1 -0
  98. package/sources/assets/animations/popcorn.json +1 -0
  99. package/sources/assets/animations/robot.json +1 -0
  100. package/sources/assets/animations/sparkles.json +1 -0
  101. package/sources/assets/animations/stone.json +1 -0
  102. package/sources/assets/fonts/BricolageGrotesque-Bold.ttf +0 -0
  103. package/sources/assets/fonts/IBMPlexMono-Italic.ttf +0 -0
  104. package/sources/assets/fonts/IBMPlexMono-Regular.ttf +0 -0
  105. package/sources/assets/fonts/IBMPlexMono-SemiBold.ttf +0 -0
  106. package/sources/assets/fonts/IBMPlexSans-Italic.ttf +0 -0
  107. package/sources/assets/fonts/IBMPlexSans-Regular.ttf +0 -0
  108. package/sources/assets/fonts/IBMPlexSans-SemiBold.ttf +0 -0
  109. package/sources/assets/fonts/SpaceMono-Regular.ttf +0 -0
  110. package/sources/assets/images/brutalist/Abstract-1.png +0 -0
  111. package/sources/assets/images/brutalist/Abstract-10.png +0 -0
  112. package/sources/assets/images/brutalist/Abstract-100.png +0 -0
  113. package/sources/assets/images/brutalist/Abstract-101.png +0 -0
  114. package/sources/assets/images/brutalist/Abstract-102.png +0 -0
  115. package/sources/assets/images/brutalist/Abstract-103.png +0 -0
  116. package/sources/assets/images/brutalist/Abstract-104.png +0 -0
  117. package/sources/assets/images/brutalist/Abstract-105.png +0 -0
  118. package/sources/assets/images/brutalist/Abstract-106.png +0 -0
  119. package/sources/assets/images/brutalist/Abstract-107.png +0 -0
  120. package/sources/assets/images/brutalist/Abstract-108.png +0 -0
  121. package/sources/assets/images/brutalist/Abstract-109.png +0 -0
  122. package/sources/assets/images/brutalist/Abstract-11.png +0 -0
  123. package/sources/assets/images/brutalist/Abstract-110.png +0 -0
  124. package/sources/assets/images/brutalist/Abstract-111.png +0 -0
  125. package/sources/assets/images/brutalist/Abstract-112.png +0 -0
  126. package/sources/assets/images/brutalist/Abstract-113.png +0 -0
  127. package/sources/assets/images/brutalist/Abstract-114.png +0 -0
  128. package/sources/assets/images/brutalist/Abstract-115.png +0 -0
  129. package/sources/assets/images/brutalist/Abstract-116.png +0 -0
  130. package/sources/assets/images/brutalist/Abstract-117.png +0 -0
  131. package/sources/assets/images/brutalist/Abstract-118.png +0 -0
  132. package/sources/assets/images/brutalist/Abstract-119.png +0 -0
  133. package/sources/assets/images/brutalist/Abstract-12.png +0 -0
  134. package/sources/assets/images/brutalist/Abstract-120.png +0 -0
  135. package/sources/assets/images/brutalist/Abstract-121.png +0 -0
  136. package/sources/assets/images/brutalist/Abstract-122.png +0 -0
  137. package/sources/assets/images/brutalist/Abstract-123.png +0 -0
  138. package/sources/assets/images/brutalist/Abstract-124.png +0 -0
  139. package/sources/assets/images/brutalist/Abstract-125.png +0 -0
  140. package/sources/assets/images/brutalist/Abstract-126.png +0 -0
  141. package/sources/assets/images/brutalist/Abstract-127.png +0 -0
  142. package/sources/assets/images/brutalist/Abstract-128.png +0 -0
  143. package/sources/assets/images/brutalist/Abstract-129.png +0 -0
  144. package/sources/assets/images/brutalist/Abstract-13.png +0 -0
  145. package/sources/assets/images/brutalist/Abstract-130.png +0 -0
  146. package/sources/assets/images/brutalist/Abstract-131.png +0 -0
  147. package/sources/assets/images/brutalist/Abstract-132.png +0 -0
  148. package/sources/assets/images/brutalist/Abstract-133.png +0 -0
  149. package/sources/assets/images/brutalist/Abstract-134.png +0 -0
  150. package/sources/assets/images/brutalist/Abstract-135.png +0 -0
  151. package/sources/assets/images/brutalist/Abstract-136.png +0 -0
  152. package/sources/assets/images/brutalist/Abstract-137.png +0 -0
  153. package/sources/assets/images/brutalist/Abstract-138.png +0 -0
  154. package/sources/assets/images/brutalist/Abstract-139.png +0 -0
  155. package/sources/assets/images/brutalist/Abstract-14.png +0 -0
  156. package/sources/assets/images/brutalist/Abstract-140.png +0 -0
  157. package/sources/assets/images/brutalist/Abstract-141.png +0 -0
  158. package/sources/assets/images/brutalist/Abstract-142.png +0 -0
  159. package/sources/assets/images/brutalist/Abstract-143.png +0 -0
  160. package/sources/assets/images/brutalist/Abstract-144.png +0 -0
  161. package/sources/assets/images/brutalist/Abstract-145.png +0 -0
  162. package/sources/assets/images/brutalist/Abstract-146.png +0 -0
  163. package/sources/assets/images/brutalist/Abstract-147.png +0 -0
  164. package/sources/assets/images/brutalist/Abstract-148.png +0 -0
  165. package/sources/assets/images/brutalist/Abstract-149.png +0 -0
  166. package/sources/assets/images/brutalist/Abstract-15.png +0 -0
  167. package/sources/assets/images/brutalist/Abstract-150.png +0 -0
  168. package/sources/assets/images/brutalist/Abstract-151.png +0 -0
  169. package/sources/assets/images/brutalist/Abstract-152.png +0 -0
  170. package/sources/assets/images/brutalist/Abstract-153.png +0 -0
  171. package/sources/assets/images/brutalist/Abstract-154.png +0 -0
  172. package/sources/assets/images/brutalist/Abstract-155.png +0 -0
  173. package/sources/assets/images/brutalist/Abstract-156.png +0 -0
  174. package/sources/assets/images/brutalist/Abstract-157.png +0 -0
  175. package/sources/assets/images/brutalist/Abstract-158.png +0 -0
  176. package/sources/assets/images/brutalist/Abstract-159.png +0 -0
  177. package/sources/assets/images/brutalist/Abstract-16.png +0 -0
  178. package/sources/assets/images/brutalist/Abstract-160.png +0 -0
  179. package/sources/assets/images/brutalist/Abstract-161.png +0 -0
  180. package/sources/assets/images/brutalist/Abstract-162.png +0 -0
  181. package/sources/assets/images/brutalist/Abstract-163.png +0 -0
  182. package/sources/assets/images/brutalist/Abstract-164.png +0 -0
  183. package/sources/assets/images/brutalist/Abstract-165.png +0 -0
  184. package/sources/assets/images/brutalist/Abstract-166.png +0 -0
  185. package/sources/assets/images/brutalist/Abstract-167.png +0 -0
  186. package/sources/assets/images/brutalist/Abstract-168.png +0 -0
  187. package/sources/assets/images/brutalist/Abstract-169.png +0 -0
  188. package/sources/assets/images/brutalist/Abstract-17.png +0 -0
  189. package/sources/assets/images/brutalist/Abstract-170.png +0 -0
  190. package/sources/assets/images/brutalist/Abstract-171.png +0 -0
  191. package/sources/assets/images/brutalist/Abstract-172.png +0 -0
  192. package/sources/assets/images/brutalist/Abstract-173.png +0 -0
  193. package/sources/assets/images/brutalist/Abstract-174.png +0 -0
  194. package/sources/assets/images/brutalist/Abstract-175.png +0 -0
  195. package/sources/assets/images/brutalist/Abstract-176.png +0 -0
  196. package/sources/assets/images/brutalist/Abstract-177.png +0 -0
  197. package/sources/assets/images/brutalist/Abstract-178.png +0 -0
  198. package/sources/assets/images/brutalist/Abstract-179.png +0 -0
  199. package/sources/assets/images/brutalist/Abstract-18.png +0 -0
  200. package/sources/assets/images/brutalist/Abstract-180.png +0 -0
  201. package/sources/assets/images/brutalist/Abstract-181.png +0 -0
  202. package/sources/assets/images/brutalist/Abstract-182.png +0 -0
  203. package/sources/assets/images/brutalist/Abstract-183.png +0 -0
  204. package/sources/assets/images/brutalist/Abstract-184.png +0 -0
  205. package/sources/assets/images/brutalist/Abstract-185.png +0 -0
  206. package/sources/assets/images/brutalist/Abstract-186.png +0 -0
  207. package/sources/assets/images/brutalist/Abstract-187.png +0 -0
  208. package/sources/assets/images/brutalist/Abstract-188.png +0 -0
  209. package/sources/assets/images/brutalist/Abstract-189.png +0 -0
  210. package/sources/assets/images/brutalist/Abstract-19.png +0 -0
  211. package/sources/assets/images/brutalist/Abstract-190.png +0 -0
  212. package/sources/assets/images/brutalist/Abstract-191.png +0 -0
  213. package/sources/assets/images/brutalist/Abstract-192.png +0 -0
  214. package/sources/assets/images/brutalist/Abstract-193.png +0 -0
  215. package/sources/assets/images/brutalist/Abstract-194.png +0 -0
  216. package/sources/assets/images/brutalist/Abstract-195.png +0 -0
  217. package/sources/assets/images/brutalist/Abstract-196.png +0 -0
  218. package/sources/assets/images/brutalist/Abstract-197.png +0 -0
  219. package/sources/assets/images/brutalist/Abstract-198.png +0 -0
  220. package/sources/assets/images/brutalist/Abstract-199.png +0 -0
  221. package/sources/assets/images/brutalist/Abstract-2.png +0 -0
  222. package/sources/assets/images/brutalist/Abstract-20.png +0 -0
  223. package/sources/assets/images/brutalist/Abstract-200.png +0 -0
  224. package/sources/assets/images/brutalist/Abstract-201.png +0 -0
  225. package/sources/assets/images/brutalist/Abstract-202.png +0 -0
  226. package/sources/assets/images/brutalist/Abstract-203.png +0 -0
  227. package/sources/assets/images/brutalist/Abstract-204.png +0 -0
  228. package/sources/assets/images/brutalist/Abstract-205.png +0 -0
  229. package/sources/assets/images/brutalist/Abstract-206.png +0 -0
  230. package/sources/assets/images/brutalist/Abstract-207.png +0 -0
  231. package/sources/assets/images/brutalist/Abstract-208.png +0 -0
  232. package/sources/assets/images/brutalist/Abstract-209.png +0 -0
  233. package/sources/assets/images/brutalist/Abstract-21.png +0 -0
  234. package/sources/assets/images/brutalist/Abstract-210.png +0 -0
  235. package/sources/assets/images/brutalist/Abstract-211.png +0 -0
  236. package/sources/assets/images/brutalist/Abstract-212.png +0 -0
  237. package/sources/assets/images/brutalist/Abstract-213.png +0 -0
  238. package/sources/assets/images/brutalist/Abstract-214.png +0 -0
  239. package/sources/assets/images/brutalist/Abstract-215.png +0 -0
  240. package/sources/assets/images/brutalist/Abstract-216.png +0 -0
  241. package/sources/assets/images/brutalist/Abstract-217.png +0 -0
  242. package/sources/assets/images/brutalist/Abstract-218.png +0 -0
  243. package/sources/assets/images/brutalist/Abstract-219.png +0 -0
  244. package/sources/assets/images/brutalist/Abstract-22.png +0 -0
  245. package/sources/assets/images/brutalist/Abstract-220.png +0 -0
  246. package/sources/assets/images/brutalist/Abstract-221.png +0 -0
  247. package/sources/assets/images/brutalist/Abstract-222.png +0 -0
  248. package/sources/assets/images/brutalist/Abstract-223.png +0 -0
  249. package/sources/assets/images/brutalist/Abstract-224.png +0 -0
  250. package/sources/assets/images/brutalist/Abstract-225.png +0 -0
  251. package/sources/assets/images/brutalist/Abstract-226.png +0 -0
  252. package/sources/assets/images/brutalist/Abstract-227.png +0 -0
  253. package/sources/assets/images/brutalist/Abstract-228.png +0 -0
  254. package/sources/assets/images/brutalist/Abstract-229.png +0 -0
  255. package/sources/assets/images/brutalist/Abstract-23.png +0 -0
  256. package/sources/assets/images/brutalist/Abstract-230.png +0 -0
  257. package/sources/assets/images/brutalist/Abstract-231.png +0 -0
  258. package/sources/assets/images/brutalist/Abstract-232.png +0 -0
  259. package/sources/assets/images/brutalist/Abstract-233.png +0 -0
  260. package/sources/assets/images/brutalist/Abstract-234.png +0 -0
  261. package/sources/assets/images/brutalist/Abstract-235.png +0 -0
  262. package/sources/assets/images/brutalist/Abstract-236.png +0 -0
  263. package/sources/assets/images/brutalist/Abstract-237.png +0 -0
  264. package/sources/assets/images/brutalist/Abstract-238.png +0 -0
  265. package/sources/assets/images/brutalist/Abstract-239.png +0 -0
  266. package/sources/assets/images/brutalist/Abstract-24.png +0 -0
  267. package/sources/assets/images/brutalist/Abstract-240.png +0 -0
  268. package/sources/assets/images/brutalist/Abstract-241.png +0 -0
  269. package/sources/assets/images/brutalist/Abstract-242.png +0 -0
  270. package/sources/assets/images/brutalist/Abstract-243.png +0 -0
  271. package/sources/assets/images/brutalist/Abstract-244.png +0 -0
  272. package/sources/assets/images/brutalist/Abstract-245.png +0 -0
  273. package/sources/assets/images/brutalist/Abstract-246.png +0 -0
  274. package/sources/assets/images/brutalist/Abstract-247.png +0 -0
  275. package/sources/assets/images/brutalist/Abstract-248.png +0 -0
  276. package/sources/assets/images/brutalist/Abstract-249.png +0 -0
  277. package/sources/assets/images/brutalist/Abstract-25.png +0 -0
  278. package/sources/assets/images/brutalist/Abstract-250.png +0 -0
  279. package/sources/assets/images/brutalist/Abstract-251.png +0 -0
  280. package/sources/assets/images/brutalist/Abstract-252.png +0 -0
  281. package/sources/assets/images/brutalist/Abstract-253.png +0 -0
  282. package/sources/assets/images/brutalist/Abstract-254.png +0 -0
  283. package/sources/assets/images/brutalist/Abstract-255.png +0 -0
  284. package/sources/assets/images/brutalist/Abstract-256.png +0 -0
  285. package/sources/assets/images/brutalist/Abstract-257.png +0 -0
  286. package/sources/assets/images/brutalist/Abstract-258.png +0 -0
  287. package/sources/assets/images/brutalist/Abstract-259.png +0 -0
  288. package/sources/assets/images/brutalist/Abstract-26.png +0 -0
  289. package/sources/assets/images/brutalist/Abstract-260.png +0 -0
  290. package/sources/assets/images/brutalist/Abstract-261.png +0 -0
  291. package/sources/assets/images/brutalist/Abstract-262.png +0 -0
  292. package/sources/assets/images/brutalist/Abstract-27.png +0 -0
  293. package/sources/assets/images/brutalist/Abstract-28.png +0 -0
  294. package/sources/assets/images/brutalist/Abstract-29.png +0 -0
  295. package/sources/assets/images/brutalist/Abstract-3.png +0 -0
  296. package/sources/assets/images/brutalist/Abstract-30.png +0 -0
  297. package/sources/assets/images/brutalist/Abstract-31.png +0 -0
  298. package/sources/assets/images/brutalist/Abstract-32.png +0 -0
  299. package/sources/assets/images/brutalist/Abstract-33.png +0 -0
  300. package/sources/assets/images/brutalist/Abstract-34.png +0 -0
  301. package/sources/assets/images/brutalist/Abstract-35.png +0 -0
  302. package/sources/assets/images/brutalist/Abstract-36.png +0 -0
  303. package/sources/assets/images/brutalist/Abstract-37.png +0 -0
  304. package/sources/assets/images/brutalist/Abstract-38.png +0 -0
  305. package/sources/assets/images/brutalist/Abstract-39.png +0 -0
  306. package/sources/assets/images/brutalist/Abstract-4.png +0 -0
  307. package/sources/assets/images/brutalist/Abstract-40.png +0 -0
  308. package/sources/assets/images/brutalist/Abstract-41.png +0 -0
  309. package/sources/assets/images/brutalist/Abstract-42.png +0 -0
  310. package/sources/assets/images/brutalist/Abstract-43.png +0 -0
  311. package/sources/assets/images/brutalist/Abstract-44.png +0 -0
  312. package/sources/assets/images/brutalist/Abstract-45.png +0 -0
  313. package/sources/assets/images/brutalist/Abstract-46.png +0 -0
  314. package/sources/assets/images/brutalist/Abstract-47.png +0 -0
  315. package/sources/assets/images/brutalist/Abstract-48.png +0 -0
  316. package/sources/assets/images/brutalist/Abstract-49.png +0 -0
  317. package/sources/assets/images/brutalist/Abstract-5.png +0 -0
  318. package/sources/assets/images/brutalist/Abstract-50.png +0 -0
  319. package/sources/assets/images/brutalist/Abstract-51.png +0 -0
  320. package/sources/assets/images/brutalist/Abstract-52.png +0 -0
  321. package/sources/assets/images/brutalist/Abstract-53.png +0 -0
  322. package/sources/assets/images/brutalist/Abstract-54.png +0 -0
  323. package/sources/assets/images/brutalist/Abstract-55.png +0 -0
  324. package/sources/assets/images/brutalist/Abstract-56.png +0 -0
  325. package/sources/assets/images/brutalist/Abstract-57.png +0 -0
  326. package/sources/assets/images/brutalist/Abstract-58.png +0 -0
  327. package/sources/assets/images/brutalist/Abstract-59.png +0 -0
  328. package/sources/assets/images/brutalist/Abstract-6.png +0 -0
  329. package/sources/assets/images/brutalist/Abstract-60.png +0 -0
  330. package/sources/assets/images/brutalist/Abstract-61.png +0 -0
  331. package/sources/assets/images/brutalist/Abstract-62.png +0 -0
  332. package/sources/assets/images/brutalist/Abstract-63.png +0 -0
  333. package/sources/assets/images/brutalist/Abstract-64.png +0 -0
  334. package/sources/assets/images/brutalist/Abstract-65.png +0 -0
  335. package/sources/assets/images/brutalist/Abstract-66.png +0 -0
  336. package/sources/assets/images/brutalist/Abstract-67.png +0 -0
  337. package/sources/assets/images/brutalist/Abstract-68.png +0 -0
  338. package/sources/assets/images/brutalist/Abstract-69.png +0 -0
  339. package/sources/assets/images/brutalist/Abstract-7.png +0 -0
  340. package/sources/assets/images/brutalist/Abstract-70.png +0 -0
  341. package/sources/assets/images/brutalist/Abstract-71.png +0 -0
  342. package/sources/assets/images/brutalist/Abstract-72.png +0 -0
  343. package/sources/assets/images/brutalist/Abstract-73.png +0 -0
  344. package/sources/assets/images/brutalist/Abstract-74.png +0 -0
  345. package/sources/assets/images/brutalist/Abstract-75.png +0 -0
  346. package/sources/assets/images/brutalist/Abstract-76.png +0 -0
  347. package/sources/assets/images/brutalist/Abstract-77.png +0 -0
  348. package/sources/assets/images/brutalist/Abstract-78.png +0 -0
  349. package/sources/assets/images/brutalist/Abstract-79.png +0 -0
  350. package/sources/assets/images/brutalist/Abstract-8.png +0 -0
  351. package/sources/assets/images/brutalist/Abstract-80.png +0 -0
  352. package/sources/assets/images/brutalist/Abstract-81.png +0 -0
  353. package/sources/assets/images/brutalist/Abstract-82.png +0 -0
  354. package/sources/assets/images/brutalist/Abstract-83.png +0 -0
  355. package/sources/assets/images/brutalist/Abstract-84.png +0 -0
  356. package/sources/assets/images/brutalist/Abstract-85.png +0 -0
  357. package/sources/assets/images/brutalist/Abstract-86.png +0 -0
  358. package/sources/assets/images/brutalist/Abstract-87.png +0 -0
  359. package/sources/assets/images/brutalist/Abstract-88.png +0 -0
  360. package/sources/assets/images/brutalist/Abstract-89.png +0 -0
  361. package/sources/assets/images/brutalist/Abstract-9.png +0 -0
  362. package/sources/assets/images/brutalist/Abstract-90.png +0 -0
  363. package/sources/assets/images/brutalist/Abstract-91.png +0 -0
  364. package/sources/assets/images/brutalist/Abstract-92.png +0 -0
  365. package/sources/assets/images/brutalist/Abstract-93.png +0 -0
  366. package/sources/assets/images/brutalist/Abstract-94.png +0 -0
  367. package/sources/assets/images/brutalist/Abstract-95.png +0 -0
  368. package/sources/assets/images/brutalist/Abstract-96.png +0 -0
  369. package/sources/assets/images/brutalist/Abstract-97.png +0 -0
  370. package/sources/assets/images/brutalist/Abstract-98.png +0 -0
  371. package/sources/assets/images/brutalist/Abstract-99.png +0 -0
  372. package/sources/assets/images/brutalist/Bauhaus-1.png +0 -0
  373. package/sources/assets/images/brutalist/Bauhaus-10.png +0 -0
  374. package/sources/assets/images/brutalist/Bauhaus-11.png +0 -0
  375. package/sources/assets/images/brutalist/Bauhaus-12.png +0 -0
  376. package/sources/assets/images/brutalist/Bauhaus-13.png +0 -0
  377. package/sources/assets/images/brutalist/Bauhaus-14.png +0 -0
  378. package/sources/assets/images/brutalist/Bauhaus-15.png +0 -0
  379. package/sources/assets/images/brutalist/Bauhaus-16.png +0 -0
  380. package/sources/assets/images/brutalist/Bauhaus-17.png +0 -0
  381. package/sources/assets/images/brutalist/Bauhaus-18.png +0 -0
  382. package/sources/assets/images/brutalist/Bauhaus-19.png +0 -0
  383. package/sources/assets/images/brutalist/Bauhaus-2.png +0 -0
  384. package/sources/assets/images/brutalist/Bauhaus-20.png +0 -0
  385. package/sources/assets/images/brutalist/Bauhaus-21.png +0 -0
  386. package/sources/assets/images/brutalist/Bauhaus-22.png +0 -0
  387. package/sources/assets/images/brutalist/Bauhaus-23.png +0 -0
  388. package/sources/assets/images/brutalist/Bauhaus-24.png +0 -0
  389. package/sources/assets/images/brutalist/Bauhaus-25.png +0 -0
  390. package/sources/assets/images/brutalist/Bauhaus-26.png +0 -0
  391. package/sources/assets/images/brutalist/Bauhaus-27.png +0 -0
  392. package/sources/assets/images/brutalist/Bauhaus-28.png +0 -0
  393. package/sources/assets/images/brutalist/Bauhaus-29.png +0 -0
  394. package/sources/assets/images/brutalist/Bauhaus-3.png +0 -0
  395. package/sources/assets/images/brutalist/Bauhaus-30.png +0 -0
  396. package/sources/assets/images/brutalist/Bauhaus-31.png +0 -0
  397. package/sources/assets/images/brutalist/Bauhaus-32.png +0 -0
  398. package/sources/assets/images/brutalist/Bauhaus-33.png +0 -0
  399. package/sources/assets/images/brutalist/Bauhaus-34.png +0 -0
  400. package/sources/assets/images/brutalist/Bauhaus-35.png +0 -0
  401. package/sources/assets/images/brutalist/Bauhaus-36.png +0 -0
  402. package/sources/assets/images/brutalist/Bauhaus-37.png +0 -0
  403. package/sources/assets/images/brutalist/Bauhaus-38.png +0 -0
  404. package/sources/assets/images/brutalist/Bauhaus-39.png +0 -0
  405. package/sources/assets/images/brutalist/Bauhaus-4.png +0 -0
  406. package/sources/assets/images/brutalist/Bauhaus-40.png +0 -0
  407. package/sources/assets/images/brutalist/Bauhaus-5.png +0 -0
  408. package/sources/assets/images/brutalist/Bauhaus-6.png +0 -0
  409. package/sources/assets/images/brutalist/Bauhaus-7.png +0 -0
  410. package/sources/assets/images/brutalist/Bauhaus-8.png +0 -0
  411. package/sources/assets/images/brutalist/Bauhaus-9.png +0 -0
  412. package/sources/assets/images/brutalist/Brutalism-1.png +0 -0
  413. package/sources/assets/images/brutalist/Brutalism-10.png +0 -0
  414. package/sources/assets/images/brutalist/Brutalism-100.png +0 -0
  415. package/sources/assets/images/brutalist/Brutalism-101.png +0 -0
  416. package/sources/assets/images/brutalist/Brutalism-102.png +0 -0
  417. package/sources/assets/images/brutalist/Brutalism-103.png +0 -0
  418. package/sources/assets/images/brutalist/Brutalism-104.png +0 -0
  419. package/sources/assets/images/brutalist/Brutalism-105.png +0 -0
  420. package/sources/assets/images/brutalist/Brutalism-106.png +0 -0
  421. package/sources/assets/images/brutalist/Brutalism-107.png +0 -0
  422. package/sources/assets/images/brutalist/Brutalism-108.png +0 -0
  423. package/sources/assets/images/brutalist/Brutalism-109.png +0 -0
  424. package/sources/assets/images/brutalist/Brutalism-11.png +0 -0
  425. package/sources/assets/images/brutalist/Brutalism-110.png +0 -0
  426. package/sources/assets/images/brutalist/Brutalism-111.png +0 -0
  427. package/sources/assets/images/brutalist/Brutalism-112.png +0 -0
  428. package/sources/assets/images/brutalist/Brutalism-113.png +0 -0
  429. package/sources/assets/images/brutalist/Brutalism-114.png +0 -0
  430. package/sources/assets/images/brutalist/Brutalism-115.png +0 -0
  431. package/sources/assets/images/brutalist/Brutalism-116.png +0 -0
  432. package/sources/assets/images/brutalist/Brutalism-117.png +0 -0
  433. package/sources/assets/images/brutalist/Brutalism-118.png +0 -0
  434. package/sources/assets/images/brutalist/Brutalism-12.png +0 -0
  435. package/sources/assets/images/brutalist/Brutalism-13.png +0 -0
  436. package/sources/assets/images/brutalist/Brutalism-14.png +0 -0
  437. package/sources/assets/images/brutalist/Brutalism-15.png +0 -0
  438. package/sources/assets/images/brutalist/Brutalism-16.png +0 -0
  439. package/sources/assets/images/brutalist/Brutalism-17.png +0 -0
  440. package/sources/assets/images/brutalist/Brutalism-18.png +0 -0
  441. package/sources/assets/images/brutalist/Brutalism-19.png +0 -0
  442. package/sources/assets/images/brutalist/Brutalism-2.png +0 -0
  443. package/sources/assets/images/brutalist/Brutalism-20.png +0 -0
  444. package/sources/assets/images/brutalist/Brutalism-21.png +0 -0
  445. package/sources/assets/images/brutalist/Brutalism-22.png +0 -0
  446. package/sources/assets/images/brutalist/Brutalism-23.png +0 -0
  447. package/sources/assets/images/brutalist/Brutalism-24.png +0 -0
  448. package/sources/assets/images/brutalist/Brutalism-25.png +0 -0
  449. package/sources/assets/images/brutalist/Brutalism-26.png +0 -0
  450. package/sources/assets/images/brutalist/Brutalism-27.png +0 -0
  451. package/sources/assets/images/brutalist/Brutalism-28.png +0 -0
  452. package/sources/assets/images/brutalist/Brutalism-29.png +0 -0
  453. package/sources/assets/images/brutalist/Brutalism-3.png +0 -0
  454. package/sources/assets/images/brutalist/Brutalism-30.png +0 -0
  455. package/sources/assets/images/brutalist/Brutalism-31.png +0 -0
  456. package/sources/assets/images/brutalist/Brutalism-32.png +0 -0
  457. package/sources/assets/images/brutalist/Brutalism-33.png +0 -0
  458. package/sources/assets/images/brutalist/Brutalism-34.png +0 -0
  459. package/sources/assets/images/brutalist/Brutalism-35.png +0 -0
  460. package/sources/assets/images/brutalist/Brutalism-36.png +0 -0
  461. package/sources/assets/images/brutalist/Brutalism-37.png +0 -0
  462. package/sources/assets/images/brutalist/Brutalism-38.png +0 -0
  463. package/sources/assets/images/brutalist/Brutalism-39.png +0 -0
  464. package/sources/assets/images/brutalist/Brutalism-4.png +0 -0
  465. package/sources/assets/images/brutalist/Brutalism-40.png +0 -0
  466. package/sources/assets/images/brutalist/Brutalism-41.png +0 -0
  467. package/sources/assets/images/brutalist/Brutalism-42.png +0 -0
  468. package/sources/assets/images/brutalist/Brutalism-43.png +0 -0
  469. package/sources/assets/images/brutalist/Brutalism-44.png +0 -0
  470. package/sources/assets/images/brutalist/Brutalism-45.png +0 -0
  471. package/sources/assets/images/brutalist/Brutalism-46.png +0 -0
  472. package/sources/assets/images/brutalist/Brutalism-47.png +0 -0
  473. package/sources/assets/images/brutalist/Brutalism-48.png +0 -0
  474. package/sources/assets/images/brutalist/Brutalism-49.png +0 -0
  475. package/sources/assets/images/brutalist/Brutalism-5.png +0 -0
  476. package/sources/assets/images/brutalist/Brutalism-50.png +0 -0
  477. package/sources/assets/images/brutalist/Brutalism-51.png +0 -0
  478. package/sources/assets/images/brutalist/Brutalism-52.png +0 -0
  479. package/sources/assets/images/brutalist/Brutalism-53.png +0 -0
  480. package/sources/assets/images/brutalist/Brutalism-54.png +0 -0
  481. package/sources/assets/images/brutalist/Brutalism-55.png +0 -0
  482. package/sources/assets/images/brutalist/Brutalism-56.png +0 -0
  483. package/sources/assets/images/brutalist/Brutalism-57.png +0 -0
  484. package/sources/assets/images/brutalist/Brutalism-58.png +0 -0
  485. package/sources/assets/images/brutalist/Brutalism-59.png +0 -0
  486. package/sources/assets/images/brutalist/Brutalism-6.png +0 -0
  487. package/sources/assets/images/brutalist/Brutalism-60.png +0 -0
  488. package/sources/assets/images/brutalist/Brutalism-61.png +0 -0
  489. package/sources/assets/images/brutalist/Brutalism-62.png +0 -0
  490. package/sources/assets/images/brutalist/Brutalism-63.png +0 -0
  491. package/sources/assets/images/brutalist/Brutalism-64.png +0 -0
  492. package/sources/assets/images/brutalist/Brutalism-65.png +0 -0
  493. package/sources/assets/images/brutalist/Brutalism-66.png +0 -0
  494. package/sources/assets/images/brutalist/Brutalism-67.png +0 -0
  495. package/sources/assets/images/brutalist/Brutalism-68.png +0 -0
  496. package/sources/assets/images/brutalist/Brutalism-69.png +0 -0
  497. package/sources/assets/images/brutalist/Brutalism-7.png +0 -0
  498. package/sources/assets/images/brutalist/Brutalism-70.png +0 -0
  499. package/sources/assets/images/brutalist/Brutalism-71.png +0 -0
  500. package/sources/assets/images/brutalist/Brutalism-72.png +0 -0
  501. package/sources/assets/images/brutalist/Brutalism-73.png +0 -0
  502. package/sources/assets/images/brutalist/Brutalism-74.png +0 -0
  503. package/sources/assets/images/brutalist/Brutalism-75.png +0 -0
  504. package/sources/assets/images/brutalist/Brutalism-76.png +0 -0
  505. package/sources/assets/images/brutalist/Brutalism-77.png +0 -0
  506. package/sources/assets/images/brutalist/Brutalism-78.png +0 -0
  507. package/sources/assets/images/brutalist/Brutalism-79.png +0 -0
  508. package/sources/assets/images/brutalist/Brutalism-8.png +0 -0
  509. package/sources/assets/images/brutalist/Brutalism-80.png +0 -0
  510. package/sources/assets/images/brutalist/Brutalism-81.png +0 -0
  511. package/sources/assets/images/brutalist/Brutalism-82.png +0 -0
  512. package/sources/assets/images/brutalist/Brutalism-83.png +0 -0
  513. package/sources/assets/images/brutalist/Brutalism-84.png +0 -0
  514. package/sources/assets/images/brutalist/Brutalism-85.png +0 -0
  515. package/sources/assets/images/brutalist/Brutalism-86.png +0 -0
  516. package/sources/assets/images/brutalist/Brutalism-87.png +0 -0
  517. package/sources/assets/images/brutalist/Brutalism-88.png +0 -0
  518. package/sources/assets/images/brutalist/Brutalism-89.png +0 -0
  519. package/sources/assets/images/brutalist/Brutalism-9.png +0 -0
  520. package/sources/assets/images/brutalist/Brutalism-90.png +0 -0
  521. package/sources/assets/images/brutalist/Brutalism-91.png +0 -0
  522. package/sources/assets/images/brutalist/Brutalism-92.png +0 -0
  523. package/sources/assets/images/brutalist/Brutalism-93.png +0 -0
  524. package/sources/assets/images/brutalist/Brutalism-94.png +0 -0
  525. package/sources/assets/images/brutalist/Brutalism-95.png +0 -0
  526. package/sources/assets/images/brutalist/Brutalism-96.png +0 -0
  527. package/sources/assets/images/brutalist/Brutalism-97.png +0 -0
  528. package/sources/assets/images/brutalist/Brutalism-98.png +0 -0
  529. package/sources/assets/images/brutalist/Brutalism-99.png +0 -0
  530. package/sources/assets/images/favicon-active.png +0 -0
  531. package/sources/assets/images/favicon.png +0 -0
  532. package/sources/assets/images/gradients/01.png +0 -0
  533. package/sources/assets/images/gradients/02.png +0 -0
  534. package/sources/assets/images/gradients/03.png +0 -0
  535. package/sources/assets/images/gradients/04.png +0 -0
  536. package/sources/assets/images/gradients/05.png +0 -0
  537. package/sources/assets/images/gradients/06.png +0 -0
  538. package/sources/assets/images/gradients/07.png +0 -0
  539. package/sources/assets/images/gradients/08.png +0 -0
  540. package/sources/assets/images/gradients/09.png +0 -0
  541. package/sources/assets/images/gradients/10.png +0 -0
  542. package/sources/assets/images/gradients/100.png +0 -0
  543. package/sources/assets/images/gradients/11.png +0 -0
  544. package/sources/assets/images/gradients/12.png +0 -0
  545. package/sources/assets/images/gradients/13.png +0 -0
  546. package/sources/assets/images/gradients/14.png +0 -0
  547. package/sources/assets/images/gradients/15.png +0 -0
  548. package/sources/assets/images/gradients/16.png +0 -0
  549. package/sources/assets/images/gradients/17.png +0 -0
  550. package/sources/assets/images/gradients/18.png +0 -0
  551. package/sources/assets/images/gradients/19.png +0 -0
  552. package/sources/assets/images/gradients/20.png +0 -0
  553. package/sources/assets/images/gradients/21.png +0 -0
  554. package/sources/assets/images/gradients/22.png +0 -0
  555. package/sources/assets/images/gradients/23.png +0 -0
  556. package/sources/assets/images/gradients/24.png +0 -0
  557. package/sources/assets/images/gradients/25.png +0 -0
  558. package/sources/assets/images/gradients/26.png +0 -0
  559. package/sources/assets/images/gradients/27.png +0 -0
  560. package/sources/assets/images/gradients/28.png +0 -0
  561. package/sources/assets/images/gradients/29.png +0 -0
  562. package/sources/assets/images/gradients/30.png +0 -0
  563. package/sources/assets/images/gradients/31.png +0 -0
  564. package/sources/assets/images/gradients/32.png +0 -0
  565. package/sources/assets/images/gradients/33.png +0 -0
  566. package/sources/assets/images/gradients/34.png +0 -0
  567. package/sources/assets/images/gradients/35.png +0 -0
  568. package/sources/assets/images/gradients/36.png +0 -0
  569. package/sources/assets/images/gradients/37.png +0 -0
  570. package/sources/assets/images/gradients/38.png +0 -0
  571. package/sources/assets/images/gradients/39.png +0 -0
  572. package/sources/assets/images/gradients/40.png +0 -0
  573. package/sources/assets/images/gradients/41.png +0 -0
  574. package/sources/assets/images/gradients/42.png +0 -0
  575. package/sources/assets/images/gradients/43.png +0 -0
  576. package/sources/assets/images/gradients/44.png +0 -0
  577. package/sources/assets/images/gradients/45.png +0 -0
  578. package/sources/assets/images/gradients/46.png +0 -0
  579. package/sources/assets/images/gradients/47.png +0 -0
  580. package/sources/assets/images/gradients/48.png +0 -0
  581. package/sources/assets/images/gradients/49.png +0 -0
  582. package/sources/assets/images/gradients/50.png +0 -0
  583. package/sources/assets/images/gradients/51.png +0 -0
  584. package/sources/assets/images/gradients/52.png +0 -0
  585. package/sources/assets/images/gradients/53.png +0 -0
  586. package/sources/assets/images/gradients/54.png +0 -0
  587. package/sources/assets/images/gradients/55.png +0 -0
  588. package/sources/assets/images/gradients/56.png +0 -0
  589. package/sources/assets/images/gradients/57.png +0 -0
  590. package/sources/assets/images/gradients/58.png +0 -0
  591. package/sources/assets/images/gradients/59.png +0 -0
  592. package/sources/assets/images/gradients/60.png +0 -0
  593. package/sources/assets/images/gradients/61.png +0 -0
  594. package/sources/assets/images/gradients/62.png +0 -0
  595. package/sources/assets/images/gradients/63.png +0 -0
  596. package/sources/assets/images/gradients/64.png +0 -0
  597. package/sources/assets/images/gradients/65.png +0 -0
  598. package/sources/assets/images/gradients/66.png +0 -0
  599. package/sources/assets/images/gradients/67.png +0 -0
  600. package/sources/assets/images/gradients/68.png +0 -0
  601. package/sources/assets/images/gradients/69.png +0 -0
  602. package/sources/assets/images/gradients/70.png +0 -0
  603. package/sources/assets/images/gradients/71.png +0 -0
  604. package/sources/assets/images/gradients/72.png +0 -0
  605. package/sources/assets/images/gradients/73.png +0 -0
  606. package/sources/assets/images/gradients/74.png +0 -0
  607. package/sources/assets/images/gradients/75.png +0 -0
  608. package/sources/assets/images/gradients/76.png +0 -0
  609. package/sources/assets/images/gradients/77.png +0 -0
  610. package/sources/assets/images/gradients/78.png +0 -0
  611. package/sources/assets/images/gradients/79.png +0 -0
  612. package/sources/assets/images/gradients/80.png +0 -0
  613. package/sources/assets/images/gradients/81.png +0 -0
  614. package/sources/assets/images/gradients/82.png +0 -0
  615. package/sources/assets/images/gradients/83.png +0 -0
  616. package/sources/assets/images/gradients/84.png +0 -0
  617. package/sources/assets/images/gradients/85.png +0 -0
  618. package/sources/assets/images/gradients/86.png +0 -0
  619. package/sources/assets/images/gradients/87.png +0 -0
  620. package/sources/assets/images/gradients/88.png +0 -0
  621. package/sources/assets/images/gradients/89.png +0 -0
  622. package/sources/assets/images/gradients/90.png +0 -0
  623. package/sources/assets/images/gradients/91.png +0 -0
  624. package/sources/assets/images/gradients/92.png +0 -0
  625. package/sources/assets/images/gradients/93.png +0 -0
  626. package/sources/assets/images/gradients/94.png +0 -0
  627. package/sources/assets/images/gradients/95.png +0 -0
  628. package/sources/assets/images/gradients/96.png +0 -0
  629. package/sources/assets/images/gradients/97.png +0 -0
  630. package/sources/assets/images/gradients/98.png +0 -0
  631. package/sources/assets/images/gradients/99.png +0 -0
  632. package/sources/assets/images/icon-adaptive.png +0 -0
  633. package/sources/assets/images/icon-claude.png +0 -0
  634. package/sources/assets/images/icon-claude@2x.png +0 -0
  635. package/sources/assets/images/icon-claude@3x.png +0 -0
  636. package/sources/assets/images/icon-gemini.png +0 -0
  637. package/sources/assets/images/icon-gemini@2x.png +0 -0
  638. package/sources/assets/images/icon-gemini@3x.png +0 -0
  639. package/sources/assets/images/icon-gpt.png +0 -0
  640. package/sources/assets/images/icon-gpt@2x.png +0 -0
  641. package/sources/assets/images/icon-gpt@3x.png +0 -0
  642. package/sources/assets/images/icon-monochrome.png +0 -0
  643. package/sources/assets/images/icon-notification.png +0 -0
  644. package/sources/assets/images/icon-openclaw.png +0 -0
  645. package/sources/assets/images/icon-openclaw@2x.png +0 -0
  646. package/sources/assets/images/icon-openclaw@3x.png +0 -0
  647. package/sources/assets/images/icon-tauri.png +0 -0
  648. package/sources/assets/images/icon-voice-white.png +0 -0
  649. package/sources/assets/images/icon-voice.png +0 -0
  650. package/sources/assets/images/icon-voice@2x.png +0 -0
  651. package/sources/assets/images/icon-voice@3x.png +0 -0
  652. package/sources/assets/images/icon.png +0 -0
  653. package/sources/assets/images/logo-black.png +0 -0
  654. package/sources/assets/images/logo-white.png +0 -0
  655. package/sources/assets/images/logotype-dark.png +0 -0
  656. package/sources/assets/images/logotype-dark@2x.png +0 -0
  657. package/sources/assets/images/logotype-dark@3x.png +0 -0
  658. package/sources/assets/images/logotype-light.png +0 -0
  659. package/sources/assets/images/logotype-light@2x.png +0 -0
  660. package/sources/assets/images/logotype-light@3x.png +0 -0
  661. package/sources/assets/images/logotype.png +0 -0
  662. package/sources/assets/images/logotype@2x.png +0 -0
  663. package/sources/assets/images/logotype@3x.png +0 -0
  664. package/sources/assets/images/splash-android-dark.png +0 -0
  665. package/sources/assets/images/splash-android-light.png +0 -0
  666. package/sources/assets/images/transparent.png +0 -0
  667. package/sources/assets/images/zen-icon.png +0 -0
  668. package/sources/auth/AuthContext.tsx +100 -0
  669. package/sources/auth/authAccountApprove.ts +2 -0
  670. package/sources/auth/authApprove.ts +2 -0
  671. package/sources/auth/authChallenge.ts +8 -0
  672. package/sources/auth/authGetToken.ts +4 -0
  673. package/sources/auth/authQRStart.ts +17 -0
  674. package/sources/auth/authQRWait.ts +13 -0
  675. package/sources/auth/secretKeyBackup.spec.ts +465 -0
  676. package/sources/auth/secretKeyBackup.ts +179 -0
  677. package/sources/auth/tokenStorage.ts +27 -0
  678. package/sources/changelog/changelog.json +60 -0
  679. package/sources/changelog/index.ts +3 -0
  680. package/sources/changelog/parser.ts +23 -0
  681. package/sources/changelog/storage.ts +17 -0
  682. package/sources/changelog/types.ts +10 -0
  683. package/sources/components/ActiveSessionsGroupCompact.tsx +567 -0
  684. package/sources/components/AgentContentView.ios.tsx +70 -0
  685. package/sources/components/AgentContentView.tsx +48 -0
  686. package/sources/components/AgentInput.tsx +1468 -0
  687. package/sources/components/AgentInputAttachmentStrip.tsx +122 -0
  688. package/sources/components/AgentInputAutocomplete.tsx +96 -0
  689. package/sources/components/AgentInputSuggestionView.tsx +106 -0
  690. package/sources/components/AllFilesDiffView.tsx +515 -0
  691. package/sources/components/Avatar.tsx +149 -0
  692. package/sources/components/AvatarBrutalist.tsx +501 -0
  693. package/sources/components/AvatarGradient.tsx +147 -0
  694. package/sources/components/AvatarSkia.tsx +111 -0
  695. package/sources/components/AvatarSkia.web.tsx +113 -0
  696. package/sources/components/ChatFooter.tsx +50 -0
  697. package/sources/components/ChatHeaderView.tsx +180 -0
  698. package/sources/components/ChatList.tsx +283 -0
  699. package/sources/components/CodeEditor.tsx +22 -0
  700. package/sources/components/CodeEditor.web.tsx +180 -0
  701. package/sources/components/CodeView.tsx +33 -0
  702. package/sources/components/CommandPalette/CommandPalette.tsx +72 -0
  703. package/sources/components/CommandPalette/CommandPaletteInput.tsx +65 -0
  704. package/sources/components/CommandPalette/CommandPaletteItem.tsx +141 -0
  705. package/sources/components/CommandPalette/CommandPaletteModal.tsx +148 -0
  706. package/sources/components/CommandPalette/CommandPaletteProvider.tsx +141 -0
  707. package/sources/components/CommandPalette/CommandPaletteResults.tsx +129 -0
  708. package/sources/components/CommandPalette/index.ts +3 -0
  709. package/sources/components/CommandPalette/types.ts +15 -0
  710. package/sources/components/CommandPalette/useCommandPalette.ts +107 -0
  711. package/sources/components/CommandView.tsx +135 -0
  712. package/sources/components/CompactGitStatus.tsx +88 -0
  713. package/sources/components/ConnectButton.tsx +117 -0
  714. package/sources/components/Deferred.tsx +18 -0
  715. package/sources/components/DuplicateSheet.tsx +295 -0
  716. package/sources/components/EmptyMainScreen.tsx +171 -0
  717. package/sources/components/EmptyMessages.tsx +123 -0
  718. package/sources/components/EmptySessionsTablet.tsx +111 -0
  719. package/sources/components/ExternalLink.tsx +22 -0
  720. package/sources/components/FAB.tsx +53 -0
  721. package/sources/components/FABWide.tsx +59 -0
  722. package/sources/components/FeedItemCard.tsx +98 -0
  723. package/sources/components/FileIcon.tsx +63 -0
  724. package/sources/components/FileViewPanel.tsx +673 -0
  725. package/sources/components/FilesSidebar.tsx +739 -0
  726. package/sources/components/FloatingOverlay.tsx +48 -0
  727. package/sources/components/GitStatusBadge.tsx +82 -0
  728. package/sources/components/HeaderLogo.tsx +28 -0
  729. package/sources/components/HomeHeader.tsx +243 -0
  730. package/sources/components/HorizontalScrollView.tsx +88 -0
  731. package/sources/components/InboxView.tsx +260 -0
  732. package/sources/components/InlineFileDiff.tsx +277 -0
  733. package/sources/components/Item.tsx +315 -0
  734. package/sources/components/ItemGroup.tsx +147 -0
  735. package/sources/components/ItemList.tsx +102 -0
  736. package/sources/components/MainView.tsx +324 -0
  737. package/sources/components/MessageView.tsx +299 -0
  738. package/sources/components/MultiTextInput.tsx +285 -0
  739. package/sources/components/MultiTextInput.web.tsx +220 -0
  740. package/sources/components/OAuthView.tsx +374 -0
  741. package/sources/components/PermissionModeSelector.tsx +68 -0
  742. package/sources/components/PlaceholderContainerView.tsx +47 -0
  743. package/sources/components/PlusPlus.tsx +34 -0
  744. package/sources/components/PlusPlus.web.tsx +34 -0
  745. package/sources/components/ProjectGitStatus.tsx +102 -0
  746. package/sources/components/RoundButton.tsx +130 -0
  747. package/sources/components/SearchableListSelector.tsx +675 -0
  748. package/sources/components/SessionActionsNativeMenu.android.tsx +58 -0
  749. package/sources/components/SessionActionsNativeMenu.ios.tsx +55 -0
  750. package/sources/components/SessionActionsNativeMenu.tsx +20 -0
  751. package/sources/components/SessionActionsNativeMenu.web.tsx +13 -0
  752. package/sources/components/SessionActionsPopover.tsx +240 -0
  753. package/sources/components/SessionsList.tsx +471 -0
  754. package/sources/components/SessionsListWrapper.tsx +72 -0
  755. package/sources/components/SettingsView.tsx +470 -0
  756. package/sources/components/SettingsViewWrapper.tsx +21 -0
  757. package/sources/components/Shaker.tsx +42 -0
  758. package/sources/components/Shaker.web.tsx +46 -0
  759. package/sources/components/ShimmerView.tsx +106 -0
  760. package/sources/components/SidebarNavigator.tsx +218 -0
  761. package/sources/components/SidebarView.tsx +104 -0
  762. package/sources/components/SimpleSyntaxHighlighter.tsx +322 -0
  763. package/sources/components/StatusBarProvider.tsx +12 -0
  764. package/sources/components/StatusDot.tsx +49 -0
  765. package/sources/components/StyledText.tsx +35 -0
  766. package/sources/components/Switch.tsx +20 -0
  767. package/sources/components/TabBar.tsx +140 -0
  768. package/sources/components/ToolGroupView.tsx +101 -0
  769. package/sources/components/TransitionStack.tsx +14 -0
  770. package/sources/components/UpdateBanner.tsx +74 -0
  771. package/sources/components/UserCard.tsx +41 -0
  772. package/sources/components/UserSearchResult.tsx +129 -0
  773. package/sources/components/VoiceAssistantStatusBar.tsx +260 -0
  774. package/sources/components/VoiceBars.tsx +95 -0
  775. package/sources/components/autocomplete/applySuggestion.test.ts +194 -0
  776. package/sources/components/autocomplete/applySuggestion.ts +61 -0
  777. package/sources/components/autocomplete/findActiveWord.test.ts +365 -0
  778. package/sources/components/autocomplete/findActiveWord.ts +207 -0
  779. package/sources/components/autocomplete/suggestions.ts +79 -0
  780. package/sources/components/autocomplete/useActiveSuggestions.ts +130 -0
  781. package/sources/components/autocomplete/useActiveWord.ts +19 -0
  782. package/sources/components/diff/DiffView.tsx +188 -0
  783. package/sources/components/diff/PierreDiffView.tsx +253 -0
  784. package/sources/components/diff/calculateDiff.ts +317 -0
  785. package/sources/components/entityColor.ts +51 -0
  786. package/sources/components/haptics.ts +9 -0
  787. package/sources/components/haptics.web.ts +7 -0
  788. package/sources/components/layout.ts +44 -0
  789. package/sources/components/markdown/MarkdownView.tsx +670 -0
  790. package/sources/components/markdown/MermaidRenderer.tsx +233 -0
  791. package/sources/components/markdown/linkUtils.test.ts +17 -0
  792. package/sources/components/markdown/linkUtils.ts +5 -0
  793. package/sources/components/markdown/parseMarkdown.test.ts +64 -0
  794. package/sources/components/markdown/parseMarkdown.ts +46 -0
  795. package/sources/components/markdown/parseMarkdownBlock.test.ts +108 -0
  796. package/sources/components/markdown/parseMarkdownBlock.ts +200 -0
  797. package/sources/components/markdown/parseMarkdownSpans.ts +88 -0
  798. package/sources/components/modelModeOptions.test.ts +114 -0
  799. package/sources/components/modelModeOptions.ts +257 -0
  800. package/sources/components/navigation/Header.tsx +252 -0
  801. package/sources/components/parseLocalCommandMessage.spec.ts +96 -0
  802. package/sources/components/parseLocalCommandMessage.ts +97 -0
  803. package/sources/components/qr/QRCode.tsx +178 -0
  804. package/sources/components/qr/QRCode.web.tsx +229 -0
  805. package/sources/components/qr/index.ts +2 -0
  806. package/sources/components/qr/qrMatrix.ts +48 -0
  807. package/sources/components/tools/PermissionFooter.tsx +527 -0
  808. package/sources/components/tools/ToolDiffView.tsx +60 -0
  809. package/sources/components/tools/ToolError.tsx +49 -0
  810. package/sources/components/tools/ToolFullView.tsx +193 -0
  811. package/sources/components/tools/ToolHeader.tsx +93 -0
  812. package/sources/components/tools/ToolSectionView.tsx +42 -0
  813. package/sources/components/tools/ToolStatusIndicator.tsx +36 -0
  814. package/sources/components/tools/ToolView.tsx +340 -0
  815. package/sources/components/tools/knownTools.tsx +957 -0
  816. package/sources/components/tools/views/AskUserQuestionView.tsx +357 -0
  817. package/sources/components/tools/views/BashView.tsx +47 -0
  818. package/sources/components/tools/views/BashViewFull.tsx +81 -0
  819. package/sources/components/tools/views/CodexBashView.tsx +126 -0
  820. package/sources/components/tools/views/CodexDiffView.tsx +79 -0
  821. package/sources/components/tools/views/CodexPatchView.tsx +186 -0
  822. package/sources/components/tools/views/EditView.tsx +33 -0
  823. package/sources/components/tools/views/EditViewFull.tsx +38 -0
  824. package/sources/components/tools/views/ExitPlanToolView.tsx +21 -0
  825. package/sources/components/tools/views/FileView.tsx +118 -0
  826. package/sources/components/tools/views/GeminiEditView.tsx +75 -0
  827. package/sources/components/tools/views/GeminiExecuteView.tsx +92 -0
  828. package/sources/components/tools/views/MCPToolView.tsx +31 -0
  829. package/sources/components/tools/views/MultiEditView.tsx +41 -0
  830. package/sources/components/tools/views/MultiEditViewFull.tsx +84 -0
  831. package/sources/components/tools/views/TaskView.tsx +129 -0
  832. package/sources/components/tools/views/TodoView.tsx +90 -0
  833. package/sources/components/tools/views/WriteView.tsx +29 -0
  834. package/sources/components/tools/views/_all.tsx +88 -0
  835. package/sources/components/usage/UsageBar.tsx +80 -0
  836. package/sources/components/usage/UsageChart.tsx +164 -0
  837. package/sources/components/usage/UsagePanel.tsx +283 -0
  838. package/sources/components/web/FaviconPermissionIndicator.tsx +44 -0
  839. package/sources/config.ts +3 -0
  840. package/sources/constants/Languages.ts +116 -0
  841. package/sources/constants/Typography.ts +116 -0
  842. package/sources/dev/testRunner.ts +277 -0
  843. package/sources/docs/autocomplete-text-manipulation.md +224 -0
  844. package/sources/encryption/aes.appspec.ts +25 -0
  845. package/sources/encryption/aes.ts +21 -0
  846. package/sources/encryption/aes.web.test.ts +73 -0
  847. package/sources/encryption/aes.web.ts +79 -0
  848. package/sources/encryption/base64.appspec.ts +240 -0
  849. package/sources/encryption/base64.native.ts +12 -0
  850. package/sources/encryption/base64.ts +46 -0
  851. package/sources/encryption/blob.test.ts +120 -0
  852. package/sources/encryption/blob.ts +58 -0
  853. package/sources/encryption/deriveKey.appspec.ts +72 -0
  854. package/sources/encryption/deriveKey.ts +46 -0
  855. package/sources/encryption/hex.ts +17 -0
  856. package/sources/encryption/hmac_sha512.appspec.ts +40 -0
  857. package/sources/encryption/hmac_sha512.ts +42 -0
  858. package/sources/encryption/libsodium.lib.ts +2 -0
  859. package/sources/encryption/libsodium.lib.web.ts +2 -0
  860. package/sources/encryption/libsodium.ts +58 -0
  861. package/sources/encryption/text.test.ts +61 -0
  862. package/sources/encryption/text.ts +11 -0
  863. package/sources/hooks/useAsyncCommand.ts +25 -0
  864. package/sources/hooks/useAttachmentImage.ts +134 -0
  865. package/sources/hooks/useAutocomplete.ts +69 -0
  866. package/sources/hooks/useAutocompleteSession.ts +53 -0
  867. package/sources/hooks/useChangelog.ts +45 -0
  868. package/sources/hooks/useCheckCameraPermissions.ts +25 -0
  869. package/sources/hooks/useConnectAccount.ts +107 -0
  870. package/sources/hooks/useConnectTerminal.ts +112 -0
  871. package/sources/hooks/useDemoMessages.ts +48 -0
  872. package/sources/hooks/useDraft.ts +120 -0
  873. package/sources/hooks/useElapsedTime.ts +36 -0
  874. package/sources/hooks/useGetPath.ts +13 -0
  875. package/sources/hooks/useGitStatusFiles.ts +45 -0
  876. package/sources/hooks/useGlobalKeyboard.ts +29 -0
  877. package/sources/hooks/useGroupedMessages.ts +149 -0
  878. package/sources/hooks/useImagePicker.ts +135 -0
  879. package/sources/hooks/useInboxHasContent.ts +19 -0
  880. package/sources/hooks/useMultiClick.ts +56 -0
  881. package/sources/hooks/useNasTechAction.ts +45 -0
  882. package/sources/hooks/useNativeUpdate.ts +10 -0
  883. package/sources/hooks/useNavigateToSession.ts +20 -0
  884. package/sources/hooks/useNewSessionDraft.ts +70 -0
  885. package/sources/hooks/usePrefetchFileContents.ts +162 -0
  886. package/sources/hooks/useSearch.ts +120 -0
  887. package/sources/hooks/useSessionQuickActions.ts +325 -0
  888. package/sources/hooks/useTauriDrag.ts +76 -0
  889. package/sources/hooks/useTauriZoom.ts +67 -0
  890. package/sources/hooks/useUpdates.ts +84 -0
  891. package/sources/hooks/useVisibleSessionListViewData.ts +65 -0
  892. package/sources/hooks/useWorktreeCleanup.ts +69 -0
  893. package/sources/log.ts +108 -0
  894. package/sources/modal/ModalManager.ts +203 -0
  895. package/sources/modal/ModalProvider.tsx +103 -0
  896. package/sources/modal/components/BaseModal.tsx +122 -0
  897. package/sources/modal/components/CustomModal.tsx +42 -0
  898. package/sources/modal/components/WebAlertModal.tsx +139 -0
  899. package/sources/modal/components/WebPromptModal.tsx +185 -0
  900. package/sources/modal/index.ts +3 -0
  901. package/sources/modal/types.ts +79 -0
  902. package/sources/nastech-wire/index.ts +10 -0
  903. package/sources/nastech-wire/legacyProtocol.ts +27 -0
  904. package/sources/nastech-wire/messageMeta.ts +14 -0
  905. package/sources/nastech-wire/messages.ts +113 -0
  906. package/sources/nastech-wire/sessionProtocol.ts +134 -0
  907. package/sources/nastech-wire/voice.ts +34 -0
  908. package/sources/polyfills/screenOrientation.ts +33 -0
  909. package/sources/realtime/RealtimeProvider.tsx +20 -0
  910. package/sources/realtime/RealtimeProvider.web.tsx +15 -0
  911. package/sources/realtime/RealtimeSession.ts +200 -0
  912. package/sources/realtime/RealtimeVoiceSession.tsx +211 -0
  913. package/sources/realtime/RealtimeVoiceSession.web.tsx +209 -0
  914. package/sources/realtime/hooks/contextFormatters.ts +127 -0
  915. package/sources/realtime/hooks/voiceHooks.ts +232 -0
  916. package/sources/realtime/realtimeClientTools.ts +94 -0
  917. package/sources/realtime/types.ts +19 -0
  918. package/sources/realtime/voiceConfig.ts +31 -0
  919. package/sources/realtime/voiceExperiment.ts +91 -0
  920. package/sources/realtime/voiceSystemPrompt.ts +75 -0
  921. package/sources/scripts/compareTranslations.ts +217 -0
  922. package/sources/scripts/parseChangelog.ts +87 -0
  923. package/sources/sync/__testdata__/trace_0.json +3986 -0
  924. package/sources/sync/__testdata__/trace_1.json +1391 -0
  925. package/sources/sync/__testdata__/trace_2.json +182 -0
  926. package/sources/sync/agentDefaults.ts +108 -0
  927. package/sources/sync/apiArtifacts.ts +143 -0
  928. package/sources/sync/apiAttachments.ts +217 -0
  929. package/sources/sync/apiFeed.ts +60 -0
  930. package/sources/sync/apiFriends.ts +217 -0
  931. package/sources/sync/apiGithub.spec.ts +97 -0
  932. package/sources/sync/apiGithub.ts +103 -0
  933. package/sources/sync/apiKv.ts +270 -0
  934. package/sources/sync/apiPush.ts +83 -0
  935. package/sources/sync/apiServices.ts +64 -0
  936. package/sources/sync/apiSocket.ts +290 -0
  937. package/sources/sync/apiTypes.spec.ts +23 -0
  938. package/sources/sync/apiTypes.ts +213 -0
  939. package/sources/sync/apiUsage.ts +130 -0
  940. package/sources/sync/apiVoice.ts +57 -0
  941. package/sources/sync/appConfig.ts +95 -0
  942. package/sources/sync/artifactTypes.ts +85 -0
  943. package/sources/sync/attachmentTypes.ts +28 -0
  944. package/sources/sync/encryption/artifactEncryption.ts +83 -0
  945. package/sources/sync/encryption/encryption.ts +220 -0
  946. package/sources/sync/encryption/encryptionCache.ts +248 -0
  947. package/sources/sync/encryption/encryptor.appspec.ts +409 -0
  948. package/sources/sync/encryption/encryptor.ts +126 -0
  949. package/sources/sync/encryption/machineEncryption.ts +122 -0
  950. package/sources/sync/encryption/sessionEncryption.ts +207 -0
  951. package/sources/sync/feedTypes.ts +43 -0
  952. package/sources/sync/friendTypes.ts +92 -0
  953. package/sources/sync/git-parsers/LineParser.ts +62 -0
  954. package/sources/sync/git-parsers/parseBranch.ts +97 -0
  955. package/sources/sync/git-parsers/parseDiff.ts +180 -0
  956. package/sources/sync/git-parsers/parseStatus.ts +162 -0
  957. package/sources/sync/git-parsers/parseStatusV2.ts +307 -0
  958. package/sources/sync/gitStatusFiles.ts +185 -0
  959. package/sources/sync/gitStatusSync.ts +282 -0
  960. package/sources/sync/localSettings.ts +67 -0
  961. package/sources/sync/messageMeta.test.ts +87 -0
  962. package/sources/sync/messageMeta.ts +36 -0
  963. package/sources/sync/modeHacks.test.ts +29 -0
  964. package/sources/sync/modeHacks.ts +22 -0
  965. package/sources/sync/nastechApi.ts +124 -0
  966. package/sources/sync/ops.ts +776 -0
  967. package/sources/sync/persistence.ts +322 -0
  968. package/sources/sync/profile.ts +95 -0
  969. package/sources/sync/projectFiles.ts +54 -0
  970. package/sources/sync/prompt/systemPrompt.ts +20 -0
  971. package/sources/sync/purchases.ts +67 -0
  972. package/sources/sync/pushRegistration.ts +229 -0
  973. package/sources/sync/reducer/activityUpdateAccumulator.test.ts +492 -0
  974. package/sources/sync/reducer/activityUpdateAccumulator.ts +96 -0
  975. package/sources/sync/reducer/messageToEvent.ts +85 -0
  976. package/sources/sync/reducer/phase0-skipping.spec.ts +206 -0
  977. package/sources/sync/reducer/reducer.spec.ts +3169 -0
  978. package/sources/sync/reducer/reducer.ts +1214 -0
  979. package/sources/sync/reducer/reducerTracer.spec.ts +502 -0
  980. package/sources/sync/reducer/reducerTracer.ts +310 -0
  981. package/sources/sync/revenueCat/index.ts +21 -0
  982. package/sources/sync/revenueCat/revenueCat.ts +215 -0
  983. package/sources/sync/revenueCat/revenueCat.web.ts +238 -0
  984. package/sources/sync/revenueCat/types.ts +82 -0
  985. package/sources/sync/serverConfig.ts +72 -0
  986. package/sources/sync/settings.spec.ts +456 -0
  987. package/sources/sync/settings.ts +186 -0
  988. package/sources/sync/storage.ts +1653 -0
  989. package/sources/sync/storageTypes.spec.ts +24 -0
  990. package/sources/sync/storageTypes.ts +215 -0
  991. package/sources/sync/suggestionCommands.ts +149 -0
  992. package/sources/sync/suggestionFile.ts +206 -0
  993. package/sources/sync/sync.ts +2555 -0
  994. package/sources/sync/typesMessage.ts +69 -0
  995. package/sources/sync/typesMessageMeta.test.ts +14 -0
  996. package/sources/sync/typesMessageMeta.ts +17 -0
  997. package/sources/sync/typesRaw.spec.ts +2010 -0
  998. package/sources/sync/typesRaw.ts +1183 -0
  999. package/sources/sync/uploadFormFile.ts +29 -0
  1000. package/sources/sync/uploadFormFile.web.ts +14 -0
  1001. package/sources/sync/webTabTitle.ts +58 -0
  1002. package/sources/text/README.md +223 -0
  1003. package/sources/text/_all.ts +104 -0
  1004. package/sources/text/_default.ts +1015 -0
  1005. package/sources/text/index.ts +215 -0
  1006. package/sources/text/translations/ca.ts +993 -0
  1007. package/sources/text/translations/en.ts +1009 -0
  1008. package/sources/text/translations/es.ts +995 -0
  1009. package/sources/text/translations/it.ts +992 -0
  1010. package/sources/text/translations/ja.ts +993 -0
  1011. package/sources/text/translations/pl.ts +1024 -0
  1012. package/sources/text/translations/pt.ts +992 -0
  1013. package/sources/text/translations/ru.ts +1023 -0
  1014. package/sources/text/translations/zh-Hans.ts +992 -0
  1015. package/sources/text/translations/zh-Hant.ts +991 -0
  1016. package/sources/theme.css +72 -0
  1017. package/sources/theme.dark.json +31 -0
  1018. package/sources/theme.figma.json +457 -0
  1019. package/sources/theme.gen.ts +10 -0
  1020. package/sources/theme.light.json +31 -0
  1021. package/sources/theme.ts +452 -0
  1022. package/sources/track/index.ts +171 -0
  1023. package/sources/track/tracking.ts +12 -0
  1024. package/sources/track/useTrackScreens.ts +10 -0
  1025. package/sources/types/react-native-webrtc-web-shim.d.ts +6 -0
  1026. package/sources/unistyles.ts +97 -0
  1027. package/sources/utils/codexUnifiedDiff.spec.ts +43 -0
  1028. package/sources/utils/codexUnifiedDiff.ts +70 -0
  1029. package/sources/utils/consoleLogging.ts +145 -0
  1030. package/sources/utils/copySessionMetadataToClipboard.ts +53 -0
  1031. package/sources/utils/debounce.test.ts +646 -0
  1032. package/sources/utils/debounce.ts +122 -0
  1033. package/sources/utils/deviceCalculations.test.ts +318 -0
  1034. package/sources/utils/deviceCalculations.ts +87 -0
  1035. package/sources/utils/errors.ts +10 -0
  1036. package/sources/utils/formatPermissionParams.ts +23 -0
  1037. package/sources/utils/isTauri.ts +7 -0
  1038. package/sources/utils/loadSkia.ts +3 -0
  1039. package/sources/utils/loadSkia.web.ts +5 -0
  1040. package/sources/utils/lock.ts +40 -0
  1041. package/sources/utils/machineUtils.ts +6 -0
  1042. package/sources/utils/messageUtils.ts +254 -0
  1043. package/sources/utils/microphonePermissions.ts +109 -0
  1044. package/sources/utils/notificationRouting.test.ts +51 -0
  1045. package/sources/utils/notificationRouting.ts +81 -0
  1046. package/sources/utils/oauth.ts +143 -0
  1047. package/sources/utils/openExternalUrl.ts +19 -0
  1048. package/sources/utils/parseToken.ts +23 -0
  1049. package/sources/utils/pasteImages.web.ts +81 -0
  1050. package/sources/utils/pathUtils.spec.ts +226 -0
  1051. package/sources/utils/pathUtils.ts +75 -0
  1052. package/sources/utils/platform.ts +19 -0
  1053. package/sources/utils/readFileBytes.ts +11 -0
  1054. package/sources/utils/readFileBytes.web.ts +12 -0
  1055. package/sources/utils/requestReview.ts +135 -0
  1056. package/sources/utils/responsive.ts +87 -0
  1057. package/sources/utils/resumeCommand.test.ts +78 -0
  1058. package/sources/utils/resumeCommand.ts +70 -0
  1059. package/sources/utils/sessionFileLinks.test.ts +112 -0
  1060. package/sources/utils/sessionFileLinks.ts +388 -0
  1061. package/sources/utils/sessionUtils.ts +226 -0
  1062. package/sources/utils/stringUtils.ts +41 -0
  1063. package/sources/utils/sync.ts +164 -0
  1064. package/sources/utils/thumbhash.ts +17 -0
  1065. package/sources/utils/thumbhash.web.ts +85 -0
  1066. package/sources/utils/time.ts +41 -0
  1067. package/sources/utils/toSnakeCase.test.ts +182 -0
  1068. package/sources/utils/toSnakeCase.ts +40 -0
  1069. package/sources/utils/toolCommand.test.ts +23 -0
  1070. package/sources/utils/toolCommand.ts +35 -0
  1071. package/sources/utils/toolComparison.test.ts +101 -0
  1072. package/sources/utils/toolComparison.ts +73 -0
  1073. package/sources/utils/toolErrorParser.test.ts +126 -0
  1074. package/sources/utils/toolErrorParser.ts +102 -0
  1075. package/sources/utils/trimIdent.ts +27 -0
  1076. package/sources/utils/truncateForLogs.ts +37 -0
  1077. package/sources/utils/versionUtils.test.ts +58 -0
  1078. package/sources/utils/versionUtils.ts +69 -0
  1079. package/sources/utils/web/faviconGenerator.ts +39 -0
  1080. package/sources/utils/worktree.ts +192 -0
  1081. package/sources/wire/index.ts +97 -0
  1082. package/src-tauri/Cargo.lock +5978 -0
  1083. package/src-tauri/Cargo.toml +27 -0
  1084. package/src-tauri/build.rs +3 -0
  1085. package/src-tauri/capabilities/default.json +27 -0
  1086. package/src-tauri/deny.toml +53 -0
  1087. package/src-tauri/entitlements.plist +24 -0
  1088. package/src-tauri/icons/128x128.png +0 -0
  1089. package/src-tauri/icons/128x128@2x.png +0 -0
  1090. package/src-tauri/icons/32x32.png +0 -0
  1091. package/src-tauri/icons/64x64.png +0 -0
  1092. package/src-tauri/icons/Square107x107Logo.png +0 -0
  1093. package/src-tauri/icons/Square142x142Logo.png +0 -0
  1094. package/src-tauri/icons/Square150x150Logo.png +0 -0
  1095. package/src-tauri/icons/Square284x284Logo.png +0 -0
  1096. package/src-tauri/icons/Square30x30Logo.png +0 -0
  1097. package/src-tauri/icons/Square310x310Logo.png +0 -0
  1098. package/src-tauri/icons/Square44x44Logo.png +0 -0
  1099. package/src-tauri/icons/Square71x71Logo.png +0 -0
  1100. package/src-tauri/icons/Square89x89Logo.png +0 -0
  1101. package/src-tauri/icons/StoreLogo.png +0 -0
  1102. package/src-tauri/icons/icon.icns +0 -0
  1103. package/src-tauri/icons/icon.ico +0 -0
  1104. package/src-tauri/icons/icon.png +0 -0
  1105. package/src-tauri/src/lib.rs +18 -0
  1106. package/src-tauri/src/main.rs +6 -0
  1107. package/src-tauri/tauri.conf.json +51 -0
  1108. package/src-tauri/tauri.dev.conf.json +20 -0
  1109. package/src-tauri/tauri.preview.conf.json +20 -0
  1110. package/tsconfig.json +45 -0
  1111. package/vitest.config.ts +26 -0
@@ -0,0 +1,992 @@
1
+ import type { TranslationStructure } from '../_default';
2
+
3
+ /**
4
+ * Italian plural helper function
5
+ * Italian has 2 plural forms: singular, plural
6
+ * @param options - Object containing count, singular, and plural forms
7
+ * @returns The appropriate form based on Italian plural rules
8
+ */
9
+ function plural({ count, singular, plural }: { count: number; singular: string; plural: string }): string {
10
+ return count === 1 ? singular : plural;
11
+ }
12
+
13
+ /**
14
+ * Italian translations for the NasTech app
15
+ * Must match the exact structure of the English translations
16
+ */
17
+ export const it: TranslationStructure = {
18
+ tabs: {
19
+ // Tab navigation labels
20
+ inbox: 'Posta',
21
+ sessions: 'Terminali',
22
+ settings: 'Impostazioni',
23
+ },
24
+
25
+ inbox: {
26
+ // Inbox screen
27
+ emptyTitle: 'Posta vuota',
28
+ emptyDescription: 'Connettiti con amici per iniziare a condividere sessioni',
29
+ updates: 'Aggiornamenti',
30
+ },
31
+
32
+ common: {
33
+ // Simple string constants
34
+ cancel: 'Annulla',
35
+ authenticate: 'Autentica',
36
+ save: 'Salva',
37
+ error: 'Errore',
38
+ success: 'Successo',
39
+ ok: 'OK',
40
+ continue: 'Continua',
41
+ back: 'Indietro',
42
+ create: 'Crea',
43
+ rename: 'Rinomina',
44
+ reset: 'Ripristina',
45
+ logout: 'Esci',
46
+ yes: 'Sì',
47
+ no: 'No',
48
+ discard: 'Scarta',
49
+ version: 'Versione',
50
+ copied: 'Copiato',
51
+ copy: 'Copia',
52
+ scanning: 'Scansione...',
53
+ urlPlaceholder: 'https://esempio.com',
54
+ home: 'Home',
55
+ message: 'Messaggio',
56
+ files: 'File',
57
+ fileViewer: 'Visualizzatore file',
58
+ loading: 'Caricamento...',
59
+ retry: 'Riprova',
60
+ delete: 'Elimina',
61
+ optional: 'opzionale',
62
+ saveAs: 'Salva con nome',
63
+ },
64
+
65
+ profile: {
66
+ userProfile: 'Profilo utente',
67
+ details: 'Dettagli',
68
+ firstName: 'Nome',
69
+ lastName: 'Cognome',
70
+ username: 'Nome utente',
71
+ status: 'Stato',
72
+ },
73
+
74
+ status: {
75
+ connected: 'connesso',
76
+ connecting: 'connessione in corso',
77
+ disconnected: 'disconnesso',
78
+ error: 'errore',
79
+ online: 'online',
80
+ offline: 'offline',
81
+ lastSeen: ({ time }: { time: string }) => `visto l'ultima volta ${time}`,
82
+ permissionRequired: 'permesso richiesto',
83
+ activeNow: 'Attivo ora',
84
+ unknown: 'sconosciuto',
85
+ unread: 'nuovi risultati',
86
+ },
87
+
88
+ time: {
89
+ justNow: 'proprio ora',
90
+ minutesAgo: ({ count }: { count: number }) => `${count} ${count === 1 ? 'minuto' : 'minuti'} fa`,
91
+ hoursAgo: ({ count }: { count: number }) => `${count} ${count === 1 ? 'ora' : 'ore'} fa`,
92
+ daysAgo: ({ count }: { count: number }) => `${count} ${count === 1 ? 'giorno' : 'giorni'} fa`,
93
+ },
94
+
95
+ connect: {
96
+ restoreAccount: 'Ripristina account',
97
+ enterSecretKey: 'Inserisci la chiave segreta',
98
+ invalidSecretKey: 'Chiave segreta non valida. Controlla e riprova.',
99
+ enterUrlManually: 'Inserisci URL manualmente',
100
+ },
101
+
102
+ settings: {
103
+ title: 'Impostazioni',
104
+ connectedAccounts: 'Account collegati',
105
+ connectAccount: 'Collega account',
106
+ github: 'GitHub',
107
+ machines: 'Macchine',
108
+ showOfflineMachines: ({ count }: { count: number }) => count === 1 ? 'Mostra 1 macchina offline' : `Mostra ${count} macchine offline`,
109
+ hideOfflineMachines: 'Nascondi macchine offline',
110
+ features: 'Funzionalità',
111
+ social: 'Social',
112
+ account: 'Account',
113
+ accountSubtitle: 'Gestisci i dettagli del tuo account',
114
+ appearance: 'Aspetto',
115
+ appearanceSubtitle: 'Personalizza l\'aspetto dell\'app',
116
+ voiceAssistant: 'Assistente vocale',
117
+ voiceAssistantSubtitle: 'Configura le preferenze vocali',
118
+ featuresTitle: 'Funzionalità',
119
+ featuresSubtitle: 'Abilita o disabilita le funzionalità dell\'app',
120
+ developer: 'Sviluppatore',
121
+ developerTools: 'Strumenti sviluppatore',
122
+ about: 'Informazioni',
123
+ aboutFooter: 'NasTech è un client mobile per Codex e Claude Code. È completamente cifrato end-to-end e il tuo account è memorizzato solo sul tuo dispositivo. Non affiliato con Anthropic.',
124
+ whatsNew: 'Novità',
125
+ whatsNewSubtitle: 'Scopri gli ultimi aggiornamenti e miglioramenti',
126
+ reportIssue: 'Segnala un problema',
127
+ privacyPolicy: 'Informativa sulla privacy',
128
+ termsOfService: 'Termini di servizio',
129
+ eula: 'EULA',
130
+ supportUs: 'Sostienici',
131
+ supportUsSubtitlePro: 'Grazie per il tuo supporto!',
132
+ supportUsSubtitle: 'Sostieni lo sviluppo del progetto',
133
+ scanQrCodeToAuthenticate: 'Scansiona il codice QR per autenticarti',
134
+ githubConnected: ({ login }: { login: string }) => `Connesso come @${login}`,
135
+ connectGithubAccount: 'Collega il tuo account GitHub',
136
+ claudeAuthSuccess: 'Connesso a Claude con successo',
137
+ exchangingTokens: 'Scambio dei token...',
138
+ usage: 'Utilizzo',
139
+ usageSubtitle: 'Vedi il tuo utilizzo API e i costi',
140
+ // Dynamic settings messages
141
+ accountConnected: ({ service }: { service: string }) => `Account ${service} collegato`,
142
+ machineStatus: ({ name, status }: { name: string; status: 'online' | 'offline' }) =>
143
+ `${name} è ${status === 'online' ? 'online' : 'offline'}`,
144
+ featureToggled: ({ feature, enabled }: { feature: string; enabled: boolean }) =>
145
+ `${feature} ${enabled ? 'abilitata' : 'disabilitata'}`,
146
+ },
147
+
148
+ settingsAppearance: {
149
+ // Appearance settings screen
150
+ theme: 'Tema',
151
+ themeDescription: 'Scegli lo schema di colori preferito',
152
+ themeOptions: {
153
+ adaptive: 'Adattivo',
154
+ light: 'Chiaro',
155
+ dark: 'Scuro',
156
+ },
157
+ themeDescriptions: {
158
+ adaptive: 'Segui le impostazioni di sistema',
159
+ light: 'Usa sempre il tema chiaro',
160
+ dark: 'Usa sempre il tema scuro',
161
+ },
162
+ display: 'Schermo',
163
+ displayDescription: 'Controlla layout e spaziatura',
164
+ inlineToolCalls: 'Chiamate strumenti inline',
165
+ inlineToolCallsDescription: 'Mostra le chiamate agli strumenti direttamente nei messaggi di chat',
166
+ expandTodoLists: 'Espandi liste di attività',
167
+ expandTodoListsDescription: 'Mostra tutte le attività invece dei soli cambiamenti',
168
+ showLineNumbersInDiffs: 'Mostra numeri di riga nelle differenze',
169
+ showLineNumbersInDiffsDescription: 'Mostra i numeri di riga nei diff del codice',
170
+ showLineNumbersInToolViews: 'Mostra numeri di riga nelle viste strumenti',
171
+ showLineNumbersInToolViewsDescription: 'Mostra i numeri di riga nei diff delle viste strumenti',
172
+ wrapLinesInDiffs: 'A capo nelle differenze',
173
+ wrapLinesInDiffsDescription: 'A capo delle righe lunghe invece dello scorrimento orizzontale nelle viste diff',
174
+ diffStyle: 'Vista diff',
175
+ diffStyleDescription: 'Mostra le differenze in una sola colonna (unified) o affiancate (split). La vista split è disponibile solo sul web.',
176
+ diffStyleOptions: {
177
+ unified: 'Unified',
178
+ split: 'Split',
179
+ },
180
+ alwaysShowContextSize: 'Mostra sempre dimensione contesto',
181
+ alwaysShowContextSizeDescription: 'Mostra l\'uso del contesto anche quando non è vicino al limite',
182
+ avatarStyle: 'Stile avatar',
183
+ avatarStyleDescription: 'Scegli l\'aspetto dell\'avatar di sessione',
184
+ avatarOptions: {
185
+ pixelated: 'Pixelato',
186
+ gradient: 'Gradiente',
187
+ brutalist: 'Brutalista',
188
+ },
189
+ showFlavorIcons: 'Mostra icone provider IA',
190
+ showFlavorIconsDescription: 'Mostra le icone del provider IA sugli avatar di sessione',
191
+ },
192
+
193
+ settingsFeatures: {
194
+ // Features settings screen
195
+ experiments: 'Esperimenti',
196
+ experimentsDescription: 'Abilita funzionalità sperimentali ancora in sviluppo. Queste funzionalità possono essere instabili o cambiare senza preavviso.',
197
+ experimentalFeatures: 'Funzionalità sperimentali',
198
+ experimentalFeaturesEnabled: 'Funzionalità sperimentali abilitate',
199
+ experimentalFeaturesDisabled: 'Usando solo funzionalità stabili',
200
+ webFeatures: 'Funzionalità web',
201
+ webFeaturesDescription: 'Funzionalità disponibili solo nella versione web dell\'app.',
202
+ enterToSend: 'Invio con Enter',
203
+ enterToSendEnabled: 'Premi Invio per inviare (Maiusc+Invio per una nuova riga)',
204
+ enterToSendDisabled: 'Invio inserisce una nuova riga',
205
+ commandPalette: 'Palette comandi',
206
+ commandPaletteEnabled: 'Premi ⌘K per aprire',
207
+ commandPaletteDisabled: 'Accesso rapido ai comandi disabilitato',
208
+ markdownCopyV2: 'Markdown Copy v2',
209
+ markdownCopyV2Subtitle: 'Pressione lunga apre la finestra di copia',
210
+ hideInactiveSessions: 'Nascondi sessioni inattive',
211
+ hideInactiveSessionsSubtitle: 'Mostra solo le chat attive nella tua lista',
212
+ groupToolCalls: 'Raggruppa chiamate agli strumenti',
213
+ groupToolCallsSubtitle: 'Comprimi le chiamate consecutive agli strumenti in un unico contenitore',
214
+ privacy: 'Privacy',
215
+ privacyDescription: 'Disabilita completamente tutte le analisi e la telemetria. Nessun dato verrà inviato a PostHog o ad altri servizi di tracciamento.',
216
+ disableAnalytics: 'Disabilita analisi',
217
+ analyticsDisabled: 'Tutto il tracciamento e la telemetria disabilitati',
218
+ analyticsEnabled: 'Analisi anonime di utilizzo attive',
219
+ imageUpload: 'Caricamento immagini',
220
+ imageUploadSubtitle: 'Allega immagini ai messaggi per farle analizzare da Claude',
221
+ },
222
+
223
+ errors: {
224
+ networkError: 'Si è verificato un errore di rete',
225
+ serverError: 'Si è verificato un errore del server',
226
+ unknownError: 'Si è verificato un errore sconosciuto',
227
+ connectionTimeout: 'Connessione scaduta',
228
+ authenticationFailed: 'Autenticazione non riuscita',
229
+ permissionDenied: 'Permesso negato',
230
+ fileNotFound: 'File non trovato',
231
+ invalidFormat: 'Formato non valido',
232
+ operationFailed: 'Operazione non riuscita',
233
+ tryAgain: 'Per favore riprova',
234
+ contactSupport: 'Contatta l\'assistenza se il problema persiste',
235
+ sessionNotFound: 'Sessione non trovata',
236
+ voiceSessionFailed: 'Avvio della sessione vocale non riuscito',
237
+ voiceServiceUnavailable: 'Il servizio vocale non è temporaneamente disponibile',
238
+ voiceLimitReachedTitle: 'Limite vocale raggiunto',
239
+ voiceHardLimitReached: ({ hours }: { hours: number }) => `Hai utilizzato ${hours}+ ore di voce questo mese. Questo è il massimo consentito. Puoi configurare il tuo agente ElevenLabs nelle impostazioni vocali per utilizzare la tua quota.`,
240
+ voiceConversationLimitReached: 'Hai raggiunto il numero massimo di conversazioni vocali questo mese. Potremmo aggiungere l\'uso vocale su richiesta in futuro — per favore apri un issue su github.com/nastech-ai/nastech/issues se raggiungi questo limite.',
241
+ oauthInitializationFailed: 'Impossibile inizializzare il flusso OAuth',
242
+ tokenStorageFailed: 'Impossibile salvare i token di autenticazione',
243
+ oauthStateMismatch: 'Convalida di sicurezza non riuscita. Riprova',
244
+ tokenExchangeFailed: 'Impossibile scambiare il codice di autorizzazione',
245
+ oauthAuthorizationDenied: 'Autorizzazione negata',
246
+ webViewLoadFailed: 'Impossibile caricare la pagina di autenticazione',
247
+ failedToLoadProfile: 'Impossibile caricare il profilo utente',
248
+ userNotFound: 'Utente non trovato',
249
+ sessionDeleted: 'La sessione è stata eliminata',
250
+ sessionDeletedDescription: 'Questa sessione è stata rimossa definitivamente',
251
+
252
+ // Error functions with context
253
+ fieldError: ({ field, reason }: { field: string; reason: string }) =>
254
+ `${field}: ${reason}`,
255
+ validationError: ({ field, min, max }: { field: string; min: number; max: number }) =>
256
+ `${field} deve essere tra ${min} e ${max}`,
257
+ retryIn: ({ seconds }: { seconds: number }) =>
258
+ `Riprova tra ${seconds} ${seconds === 1 ? 'secondo' : 'secondi'}`,
259
+ errorWithCode: ({ message, code }: { message: string; code: number | string }) =>
260
+ `${message} (Errore ${code})`,
261
+ disconnectServiceFailed: ({ service }: { service: string }) =>
262
+ `Impossibile disconnettere ${service}`,
263
+ connectServiceFailed: ({ service }: { service: string }) =>
264
+ `Impossibile connettere ${service}. Riprova.`,
265
+ failedToLoadFriends: 'Impossibile caricare la lista amici',
266
+ failedToAcceptRequest: 'Impossibile accettare la richiesta di amicizia',
267
+ failedToRejectRequest: 'Impossibile rifiutare la richiesta di amicizia',
268
+ failedToRemoveFriend: 'Impossibile rimuovere l\'amico',
269
+ searchFailed: 'Ricerca non riuscita. Riprova.',
270
+ failedToSendRequest: 'Impossibile inviare la richiesta di amicizia',
271
+ },
272
+
273
+ newSession: {
274
+ title: 'Avvia nuova sessione',
275
+ machineOffline: 'La macchina è offline',
276
+ switchMachinesHint: '• Cambia macchina cliccando sulla macchina sopra',
277
+ },
278
+
279
+ sessionHistory: {
280
+ // Used by session history screen
281
+ title: 'Cronologia sessioni',
282
+ empty: 'Nessuna sessione trovata',
283
+ today: 'Oggi',
284
+ yesterday: 'Ieri',
285
+ daysAgo: ({ count }: { count: number }) => `${count} ${count === 1 ? 'giorno' : 'giorni'} fa`,
286
+ viewAll: 'Visualizza tutte le sessioni',
287
+ },
288
+
289
+ session: {
290
+ inputPlaceholder: 'Scrivi un messaggio ...',
291
+ inactiveArchived: 'Questa sessione è inattiva.',
292
+ resumeFromTerminal: 'Per riprenderla dal terminale:',
293
+ newChat: 'Nuova chat',
294
+ forkAction: 'Biforca sessione',
295
+ forkSubtitle: 'Continua in una nuova sessione con lo stesso contesto',
296
+ duplicateAction: 'Duplica da un messaggio…',
297
+ duplicateSubtitle: 'Torna a un punto scelto e riprova',
298
+ forkFromHere: 'Biforca da qui',
299
+ duplicateSheetTitle: 'Scegli un punto di ritorno',
300
+ duplicateSheetSubtitle: 'La nuova sessione manterrà il turno scelto completo (il tuo messaggio e la risposta dell\'agente) e scarterà i messaggi successivi.',
301
+ duplicateSheetConfirm: 'Duplica',
302
+ duplicateSheetEmpty: 'Nessun messaggio idoneo per il ritorno in questa sessione.',
303
+ duplicateRowDisabled: 'Questo messaggio non può essere usato come punto di ritorno.',
304
+ forkedFromLabel: 'Biforcato da',
305
+ forkedFromSubtitle: 'Apri la sessione da cui è stata creata la biforcazione',
306
+ forkErrorOffline: 'La macchina è offline. La biforcazione è disponibile solo mentre la macchina della sessione è online.',
307
+ forkErrorMissingUuid: 'Il punto di ritorno scelto non esiste più nella sessione di origine — prova a biforcare senza troncare.',
308
+ forkErrorMissingMetadata: 'Mancano i metadati della sessione necessari per biforcare.',
309
+ forkErrorGeneric: 'Impossibile biforcare la sessione.',
310
+ forkClaudeOnly: 'La biforcazione è attualmente supportata solo per le sessioni Claude.',
311
+ },
312
+
313
+ commandPalette: {
314
+ placeholder: 'Digita un comando o cerca...',
315
+ },
316
+
317
+ server: {
318
+ // Used by Server Configuration screen (app/(app)/server.tsx)
319
+ serverConfiguration: 'Configurazione server',
320
+ enterServerUrl: 'Inserisci un URL del server',
321
+ notValidNasTechServer: 'Non è un NasTech Server valido',
322
+ changeServer: 'Cambia server',
323
+ continueWithServer: 'Continuare con questo server?',
324
+ resetToDefault: 'Ripristina predefinito',
325
+ resetServerDefault: 'Ripristinare il server predefinito?',
326
+ validating: 'Verifica...',
327
+ validatingServer: 'Verifica del server...',
328
+ serverReturnedError: 'Il server ha restituito un errore',
329
+ failedToConnectToServer: 'Impossibile connettersi al server',
330
+ currentlyUsingCustomServer: 'Attualmente si usa un server personalizzato',
331
+ customServerUrlLabel: 'URL server personalizzato',
332
+ advancedFeatureFooter: 'Questa è una funzionalità avanzata. Cambia il server solo se sai cosa stai facendo. Dovrai disconnetterti e accedere di nuovo dopo aver cambiato server.'
333
+ },
334
+
335
+ sessionInfo: {
336
+ // Used by Session Info screen (app/(app)/session/[id]/info.tsx)
337
+ killSession: 'Termina sessione',
338
+ killSessionConfirm: 'Sei sicuro di voler terminare questa sessione?',
339
+ archiveSession: 'Archivia sessione',
340
+ archiveSessionConfirm: 'Sei sicuro di voler archiviare questa sessione?',
341
+ nastechSessionIdCopied: 'ID sessione NasTech copiato negli appunti',
342
+ failedToCopySessionId: 'Impossibile copiare l\'ID sessione NasTech',
343
+ nastechSessionId: 'ID sessione NasTech',
344
+ claudeCodeSessionId: 'ID sessione Claude Code',
345
+ claudeCodeSessionIdCopied: 'ID sessione Claude Code copiato negli appunti',
346
+ codexThreadId: 'ID thread Codex',
347
+ codexThreadIdCopied: 'ID thread Codex copiato negli appunti',
348
+ aiProvider: 'Provider IA',
349
+ failedToCopyClaudeCodeSessionId: 'Impossibile copiare l\'ID sessione Claude Code',
350
+ failedToCopyCodexThreadId: 'Impossibile copiare l\'ID thread Codex',
351
+ metadataCopied: 'Metadati copiati negli appunti',
352
+ failedToCopyMetadata: 'Impossibile copiare i metadati',
353
+ failedToKillSession: 'Impossibile terminare la sessione',
354
+ failedToArchiveSession: 'Impossibile archiviare la sessione',
355
+ connectionStatus: 'Stato connessione',
356
+ created: 'Creato',
357
+ lastUpdated: 'Ultimo aggiornamento',
358
+ sequence: 'Sequenza',
359
+ quickActions: 'Azioni rapide',
360
+ viewMachine: 'Visualizza macchina',
361
+ viewMachineSubtitle: 'Visualizza dettagli e sessioni della macchina',
362
+ resumeSession: 'Resume Session',
363
+ resumeSessionSubtitle: 'Resume this session on the same machine',
364
+ resumeSessionSameMachineOnly: 'This session can only be resumed on the same machine it started on.',
365
+ resumeSessionMachineOffline: 'This machine is offline. Resume is only available while it is online.',
366
+ resumeSessionNeedsNasTechAgent: 'Resume is unavailable on this machine. Run `nastech-agent auth login` to enable it.',
367
+ resumeSessionMissingMachine: 'This session is missing its machine metadata, so it cannot be resumed.',
368
+ resumeSessionMissingBackendId: 'This session does not have a resumable Claude or Codex identifier.',
369
+ resumeSessionUnexpectedDirectoryPrompt: 'Resume cannot create directories. Start the session manually from its original path.',
370
+ killSessionSubtitle: 'Termina immediatamente la sessione',
371
+ archiveSessionSubtitle: 'Archivia questa sessione e fermala',
372
+ metadata: 'Metadati',
373
+ host: 'Host',
374
+ path: 'Percorso',
375
+ operatingSystem: 'Sistema operativo',
376
+ processId: 'ID processo',
377
+ nastechHome: 'NasTech Home',
378
+ copyMetadata: 'Copia metadati',
379
+ agentState: 'Stato agente',
380
+ controlledByUser: 'Controllato dall\'utente',
381
+ pendingRequests: 'Richieste in sospeso',
382
+ activity: 'Attività',
383
+ thinking: 'Pensando',
384
+ thinkingSince: 'Pensando da',
385
+ cliVersion: 'Versione CLI',
386
+ cliVersionOutdated: 'Aggiornamento CLI richiesto',
387
+ cliVersionOutdatedMessage: ({ currentVersion, requiredVersion }: { currentVersion: string; requiredVersion: string }) =>
388
+ `Versione ${currentVersion} installata. Aggiorna a ${requiredVersion} o successiva`,
389
+ updateCliInstructions: 'Esegui pip install -U nastech-agent',
390
+ deleteSession: 'Elimina sessione',
391
+ deleteSessionSubtitle: 'Rimuovi definitivamente questa sessione',
392
+ deleteSessionConfirm: 'Eliminare definitivamente la sessione?',
393
+ deleteSessionWarning: 'Questa azione non può essere annullata. Tutti i messaggi e i dati associati a questa sessione verranno eliminati definitivamente.',
394
+ failedToDeleteSession: 'Impossibile eliminare la sessione',
395
+ sessionDeleted: 'Sessione eliminata con successo',
396
+ worktreeCleanupTitle: 'Eliminare Worktree?',
397
+ worktreeCleanupMessage: 'Il Worktree non ha modifiche non confermate. Vuoi eliminare i file del Worktree?',
398
+ worktreeCleanupDelete: 'Elimina Worktree',
399
+ worktreeCleanupKeep: 'Conserva file',
400
+
401
+ },
402
+
403
+ components: {
404
+ emptyMainScreen: {
405
+ // Used by EmptyMainScreen component
406
+ readyToCode: 'Pronto a programmare?',
407
+ installCli: 'Install NasTech CLI',
408
+ runIt: 'Avviala',
409
+ scanQrCode: 'Scansiona il codice QR',
410
+ openCamera: 'Apri fotocamera',
411
+ },
412
+ },
413
+
414
+ agentInput: {
415
+ permissionMode: {
416
+ title: 'MODALITÀ PERMESSI',
417
+ default: 'Predefinito',
418
+ acceptEdits: 'Accetta modifiche',
419
+ plan: 'Modalità piano',
420
+ dontAsk: 'Non chiedere',
421
+ bypassPermissions: 'Modalità YOLO',
422
+ badgeAcceptAllEdits: 'Accetta tutte le modifiche',
423
+ badgeBypassAllPermissions: 'Bypassa tutti i permessi',
424
+ badgePlanMode: 'Modalità piano',
425
+ },
426
+ agent: {
427
+ claude: 'Claude',
428
+ codex: 'Codex',
429
+ gemini: 'Gemini',
430
+ openclaw: 'OpenClaw',
431
+ },
432
+ model: {
433
+ title: 'MODELLO',
434
+ configureInCli: 'Configura i modelli nelle impostazioni CLI',
435
+ },
436
+ effort: {
437
+ title: 'IMPEGNO',
438
+ },
439
+ codexPermissionMode: {
440
+ title: 'MODALITÀ PERMESSI CODEX',
441
+ default: 'Impostazioni CLI',
442
+ readOnly: 'Modalità sola lettura',
443
+ safeYolo: 'YOLO sicuro',
444
+ yolo: 'YOLO',
445
+ badgeReadOnly: 'Modalità sola lettura',
446
+ badgeSafeYolo: 'YOLO sicuro',
447
+ badgeYolo: 'YOLO',
448
+ },
449
+ codexModel: {
450
+ title: 'MODELLO CODEX',
451
+ gpt5CodexLow: 'gpt-5-codex basso',
452
+ gpt5CodexMedium: 'gpt-5-codex medio',
453
+ gpt5CodexHigh: 'gpt-5-codex alto',
454
+ gpt5Minimal: 'GPT-5 Minimo',
455
+ gpt5Low: 'GPT-5 Basso',
456
+ gpt5Medium: 'GPT-5 Medio',
457
+ gpt5High: 'GPT-5 Alto',
458
+ },
459
+ geminiPermissionMode: {
460
+ title: 'MODALITÀ PERMESSI GEMINI',
461
+ default: 'Predefinito',
462
+ autoEdit: 'Modifica automatica',
463
+ yolo: 'YOLO',
464
+ plan: 'Pianificazione',
465
+ badgeAutoEdit: 'Modifica automatica',
466
+ badgeYolo: 'YOLO',
467
+ badgePlan: 'Pianificazione',
468
+ },
469
+ context: {
470
+ remaining: ({ percent }: { percent: number }) => `${percent}% restante`,
471
+ },
472
+ suggestion: {
473
+ fileLabel: 'FILE',
474
+ folderLabel: 'CARTELLA',
475
+ },
476
+ noMachinesAvailable: 'Nessuna macchina',
477
+ },
478
+
479
+ machineLauncher: {
480
+ showLess: 'Mostra meno',
481
+ showAll: ({ count }: { count: number }) => `Mostra tutto (${count} percorsi)`,
482
+ enterCustomPath: 'Inserisci percorso personalizzato',
483
+ offlineUnableToSpawn: 'Impossibile avviare una nuova sessione, offline',
484
+ },
485
+
486
+ sidebar: {
487
+ sessionsTitle: 'NasTech',
488
+ showArchived: 'Mostra archiviate',
489
+ hideArchived: 'Nascondi archiviate',
490
+ newSession: 'Nuova sessione',
491
+ },
492
+
493
+ zen: {
494
+ toggle: 'Modalità zen',
495
+ },
496
+
497
+ toolView: {
498
+ input: 'Input',
499
+ output: 'Output',
500
+ },
501
+
502
+ toolGroup: {
503
+ editedFiles: ({ count }: { count: number }) => count === 1 ? 'Modificato 1 file' : `Modificati ${count} file`,
504
+ readFiles: ({ count }: { count: number }) => count === 1 ? 'Letto 1 file' : `Letti ${count} file`,
505
+ ranCommands: ({ count }: { count: number }) => count === 1 ? 'Eseguito 1 comando' : `Eseguiti ${count} comandi`,
506
+ searched: ({ count }: { count: number }) => count === 1 ? 'Cercato 1 volta' : `Cercato ${count} volte`,
507
+ fetchedUrls: ({ count }: { count: number }) => count === 1 ? 'Recuperato 1 URL' : `Recuperati ${count} URL`,
508
+ ranTasks: ({ count }: { count: number }) => count === 1 ? 'Eseguito 1 task' : `Eseguiti ${count} task`,
509
+ usedTools: ({ count }: { count: number }) => count === 1 ? 'Usato 1 strumento' : `Usati ${count} strumenti`,
510
+ },
511
+
512
+ tools: {
513
+ fullView: {
514
+ description: 'Descrizione',
515
+ inputParams: 'Parametri di input',
516
+ output: 'Output',
517
+ error: 'Errore',
518
+ completed: 'Strumento completato con successo',
519
+ noOutput: 'Nessun output prodotto',
520
+ running: 'Strumento in esecuzione...',
521
+ rawJsonDevMode: 'JSON grezzo (Modalità sviluppatore)',
522
+ },
523
+ taskView: {
524
+ initializing: 'Inizializzazione agente...',
525
+ moreTools: ({ count }: { count: number }) => `+${count} altri ${plural({ count, singular: 'strumento', plural: 'strumenti' })}`,
526
+ },
527
+ askUserQuestion: {
528
+ submit: 'Invia risposta',
529
+ multipleQuestions: ({ count }: { count: number }) => `${count} ${plural({ count, singular: 'domanda', plural: 'domande' })}`,
530
+ other: 'Altro',
531
+ otherDescription: 'Scrivi la tua risposta',
532
+ otherPlaceholder: 'Scrivi la tua risposta...',
533
+ },
534
+ multiEdit: {
535
+ editNumber: ({ index, total }: { index: number; total: number }) => `Modifica ${index} di ${total}`,
536
+ replaceAll: 'Sostituisci tutto',
537
+ },
538
+ names: {
539
+ task: 'Attività',
540
+ terminal: 'Terminale',
541
+ searchFiles: 'Cerca file',
542
+ search: 'Cerca',
543
+ searchContent: 'Cerca contenuto',
544
+ listFiles: 'Elenca file',
545
+ planProposal: 'Proposta di piano',
546
+ readFile: 'Leggi file',
547
+ editFile: 'Modifica file',
548
+ writeFile: 'Scrivi file',
549
+ fetchUrl: 'Recupera URL',
550
+ readNotebook: 'Leggi notebook',
551
+ editNotebook: 'Modifica notebook',
552
+ todoList: 'Elenco attività',
553
+ webSearch: 'Ricerca web',
554
+ reasoning: 'Ragionamento',
555
+ applyChanges: 'Aggiorna file',
556
+ viewDiff: 'Modifiche file attuali',
557
+ question: 'Domanda',
558
+ },
559
+ desc: {
560
+ terminalCmd: ({ cmd }: { cmd: string }) => `Terminale(cmd: ${cmd})`,
561
+ searchPattern: ({ pattern }: { pattern: string }) => `Cerca(pattern: ${pattern})`,
562
+ searchPath: ({ basename }: { basename: string }) => `Cerca(path: ${basename})`,
563
+ fetchUrlHost: ({ host }: { host: string }) => `Recupera URL(url: ${host})`,
564
+ editNotebookMode: ({ path, mode }: { path: string; mode: string }) => `Modifica notebook(file: ${path}, mode: ${mode})`,
565
+ todoListCount: ({ count }: { count: number }) => `Elenco attività(count: ${count})`,
566
+ webSearchQuery: ({ query }: { query: string }) => `Ricerca web(query: ${query})`,
567
+ grepPattern: ({ pattern }: { pattern: string }) => `grep(pattern: ${pattern})`,
568
+ multiEditEdits: ({ path, count }: { path: string; count: number }) => `${path} (${count} modifiche)`,
569
+ readingFile: ({ file }: { file: string }) => `Leggendo ${file}`,
570
+ writingFile: ({ file }: { file: string }) => `Scrivendo ${file}`,
571
+ modifyingFile: ({ file }: { file: string }) => `Modificando ${file}`,
572
+ modifyingFiles: ({ count }: { count: number }) => `Modificando ${count} file`,
573
+ modifyingMultipleFiles: ({ file, count }: { file: string; count: number }) => `${file} e altri ${count}`,
574
+ showingDiff: 'Mostrando modifiche',
575
+ }
576
+ },
577
+
578
+ files: {
579
+ changes: 'Modifiche',
580
+ searchPlaceholder: 'Cerca file...',
581
+ detachedHead: 'HEAD scollegato',
582
+ summary: ({ staged, unstaged }: { staged: number; unstaged: number }) => `${staged} in stage • ${unstaged} non in stage`,
583
+ notRepo: 'Non è un repository git',
584
+ notUnderGit: 'Questa directory non è sotto controllo versione git',
585
+ searching: 'Ricerca file...',
586
+ noFilesFound: 'Nessun file trovato',
587
+ noFilesInProject: 'Nessun file nel progetto',
588
+ tryDifferentTerm: 'Prova un termine di ricerca diverso',
589
+ searchResults: ({ count }: { count: number }) => `Risultati ricerca (${count})`,
590
+ projectRoot: 'Radice progetto',
591
+ stagedChanges: ({ count }: { count: number }) => `Modifiche in stage (${count})`,
592
+ unstagedChanges: ({ count }: { count: number }) => `Modifiche non in stage (${count})`,
593
+ // File viewer strings
594
+ loadingFile: ({ fileName }: { fileName: string }) => `Caricamento ${fileName}...`,
595
+ binaryFile: 'File binario',
596
+ cannotDisplayBinary: 'Impossibile mostrare il contenuto del file binario',
597
+ diff: 'Diff',
598
+ file: 'File',
599
+ fileEmpty: 'File vuoto',
600
+ noChanges: 'Nessuna modifica da mostrare',
601
+ noChangesTitle: 'Nessuna modifica',
602
+ noChangesSubtitle: 'L\'albero di lavoro è pulito',
603
+ deleted: 'Eliminato',
604
+ changedFiles: ({ count }: { count: number }) => `${count} ${count === 1 ? 'file modificato' : 'file modificati'}`,
605
+ allFiles: 'Tutti i file',
606
+ editFile: 'Modifica',
607
+ saveFile: 'Salva',
608
+ failedToRead: 'Impossibile leggere il file',
609
+ failedToSave: 'Impossibile salvare il file',
610
+ fileConflict: 'Conflitto file',
611
+ fileConflictDescription: 'Questo file è stato modificato sul dispositivo mentre lo stavi modificando. Ricarica per vedere l\'ultima versione.',
612
+ reload: 'Ricarica',
613
+ overwrite: 'Sovrascrivi',
614
+ },
615
+
616
+ settingsVoice: {
617
+ // Voice settings screen
618
+ languageTitle: 'Lingua',
619
+ languageDescription: 'Scegli la tua lingua preferita per le interazioni dell\'assistente vocale. Questa impostazione si sincronizza su tutti i tuoi dispositivi.',
620
+ preferredLanguage: 'Lingua preferita',
621
+ preferredLanguageSubtitle: 'Lingua usata per le risposte dell\'assistente vocale',
622
+ language: {
623
+ searchPlaceholder: 'Cerca lingue...',
624
+ title: 'Lingue',
625
+ footer: ({ count }: { count: number }) => `${count} ${plural({ count, singular: 'lingua', plural: 'lingue' })} disponibili`,
626
+ autoDetect: 'Rilevamento automatico',
627
+ },
628
+ // Bring your own agent
629
+ byoTitle: 'Porta il tuo agente',
630
+ byoDescription: 'Usa il tuo agente ElevenLabs al posto di quello predefinito di NasTech. Nessun abbonamento richiesto — connettiti direttamente con il tuo account ElevenLabs. Il tuo agente deve definire due strumenti client: messageClaudeCode (invia testo all\'agente di codice) e processPermissionRequest (consente o nega l\'uso degli strumenti). Riceve il contesto della sessione tramite la variabile dinamica {{initialConversationContext}}.',
631
+ customAgentId: 'ElevenLabs Agent ID',
632
+ customAgentIdNotSet: 'Non configurato',
633
+ customAgentIdDescription: 'Inserisci il tuo ElevenLabs Agent ID. Lascia vuoto per usare quello predefinito di NasTech.',
634
+ customAgentIdPlaceholder: 'e.g. abc123def456',
635
+ bypassToken: 'Connessione diretta',
636
+ bypassTokenSubtitle: 'Salta il server di NasTech, connettiti direttamente a ElevenLabs',
637
+ promptGuideTitle: 'Guida al prompt dell\'agente',
638
+ promptGuideDescription: 'Il tuo agente ElevenLabs necessita:\n\n• Strumento: messageClaudeCode — parametro: message (string). Invia un messaggio alla sessione di codice attiva.\n• Strumento: processPermissionRequest — parametro: decision ("allow" o "deny"). Approva o nega un permesso di strumento in sospeso.\n• Variabile dinamica: {{initialConversationContext}} — riceve la cronologia e il contesto della sessione all\'avvio.\n\nL\'agente funge da ponte vocale tra l\'utente e gli agenti di codice. Deve essere conciso, rispondere solo quando interpellato e segnalare quando un agente di codice termina il lavoro.',
639
+ usageTitle: 'Utilizzo (ultimi 30 giorni)',
640
+ usageFooter: 'Tempo vocale utilizzato negli ultimi 30 giorni. Piano gratuito: 20 min. Abbonato: 5 ore. Max 100 conversazioni al mese.',
641
+ usageLabel: 'Tempo vocale',
642
+ conversationsLabel: 'Conversazioni',
643
+ usageUsed: ({ used, limit }: { used: string; limit: string }) => `${used} utilizzato su ${limit}`,
644
+ supportTitle: 'Migliora voce',
645
+ supportSubtitle: 'Più tempo vocale e supporta lo sviluppo',
646
+ },
647
+
648
+ settingsAccount: {
649
+ // Account settings screen
650
+ accountInformation: 'Informazioni account',
651
+ status: 'Stato',
652
+ statusActive: 'Attivo',
653
+ statusNotAuthenticated: 'Non autenticato',
654
+ anonymousId: 'ID anonimo',
655
+ publicId: 'ID pubblico',
656
+ notAvailable: 'Non disponibile',
657
+ linkNewDevice: 'Collega nuovo dispositivo',
658
+ linkNewDeviceSubtitle: 'Scansiona il codice QR per collegare il dispositivo',
659
+ profile: 'Profilo',
660
+ name: 'Nome',
661
+ github: 'GitHub',
662
+ tapToDisconnect: 'Tocca per disconnettere',
663
+ server: 'Server',
664
+ backup: 'Backup',
665
+ backupDescription: 'La tua chiave segreta è l\'unico modo per recuperare l\'account. Salvala in un posto sicuro come un gestore di password.',
666
+ secretKey: 'Chiave segreta',
667
+ tapToReveal: 'Tocca per mostrare',
668
+ tapToHide: 'Tocca per nascondere',
669
+ secretKeyLabel: 'CHIAVE SEGRETA (TOCCA PER COPIARE)',
670
+ secretKeyCopied: 'Chiave segreta copiata negli appunti. Conservala in un luogo sicuro!',
671
+ secretKeyCopyFailed: 'Impossibile copiare la chiave segreta',
672
+ privacy: 'Privacy',
673
+ privacyDescription: 'Aiuta a migliorare l\'app condividendo dati di utilizzo anonimi. Nessuna informazione personale viene raccolta.',
674
+ analytics: 'Analytics',
675
+ analyticsDisabled: 'Nessun dato condiviso',
676
+ analyticsEnabled: 'I dati di utilizzo anonimi sono condivisi',
677
+ dangerZone: 'Zona pericolosa',
678
+ logout: 'Esci',
679
+ logoutSubtitle: 'Disconnetti e cancella i dati locali',
680
+ logoutConfirm: 'Sei sicuro di voler uscire? Assicurati di aver fatto il backup della tua chiave segreta!',
681
+ },
682
+
683
+ settingsLanguage: {
684
+ // Language settings screen
685
+ title: 'Lingua',
686
+ description: 'Scegli la tua lingua preferita per l\'interfaccia dell\'app. Questo si sincronizza su tutti i tuoi dispositivi.',
687
+ currentLanguage: 'Lingua attuale',
688
+ automatic: 'Automatico',
689
+ automaticSubtitle: 'Rileva dalle impostazioni del dispositivo',
690
+ needsRestart: 'Lingua cambiata',
691
+ needsRestartMessage: 'L\'app deve riavviarsi per applicare la nuova impostazione della lingua.',
692
+ restartNow: 'Riavvia ora',
693
+ },
694
+
695
+ connectButton: {
696
+ authenticate: 'Autentica terminale',
697
+ authenticateWithUrlPaste: 'Autentica terminale incollando URL',
698
+ pasteAuthUrl: 'Incolla l\'URL di autenticazione dal terminale',
699
+ },
700
+
701
+ updateBanner: {
702
+ updateAvailable: 'Aggiornamento disponibile',
703
+ pressToApply: 'Premi per applicare l\'aggiornamento',
704
+ whatsNew: 'Novità',
705
+ seeLatest: 'Vedi gli ultimi aggiornamenti e miglioramenti',
706
+ nativeUpdateAvailable: 'Aggiornamento app disponibile',
707
+ tapToUpdateAppStore: 'Tocca per aggiornare nell\'App Store',
708
+ tapToUpdatePlayStore: 'Tocca per aggiornare nel Play Store',
709
+ },
710
+
711
+ changelog: {
712
+ // Used by the changelog screen
713
+ version: ({ version }: { version: number }) => `Versione ${version}`,
714
+ noEntriesAvailable: 'Nessuna voce di changelog disponibile.',
715
+ },
716
+
717
+ terminal: {
718
+ // Used by terminal connection screens
719
+ webBrowserRequired: 'Browser web richiesto',
720
+ webBrowserRequiredDescription: 'I link di connessione del terminale possono essere aperti solo in un browser web per motivi di sicurezza. Usa lo scanner QR o apri questo link su un computer.',
721
+ processingConnection: 'Elaborazione connessione...',
722
+ invalidConnectionLink: 'Link di connessione non valido',
723
+ invalidConnectionLinkDescription: 'Il link di connessione è mancante o non valido. Controlla l\'URL e riprova.',
724
+ connectTerminal: 'Connetti terminale',
725
+ terminalRequestDescription: 'Un terminale richiede di connettersi al tuo account NasTech. Questo consentirà al terminale di inviare e ricevere messaggi in modo sicuro.',
726
+ connectionDetails: 'Dettagli connessione',
727
+ publicKey: 'Chiave pubblica',
728
+ encryption: 'Cifratura',
729
+ endToEndEncrypted: 'Crittografia end-to-end',
730
+ acceptConnection: 'Accetta connessione',
731
+ connecting: 'Connessione...',
732
+ reject: 'Rifiuta',
733
+ security: 'Sicurezza',
734
+ securityFooter: 'Questo link di connessione è stato elaborato in modo sicuro nel tuo browser e non è mai stato inviato a nessun server. I tuoi dati privati rimarranno sicuri e solo tu potrai decifrare i messaggi.',
735
+ securityFooterDevice: 'Questa connessione è stata elaborata in modo sicuro sul tuo dispositivo e non è mai stata inviata a nessun server. I tuoi dati privati rimarranno sicuri e solo tu potrai decifrare i messaggi.',
736
+ clientSideProcessing: 'Elaborazione lato client',
737
+ linkProcessedLocally: 'Link elaborato localmente nel browser',
738
+ linkProcessedOnDevice: 'Link elaborato localmente sul dispositivo',
739
+ },
740
+
741
+ modals: {
742
+ // Used across connect flows and settings
743
+ authenticateTerminal: 'Autentica terminale',
744
+ pasteUrlFromTerminal: 'Incolla l\'URL di autenticazione dal terminale',
745
+ deviceLinkedSuccessfully: 'Dispositivo collegato con successo',
746
+ terminalConnectedSuccessfully: 'Terminale collegato con successo',
747
+ invalidAuthUrl: 'URL di autenticazione non valido',
748
+ developerMode: 'Modalità sviluppatore',
749
+ developerModeEnabled: 'Modalità sviluppatore attivata',
750
+ developerModeDisabled: 'Modalità sviluppatore disattivata',
751
+ disconnectGithub: 'Disconnetti GitHub',
752
+ disconnectGithubConfirm: 'Sei sicuro di voler disconnettere il tuo account GitHub?',
753
+ disconnectService: ({ service }: { service: string }) =>
754
+ `Disconnetti ${service}`,
755
+ disconnectServiceConfirm: ({ service }: { service: string }) =>
756
+ `Sei sicuro di voler disconnettere ${service} dal tuo account?`,
757
+ disconnect: 'Disconnetti',
758
+ failedToConnectTerminal: 'Impossibile connettere il terminale',
759
+ cameraPermissionsRequiredToConnectTerminal: 'Sono necessarie le autorizzazioni della fotocamera per connettere il terminale',
760
+ failedToLinkDevice: 'Impossibile collegare il dispositivo',
761
+ cameraPermissionsRequiredToScanQr: 'Sono necessarie le autorizzazioni della fotocamera per scansionare i codici QR'
762
+ },
763
+
764
+ navigation: {
765
+ // Navigation titles and screen headers
766
+ connectTerminal: 'Connetti terminale',
767
+ linkNewDevice: 'Collega nuovo dispositivo',
768
+ restoreWithSecretKey: 'Ripristina con chiave segreta',
769
+ whatsNew: 'Novità',
770
+ friends: 'Amici',
771
+ },
772
+
773
+ welcome: {
774
+ // Main welcome screen for unauthenticated users
775
+ title: 'Client mobile di Codex e Claude Code',
776
+ subtitle: 'Crittografia end-to-end e account memorizzato solo sul tuo dispositivo.',
777
+ createAccount: 'Crea account',
778
+ linkOrRestoreAccount: 'Collega o ripristina account',
779
+ loginWithMobileApp: 'Accedi con l\'app mobile',
780
+ },
781
+
782
+ review: {
783
+ // Used by utils/requestReview.ts
784
+ enjoyingApp: 'Ti piace l\'app?',
785
+ feedbackPrompt: 'Ci piacerebbe ricevere il tuo feedback!',
786
+ yesILoveIt: 'Sì, mi piace!',
787
+ notReally: 'Non proprio'
788
+ },
789
+
790
+ items: {
791
+ // Used by Item component for copy toast
792
+ copiedToClipboard: ({ label }: { label: string }) => `${label} copiato negli appunti`
793
+ },
794
+
795
+ machine: {
796
+ launchNewSessionInDirectory: 'Avvia nuova sessione nella directory',
797
+ offlineUnableToSpawn: 'Avvio disabilitato quando la macchina è offline',
798
+ offlineHelp: '• Assicurati che il tuo computer sia online\n• Esegui `nastech daemon status` per diagnosticare\n• Stai usando l\'ultima versione della CLI? Aggiorna con `pip install -U nastech-agent`',
799
+ daemon: 'Daemon',
800
+ status: 'Stato',
801
+ stopDaemon: 'Arresta daemon',
802
+ lastKnownPid: 'Ultimo PID noto',
803
+ lastKnownHttpPort: 'Ultima porta HTTP nota',
804
+ startedAt: 'Avviato alle',
805
+ cliVersion: 'Versione CLI',
806
+ daemonStateVersion: 'Versione stato daemon',
807
+ activeSessions: ({ count }: { count: number }) => `Sessioni attive (${count})`,
808
+ machineGroup: 'Macchina',
809
+ host: 'Host',
810
+ machineId: 'ID macchina',
811
+ username: 'Nome utente',
812
+ homeDirectory: 'Directory home',
813
+ platform: 'Piattaforma',
814
+ architecture: 'Architettura',
815
+ lastSeen: 'Ultimo accesso',
816
+ never: 'Mai',
817
+ metadataVersion: 'Versione metadati',
818
+ cliAvailability: 'Disponibilità CLI',
819
+ cliInstalled: 'Installato',
820
+ cliNotFound: 'Non trovato',
821
+ lastDetected: 'Ultimo rilevamento',
822
+ untitledSession: 'Sessione senza titolo',
823
+ back: 'Indietro',
824
+ dangerZone: 'Zona di pericolo',
825
+ delete: 'Elimina macchina',
826
+ deleteFooter: 'Rimuove questa macchina dal tuo account. La cronologia delle sessioni viene mantenuta, ma non potrai più avviare nuove sessioni su di essa.',
827
+ deleteConfirmTitle: 'Eliminare questa macchina?',
828
+ deleteConfirmMessage: 'La macchina verrà rimossa dal tuo account. La cronologia delle sessioni viene mantenuta, ma non potrai avviare nuove sessioni finché non riconnetti il daemon.',
829
+ deleteFailed: 'Impossibile eliminare la macchina.',
830
+ },
831
+
832
+ message: {
833
+ switchedToMode: ({ mode }: { mode: string }) => `Passato alla modalità ${mode}`,
834
+ unknownEvent: 'Evento sconosciuto',
835
+ usageLimitUntil: ({ time }: { time: string }) => `Limite di utilizzo raggiunto fino a ${time}`,
836
+ unknownTime: 'ora sconosciuta',
837
+ },
838
+
839
+ codex: {
840
+ // Codex permission dialog buttons
841
+ permissions: {
842
+ yesForSession: 'Sì, e non chiedere per una sessione',
843
+ stopAndExplain: 'Fermati e spiega cosa devo fare',
844
+ }
845
+ },
846
+
847
+ claude: {
848
+ // Claude permission dialog buttons
849
+ permissions: {
850
+ yesAllowAllEdits: 'Sì, consenti tutte le modifiche durante questa sessione',
851
+ yesAllowEverything: 'Sì, consenti tutto durante questa sessione',
852
+ yesForTool: 'Sì, non chiedere più per questo strumento',
853
+ noTellClaude: 'No, fornisci feedback',
854
+ }
855
+ },
856
+
857
+ textSelection: {
858
+ // Text selection screen
859
+ selectText: 'Seleziona intervallo di testo',
860
+ title: 'Seleziona testo',
861
+ noTextProvided: 'Nessun testo fornito',
862
+ textNotFound: 'Testo non trovato o scaduto',
863
+ textCopied: 'Testo copiato negli appunti',
864
+ failedToCopy: 'Impossibile copiare il testo negli appunti',
865
+ noTextToCopy: 'Nessun testo disponibile da copiare',
866
+ },
867
+
868
+ markdown: {
869
+ // Markdown copy functionality
870
+ codeCopied: 'Codice copiato',
871
+ copyFailed: 'Copia non riuscita',
872
+ mermaidRenderFailed: 'Impossibile renderizzare il diagramma mermaid',
873
+ },
874
+
875
+ artifacts: {
876
+ // Artifacts feature
877
+ title: 'Artefatti',
878
+ countSingular: '1 artefatto',
879
+ countPlural: ({ count }: { count: number }) => `${count} artefatti`,
880
+ empty: 'Nessun artefatto',
881
+ emptyDescription: 'Crea il tuo primo artefatto per iniziare',
882
+ new: 'Nuovo artefatto',
883
+ edit: 'Modifica artefatto',
884
+ delete: 'Elimina',
885
+ updateError: 'Impossibile aggiornare l\'artefatto. Riprova.',
886
+ notFound: 'Artefatto non trovato',
887
+ discardChanges: 'Scartare le modifiche?',
888
+ discardChangesDescription: 'Hai modifiche non salvate. Sei sicuro di volerle scartare?',
889
+ deleteConfirm: 'Eliminare artefatto?',
890
+ deleteConfirmDescription: 'Questa azione non può essere annullata',
891
+ titleLabel: 'TITOLO',
892
+ titlePlaceholder: 'Inserisci un titolo per il tuo artefatto',
893
+ bodyLabel: 'CONTENUTO',
894
+ bodyPlaceholder: 'Scrivi il tuo contenuto qui...',
895
+ emptyFieldsError: 'Inserisci un titolo o un contenuto',
896
+ createError: 'Impossibile creare l\'artefatto. Riprova.',
897
+ save: 'Salva',
898
+ saving: 'Salvataggio...',
899
+ loading: 'Caricamento artefatti...',
900
+ error: 'Impossibile caricare l\'artefatto',
901
+ },
902
+
903
+ friends: {
904
+ // Friends feature
905
+ title: 'Amici',
906
+ manageFriends: 'Gestisci i tuoi amici e le connessioni',
907
+ searchTitle: 'Trova amici',
908
+ pendingRequests: 'Richieste di amicizia',
909
+ myFriends: 'I miei amici',
910
+ noFriendsYet: 'Non hai ancora amici',
911
+ findFriends: 'Trova amici',
912
+ remove: 'Rimuovi',
913
+ pendingRequest: 'In attesa',
914
+ sentOn: ({ date }: { date: string }) => `Inviata il ${date}`,
915
+ accept: 'Accetta',
916
+ reject: 'Rifiuta',
917
+ addFriend: 'Aggiungi amico',
918
+ alreadyFriends: 'Già amici',
919
+ requestPending: 'Richiesta in sospeso',
920
+ searchInstructions: 'Inserisci un nome utente per cercare amici',
921
+ searchPlaceholder: 'Inserisci nome utente...',
922
+ searching: 'Ricerca...',
923
+ userNotFound: 'Utente non trovato',
924
+ noUserFound: 'Nessun utente trovato con quel nome',
925
+ checkUsername: 'Controlla il nome utente e riprova',
926
+ howToFind: 'Come trovare amici',
927
+ findInstructions: 'Cerca amici tramite il loro nome utente. Sia tu che il tuo amico dovete avere GitHub collegato per inviare richieste di amicizia.',
928
+ requestSent: 'Richiesta di amicizia inviata!',
929
+ requestAccepted: 'Richiesta di amicizia accettata!',
930
+ requestRejected: 'Richiesta di amicizia rifiutata',
931
+ friendRemoved: 'Amico rimosso',
932
+ confirmRemove: 'Rimuovi amico',
933
+ confirmRemoveMessage: 'Sei sicuro di voler rimuovere questo amico?',
934
+ cannotAddYourself: 'Non puoi inviare una richiesta di amicizia a te stesso',
935
+ bothMustHaveGithub: 'Entrambi gli utenti devono avere GitHub collegato per diventare amici',
936
+ status: {
937
+ none: 'Non connesso',
938
+ requested: 'Richiesta inviata',
939
+ pending: 'Richiesta in sospeso',
940
+ friend: 'Amici',
941
+ rejected: 'Rifiutata',
942
+ },
943
+ acceptRequest: 'Accetta richiesta',
944
+ removeFriend: 'Rimuovi amico',
945
+ removeFriendConfirm: ({ name }: { name: string }) => `Sei sicuro di voler rimuovere ${name} dagli amici?`,
946
+ requestSentDescription: ({ name }: { name: string }) => `La tua richiesta di amicizia è stata inviata a ${name}`,
947
+ requestFriendship: 'Richiedi amicizia',
948
+ cancelRequest: 'Annulla richiesta di amicizia',
949
+ cancelRequestConfirm: ({ name }: { name: string }) => `Annullare la tua richiesta di amicizia a ${name}?`,
950
+ denyRequest: 'Rifiuta richiesta',
951
+ nowFriendsWith: ({ name }: { name: string }) => `Ora sei amico di ${name}`,
952
+ },
953
+
954
+ usage: {
955
+ // Usage panel strings
956
+ today: 'Oggi',
957
+ last7Days: 'Ultimi 7 giorni',
958
+ last30Days: 'Ultimi 30 giorni',
959
+ totalTokens: 'Token totali',
960
+ totalCost: 'Costo totale',
961
+ tokens: 'Token',
962
+ cost: 'Costo',
963
+ usageOverTime: 'Utilizzo nel tempo',
964
+ byModel: 'Per modello',
965
+ noData: 'Nessun dato di utilizzo disponibile',
966
+ },
967
+
968
+ imageUpload: {
969
+ permissionTitle: 'Accesso alla libreria foto',
970
+ permissionMessage: "Consenti l'accesso alla tua libreria foto per allegare immagini ai messaggi.",
971
+ limitTitle: 'Limite immagini raggiunto',
972
+ limitMessage: ({ max }: { max: number }) => `Puoi allegare fino a ${max} immagini per messaggio.`,
973
+ fileTooLargeTitle: 'File troppo grande',
974
+ fileTooLargeMessage: ({ name, maxMb }: { name: string; maxMb: number }) => `"${name}" supera il limite di ${maxMb}MB e non è stato aggiunto.`,
975
+ uploadFailedTitle: 'Caricamento non riuscito',
976
+ uploadFailedMessage: ({ count }: { count: number }) => count === 1
977
+ ? 'Un\'immagine non è stata caricata e non è stata inviata.'
978
+ : `Non è stato possibile caricare ${count} immagini e non sono state inviate.`,
979
+ notSupportedTitle: 'Immagini non supportate',
980
+ notSupportedMessage: 'Questo agente non supporta gli allegati immagine. È stato inviato solo il testo.',
981
+ },
982
+
983
+ feed: {
984
+ // Feed notifications for friend requests and acceptances
985
+ friendRequestFrom: ({ name }: { name: string }) => `${name} ti ha inviato una richiesta di amicizia`,
986
+ friendRequestGeneric: 'Nuova richiesta di amicizia',
987
+ friendAccepted: ({ name }: { name: string }) => `Ora sei amico di ${name}`,
988
+ friendAcceptedGeneric: 'Richiesta di amicizia accettata',
989
+ }
990
+ } as const;
991
+
992
+ export type TranslationsIt = typeof it;