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,1024 @@
1
+ import type { TranslationStructure } from '../_default';
2
+
3
+ /**
4
+ * Polish plural helper function
5
+ * Polish has 3 plural forms: one, few, many
6
+ * @param options - Object containing count and the three plural forms
7
+ * @returns The appropriate form based on Polish plural rules
8
+ */
9
+ function plural({ count, one, few, many }: { count: number; one: string; few: string; many: string }): string {
10
+ const n = Math.abs(count);
11
+ const n10 = n % 10;
12
+ const n100 = n % 100;
13
+
14
+ // Rule: 1 (but not 11)
15
+ if (n === 1) return one;
16
+
17
+ // Rule: 2-4 but not 12-14
18
+ if (n10 >= 2 && n10 <= 4 && (n100 < 12 || n100 > 14)) return few;
19
+
20
+ // Rule: everything else (0, 5-19, 11, 12-14, etc.)
21
+ return many;
22
+ }
23
+
24
+ /**
25
+ * Polish translations for the NasTech app
26
+ * Must match the exact structure of the English translations
27
+ */
28
+ export const pl: TranslationStructure = {
29
+ tabs: {
30
+ // Tab navigation labels
31
+ inbox: 'Skrzynka',
32
+ sessions: 'Terminale',
33
+ settings: 'Ustawienia',
34
+ },
35
+
36
+ inbox: {
37
+ // Inbox screen
38
+ emptyTitle: 'Pusta skrzynka',
39
+ emptyDescription: 'Połącz się z przyjaciółmi, aby zacząć udostępniać sesje',
40
+ updates: 'Aktualizacje',
41
+ },
42
+
43
+ common: {
44
+ // Simple string constants
45
+ cancel: 'Anuluj',
46
+ authenticate: 'Uwierzytelnij',
47
+ save: 'Zapisz',
48
+ saveAs: 'Zapisz jako',
49
+ error: 'Błąd',
50
+ success: 'Sukces',
51
+ ok: 'OK',
52
+ continue: 'Kontynuuj',
53
+ back: 'Wstecz',
54
+ create: 'Utwórz',
55
+ rename: 'Zmień nazwę',
56
+ reset: 'Resetuj',
57
+ logout: 'Wyloguj',
58
+ yes: 'Tak',
59
+ no: 'Nie',
60
+ discard: 'Odrzuć',
61
+ version: 'Wersja',
62
+ copied: 'Skopiowano',
63
+ copy: 'Kopiuj',
64
+ scanning: 'Skanowanie...',
65
+ urlPlaceholder: 'https://example.com',
66
+ home: 'Główna',
67
+ message: 'Wiadomość',
68
+ files: 'Pliki',
69
+ fileViewer: 'Przeglądarka plików',
70
+ loading: 'Ładowanie...',
71
+ retry: 'Ponów',
72
+ delete: 'Usuń',
73
+ optional: 'opcjonalnie',
74
+ },
75
+
76
+ profile: {
77
+ userProfile: 'Profil użytkownika',
78
+ details: 'Szczegóły',
79
+ firstName: 'Imię',
80
+ lastName: 'Nazwisko',
81
+ username: 'Nazwa użytkownika',
82
+ status: 'Status',
83
+ },
84
+
85
+
86
+ status: {
87
+ connected: 'połączono',
88
+ connecting: 'łączenie',
89
+ disconnected: 'rozłączono',
90
+ error: 'błąd',
91
+ online: 'online',
92
+ offline: 'offline',
93
+ lastSeen: ({ time }: { time: string }) => `ostatnio widziano ${time}`,
94
+ permissionRequired: 'wymagane uprawnienie',
95
+ activeNow: 'Aktywny teraz',
96
+ unknown: 'nieznane',
97
+ unread: 'nowe wyniki',
98
+ },
99
+
100
+ time: {
101
+ justNow: 'teraz',
102
+ minutesAgo: ({ count }: { count: number }) => `${count} ${plural({ count, one: 'minuta', few: 'minuty', many: 'minut' })} temu`,
103
+ hoursAgo: ({ count }: { count: number }) => `${count} ${plural({ count, one: 'godzina', few: 'godziny', many: 'godzin' })} temu`,
104
+ daysAgo: ({ count }: { count: number }) => `${count} ${plural({ count, one: 'dzień', few: 'dni', many: 'dni' })} temu`,
105
+ },
106
+
107
+ connect: {
108
+ restoreAccount: 'Przywróć konto',
109
+ enterSecretKey: 'Proszę wprowadzić klucz tajny',
110
+ invalidSecretKey: 'Nieprawidłowy klucz tajny. Sprawdź i spróbuj ponownie.',
111
+ enterUrlManually: 'Wprowadź URL ręcznie',
112
+ },
113
+
114
+ settings: {
115
+ title: 'Ustawienia',
116
+ connectedAccounts: 'Połączone konta',
117
+ connectAccount: 'Połącz konto',
118
+ github: 'GitHub',
119
+ machines: 'Maszyny',
120
+ showOfflineMachines: ({ count }: { count: number }) => {
121
+ const mod10 = count % 10;
122
+ const mod100 = count % 100;
123
+ if (count === 1) return 'Pokaż 1 maszynę offline';
124
+ if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) return `Pokaż ${count} maszyny offline`;
125
+ return `Pokaż ${count} maszyn offline`;
126
+ },
127
+ hideOfflineMachines: 'Ukryj maszyny offline',
128
+ features: 'Funkcje',
129
+ social: 'Społeczność',
130
+ account: 'Konto',
131
+ accountSubtitle: 'Zarządzaj szczegółami konta',
132
+ appearance: 'Wygląd',
133
+ appearanceSubtitle: 'Dostosuj wygląd aplikacji',
134
+ voiceAssistant: 'Asystent głosowy',
135
+ voiceAssistantSubtitle: 'Konfiguruj preferencje interakcji głosowej',
136
+ featuresTitle: 'Funkcje',
137
+ featuresSubtitle: 'Włącz lub wyłącz funkcje aplikacji',
138
+ developer: 'Deweloper',
139
+ developerTools: 'Narzędzia deweloperskie',
140
+ about: 'O aplikacji',
141
+ aboutFooter: 'NasTech to mobilny klient Codex i Claude Code. Jest w pełni szyfrowany end-to-end, a Twoje konto jest przechowywane tylko na Twoim urządzeniu. Nie jest powiązany z Anthropic.',
142
+ whatsNew: 'Co nowego',
143
+ whatsNewSubtitle: 'Zobacz najnowsze aktualizacje i ulepszenia',
144
+ reportIssue: 'Zgłoś problem',
145
+ privacyPolicy: 'Polityka prywatności',
146
+ termsOfService: 'Warunki użytkowania',
147
+ eula: 'EULA',
148
+ supportUs: 'Wesprzyj nas',
149
+ supportUsSubtitlePro: 'Dziękujemy za wsparcie!',
150
+ supportUsSubtitle: 'Wesprzyj rozwój projektu',
151
+ scanQrCodeToAuthenticate: 'Zeskanuj kod QR, aby się uwierzytelnić',
152
+ githubConnected: ({ login }: { login: string }) => `Połączono jako @${login}`,
153
+ connectGithubAccount: 'Połącz konto GitHub',
154
+ claudeAuthSuccess: 'Pomyślnie połączono z Claude',
155
+ exchangingTokens: 'Wymiana tokenów...',
156
+ usage: 'Użycie',
157
+ usageSubtitle: 'Zobacz użycie API i koszty',
158
+
159
+ // Dynamic settings messages
160
+ accountConnected: ({ service }: { service: string }) => `Konto ${service} połączone`,
161
+ machineStatus: ({ name, status }: { name: string; status: 'online' | 'offline' }) =>
162
+ `${name} jest ${status === 'online' ? 'online' : 'offline'}`,
163
+ featureToggled: ({ feature, enabled }: { feature: string; enabled: boolean }) =>
164
+ `${feature} ${enabled ? 'włączona' : 'wyłączona'}`,
165
+ },
166
+
167
+ settingsAppearance: {
168
+ // Appearance settings screen
169
+ theme: 'Motyw',
170
+ themeDescription: 'Wybierz preferowaną kolorystykę',
171
+ themeOptions: {
172
+ adaptive: 'Adaptacyjny',
173
+ light: 'Jasny',
174
+ dark: 'Ciemny',
175
+ },
176
+ themeDescriptions: {
177
+ adaptive: 'Dopasuj do ustawień systemu',
178
+ light: 'Zawsze używaj jasnego motywu',
179
+ dark: 'Zawsze używaj ciemnego motywu',
180
+ },
181
+ display: 'Wyświetlanie',
182
+ displayDescription: 'Kontroluj układ i odstępy',
183
+ inlineToolCalls: 'Wbudowane wywołania narzędzi',
184
+ inlineToolCallsDescription: 'Wyświetlaj wywołania narzędzi bezpośrednio w wiadomościach czatu',
185
+ expandTodoLists: 'Rozwiń listy zadań',
186
+ expandTodoListsDescription: 'Pokazuj wszystkie zadania zamiast tylko zmian',
187
+ showLineNumbersInDiffs: 'Pokaż numery linii w różnicach',
188
+ showLineNumbersInDiffsDescription: 'Wyświetlaj numery linii w różnicach kodu',
189
+ showLineNumbersInToolViews: 'Pokaż numery linii w widokach narzędzi',
190
+ showLineNumbersInToolViewsDescription: 'Wyświetlaj numery linii w różnicach widoków narzędzi',
191
+ wrapLinesInDiffs: 'Zawijanie linii w różnicach',
192
+ wrapLinesInDiffsDescription: 'Zawijaj długie linie zamiast przewijania poziomego w widokach różnic',
193
+ diffStyle: 'Widok różnic',
194
+ diffStyleDescription: 'Pokazuj różnice w jednej kolumnie (unified) lub obok siebie (split). Widok split działa tylko w przeglądarce.',
195
+ diffStyleOptions: {
196
+ unified: 'Unified',
197
+ split: 'Split',
198
+ },
199
+ alwaysShowContextSize: 'Zawsze pokazuj rozmiar kontekstu',
200
+ alwaysShowContextSizeDescription: 'Wyświetlaj użycie kontekstu nawet gdy nie jest blisko limitu',
201
+ avatarStyle: 'Styl awatara',
202
+ avatarStyleDescription: 'Wybierz wygląd awatara sesji',
203
+ avatarOptions: {
204
+ pixelated: 'Pikselowy',
205
+ gradient: 'Gradientowy',
206
+ brutalist: 'Brutalistyczny',
207
+ },
208
+ showFlavorIcons: 'Pokaż ikony dostawcy AI',
209
+ showFlavorIconsDescription: 'Wyświetlaj ikony dostawcy AI na awatarach sesji',
210
+ },
211
+
212
+ settingsFeatures: {
213
+ // Features settings screen
214
+ experiments: 'Eksperymenty',
215
+ experimentsDescription: 'Włącz eksperymentalne funkcje, które są nadal w rozwoju. Te funkcje mogą być niestabilne lub zmienić się bez ostrzeżenia.',
216
+ experimentalFeatures: 'Funkcje eksperymentalne',
217
+ experimentalFeaturesEnabled: 'Funkcje eksperymentalne włączone',
218
+ experimentalFeaturesDisabled: 'Używane tylko stabilne funkcje',
219
+ webFeatures: 'Funkcje webowe',
220
+ webFeaturesDescription: 'Funkcje dostępne tylko w wersji webowej aplikacji.',
221
+ enterToSend: 'Enter aby wysłać',
222
+ enterToSendEnabled: 'Naciśnij Enter, aby wysłać (Shift+Enter dla nowej linii)',
223
+ enterToSendDisabled: 'Enter wstawia nową linię',
224
+ commandPalette: 'Paleta poleceń',
225
+ commandPaletteEnabled: 'Naciśnij ⌘K, aby otworzyć',
226
+ commandPaletteDisabled: 'Szybki dostęp do poleceń wyłączony',
227
+ markdownCopyV2: 'Markdown Copy v2',
228
+ markdownCopyV2Subtitle: 'Długie naciśnięcie otwiera modal kopiowania',
229
+ hideInactiveSessions: 'Ukryj nieaktywne sesje',
230
+ hideInactiveSessionsSubtitle: 'Wyświetlaj tylko aktywne czaty na liście',
231
+ groupToolCalls: 'Grupuj wywołania narzędzi',
232
+ groupToolCallsSubtitle: 'Zwijaj kolejne wywołania narzędzi w jeden kontener',
233
+ privacy: 'Prywatność',
234
+ privacyDescription: 'Całkowicie wyłącza wszystkie analizy i telemetrię. Żadne dane nie będą wysyłane do PostHog ani żadnego innego serwisu śledzącego.',
235
+ disableAnalytics: 'Wyłącz analitykę',
236
+ analyticsDisabled: 'Wszystkie śledzenie i telemetria wyłączone',
237
+ analyticsEnabled: 'Anonimowa analityka użytkowania aktywna',
238
+ imageUpload: 'Przesyłanie obrazów',
239
+ imageUploadSubtitle: 'Dołącz obrazy do wiadomości, aby Claude mógł je przeanalizować',
240
+ },
241
+
242
+ errors: {
243
+ networkError: 'Wystąpił błąd sieci',
244
+ serverError: 'Wystąpił błąd serwera',
245
+ unknownError: 'Wystąpił nieznany błąd',
246
+ connectionTimeout: 'Przekroczono czas oczekiwania na połączenie',
247
+ authenticationFailed: 'Uwierzytelnienie nie powiodło się',
248
+ permissionDenied: 'Brak uprawnień',
249
+ fileNotFound: 'Plik nie został znaleziony',
250
+ invalidFormat: 'Nieprawidłowy format',
251
+ operationFailed: 'Operacja nie powiodła się',
252
+ tryAgain: 'Spróbuj ponownie',
253
+ contactSupport: 'Skontaktuj się z pomocą techniczną, jeśli problem będzie się powtarzał',
254
+ sessionNotFound: 'Sesja nie została znaleziona',
255
+ voiceSessionFailed: 'Nie udało się uruchomić sesji głosowej',
256
+ voiceServiceUnavailable: 'Usługa głosowa jest tymczasowo niedostępna',
257
+ voiceLimitReachedTitle: 'Osiągnięto limit głosu',
258
+ voiceHardLimitReached: ({ hours }: { hours: number }) => `Wykorzystałeś ${hours}+ godzin głosu w tym miesiącu. To jest maksymalny dozwolony limit. Możesz skonfigurować własnego agenta ElevenLabs w ustawieniach głosu, aby korzystać z własnego limitu.`,
259
+ voiceConversationLimitReached: 'Osiągnąłeś maksymalną liczbę rozmów głosowych w tym miesiącu. Możliwe, że w przyszłości dodamy głosowe korzystanie na żądanie — prosimy o zgłoszenie na github.com/nastech-ai/nastech/issues, jeśli napotkasz ten limit.',
260
+ oauthInitializationFailed: 'Nie udało się zainicjować przepływu OAuth',
261
+ tokenStorageFailed: 'Nie udało się zapisać tokenów uwierzytelniania',
262
+ oauthStateMismatch: 'Weryfikacja bezpieczeństwa nie powiodła się. Spróbuj ponownie',
263
+ tokenExchangeFailed: 'Nie udało się wymienić kodu autoryzacji',
264
+ oauthAuthorizationDenied: 'Autoryzacja została odrzucona',
265
+ webViewLoadFailed: 'Nie udało się załadować strony uwierzytelniania',
266
+ failedToLoadProfile: 'Nie udało się załadować profilu użytkownika',
267
+ userNotFound: 'Użytkownik nie został znaleziony',
268
+ sessionDeleted: 'Sesja została usunięta',
269
+ sessionDeletedDescription: 'Ta sesja została trwale usunięta',
270
+
271
+ // Error functions with context
272
+ fieldError: ({ field, reason }: { field: string; reason: string }) =>
273
+ `${field}: ${reason}`,
274
+ validationError: ({ field, min, max }: { field: string; min: number; max: number }) =>
275
+ `${field} musi być między ${min} a ${max}`,
276
+ retryIn: ({ seconds }: { seconds: number }) =>
277
+ `Ponów próbę za ${seconds} ${plural({ count: seconds, one: 'sekundę', few: 'sekundy', many: 'sekund' })}`,
278
+ errorWithCode: ({ message, code }: { message: string; code: number | string }) =>
279
+ `${message} (Błąd ${code})`,
280
+ disconnectServiceFailed: ({ service }: { service: string }) =>
281
+ `Nie udało się rozłączyć ${service}`,
282
+ connectServiceFailed: ({ service }: { service: string }) =>
283
+ `Nie udało się połączyć z ${service}. Spróbuj ponownie.`,
284
+ failedToLoadFriends: 'Nie udało się załadować listy przyjaciół',
285
+ failedToAcceptRequest: 'Nie udało się zaakceptować zaproszenia do znajomych',
286
+ failedToRejectRequest: 'Nie udało się odrzucić zaproszenia do znajomych',
287
+ failedToRemoveFriend: 'Nie udało się usunąć przyjaciela',
288
+ searchFailed: 'Wyszukiwanie nie powiodło się. Spróbuj ponownie.',
289
+ failedToSendRequest: 'Nie udało się wysłać zaproszenia do znajomych',
290
+ },
291
+
292
+ newSession: {
293
+ title: 'Rozpocznij nową sesję',
294
+ machineOffline: 'Maszyna jest offline',
295
+ switchMachinesHint: '• Przełącz maszynę, klikając na nią powyżej',
296
+ },
297
+
298
+ sessionHistory: {
299
+ // Used by session history screen
300
+ title: 'Historia sesji',
301
+ empty: 'Nie znaleziono sesji',
302
+ today: 'Dzisiaj',
303
+ yesterday: 'Wczoraj',
304
+ daysAgo: ({ count }: { count: number }) => `${count} ${plural({ count, one: 'dzień', few: 'dni', many: 'dni' })} temu`,
305
+ viewAll: 'Zobacz wszystkie sesje',
306
+ },
307
+
308
+ session: {
309
+ inputPlaceholder: 'Wpisz wiadomość...',
310
+ inactiveArchived: 'Ta sesja jest nieaktywna.',
311
+ resumeFromTerminal: 'Aby wznowić ją z terminala:',
312
+ newChat: 'Nowy czat',
313
+ forkAction: 'Rozwidl sesję',
314
+ forkSubtitle: 'Kontynuuj w nowej sesji z tym samym kontekstem',
315
+ duplicateAction: 'Duplikuj od wiadomości…',
316
+ duplicateSubtitle: 'Cofnij się do wybranego punktu i spróbuj inaczej',
317
+ forkFromHere: 'Rozwidl od tego miejsca',
318
+ duplicateSheetTitle: 'Wybierz punkt cofnięcia',
319
+ duplicateSheetSubtitle: 'Nowa sesja zachowa wybraną turę w całości (twoja wiadomość i odpowiedź agenta) i odrzuci wszystkie kolejne wiadomości.',
320
+ duplicateSheetConfirm: 'Duplikuj',
321
+ duplicateSheetEmpty: 'W tej sesji nie ma jeszcze wiadomości, do których można się cofnąć.',
322
+ duplicateRowDisabled: 'Tej wiadomości nie można użyć jako punktu cofnięcia.',
323
+ forkedFromLabel: 'Rozwidlone z',
324
+ forkedFromSubtitle: 'Otwórz sesję, z której powstało rozwidlenie',
325
+ forkErrorOffline: 'Maszyna jest offline. Rozwidlenie jest dostępne tylko gdy maszyna sesji jest online.',
326
+ forkErrorMissingUuid: 'Wybrany punkt cofnięcia nie istnieje już w sesji źródłowej — spróbuj rozwidlić bez przycinania.',
327
+ forkErrorMissingMetadata: 'Brak metadanych sesji wymaganych do rozwidlenia.',
328
+ forkErrorGeneric: 'Nie udało się rozwidlić sesji.',
329
+ forkClaudeOnly: 'Rozwidlenie jest obecnie obsługiwane tylko dla sesji Claude.',
330
+ },
331
+
332
+ commandPalette: {
333
+ placeholder: 'Wpisz polecenie lub wyszukaj...',
334
+ },
335
+
336
+ server: {
337
+ // Used by Server Configuration screen (app/(app)/server.tsx)
338
+ serverConfiguration: 'Konfiguracja serwera',
339
+ enterServerUrl: 'Proszę wprowadzić URL serwera',
340
+ notValidNasTechServer: 'To nie jest prawidłowy serwer NasTech',
341
+ changeServer: 'Zmień serwer',
342
+ continueWithServer: 'Kontynuować z tym serwerem?',
343
+ resetToDefault: 'Resetuj do domyślnego',
344
+ resetServerDefault: 'Zresetować serwer do domyślnego?',
345
+ validating: 'Sprawdzanie...',
346
+ validatingServer: 'Sprawdzanie serwera...',
347
+ serverReturnedError: 'Serwer zwrócił błąd',
348
+ failedToConnectToServer: 'Nie udało się połączyć z serwerem',
349
+ currentlyUsingCustomServer: 'Aktualnie używany jest niestandardowy serwer',
350
+ customServerUrlLabel: 'URL niestandardowego serwera',
351
+ advancedFeatureFooter: 'To jest zaawansowana funkcja. Zmieniaj serwer tylko jeśli wiesz, co robisz. Po zmianie serwera będziesz musiał się wylogować i zalogować ponownie.'
352
+ },
353
+
354
+ sessionInfo: {
355
+ // Used by Session Info screen (app/(app)/session/[id]/info.tsx)
356
+ killSession: 'Zakończ sesję',
357
+ killSessionConfirm: 'Czy na pewno chcesz zakończyć tę sesję?',
358
+ archiveSession: 'Zarchiwizuj sesję',
359
+ archiveSessionConfirm: 'Czy na pewno chcesz zarchiwizować tę sesję?',
360
+ nastechSessionIdCopied: 'ID sesji NasTech skopiowane do schowka',
361
+ failedToCopySessionId: 'Nie udało się skopiować ID sesji NasTech',
362
+ nastechSessionId: 'ID sesji NasTech',
363
+ claudeCodeSessionId: 'ID sesji Claude Code',
364
+ claudeCodeSessionIdCopied: 'ID sesji Claude Code skopiowane do schowka',
365
+ codexThreadId: 'ID wątku Codex',
366
+ codexThreadIdCopied: 'ID wątku Codex skopiowane do schowka',
367
+ aiProvider: 'Dostawca AI',
368
+ failedToCopyClaudeCodeSessionId: 'Nie udało się skopiować ID sesji Claude Code',
369
+ failedToCopyCodexThreadId: 'Nie udało się skopiować ID wątku Codex',
370
+ metadataCopied: 'Metadane skopiowane do schowka',
371
+ failedToCopyMetadata: 'Nie udało się skopiować metadanych',
372
+ failedToKillSession: 'Nie udało się zakończyć sesji',
373
+ failedToArchiveSession: 'Nie udało się zarchiwizować sesji',
374
+ connectionStatus: 'Status połączenia',
375
+ created: 'Utworzono',
376
+ lastUpdated: 'Ostatnia aktualizacja',
377
+ sequence: 'Sekwencja',
378
+ quickActions: 'Szybkie akcje',
379
+ viewMachine: 'Zobacz maszynę',
380
+ viewMachineSubtitle: 'Zobacz szczegóły maszyny i sesje',
381
+ resumeSession: 'Resume Session',
382
+ resumeSessionSubtitle: 'Resume this session on the same machine',
383
+ resumeSessionSameMachineOnly: 'This session can only be resumed on the same machine it started on.',
384
+ resumeSessionMachineOffline: 'This machine is offline. Resume is only available while it is online.',
385
+ resumeSessionNeedsNasTechAgent: 'Resume is unavailable on this machine. Run `nastech-agent auth login` to enable it.',
386
+ resumeSessionMissingMachine: 'This session is missing its machine metadata, so it cannot be resumed.',
387
+ resumeSessionMissingBackendId: 'This session does not have a resumable Claude or Codex identifier.',
388
+ resumeSessionUnexpectedDirectoryPrompt: 'Resume cannot create directories. Start the session manually from its original path.',
389
+ killSessionSubtitle: 'Natychmiastowo zakończ sesję',
390
+ archiveSessionSubtitle: 'Zarchiwizuj tę sesję i zatrzymaj ją',
391
+ metadata: 'Metadane',
392
+ host: 'Host',
393
+ path: 'Ścieżka',
394
+ operatingSystem: 'System operacyjny',
395
+ processId: 'ID procesu',
396
+ nastechHome: 'Katalog domowy NasTech',
397
+ copyMetadata: 'Kopiuj metadane',
398
+ agentState: 'Stan agenta',
399
+ controlledByUser: 'Kontrolowany przez użytkownika',
400
+ pendingRequests: 'Oczekujące żądania',
401
+ activity: 'Aktywność',
402
+ thinking: 'Myśli',
403
+ thinkingSince: 'Myśli od',
404
+ cliVersion: 'Wersja CLI',
405
+ cliVersionOutdated: 'Wymagana aktualizacja CLI',
406
+ cliVersionOutdatedMessage: ({ currentVersion, requiredVersion }: { currentVersion: string; requiredVersion: string }) =>
407
+ `Zainstalowana wersja ${currentVersion}. Zaktualizuj do ${requiredVersion} lub nowszej`,
408
+ updateCliInstructions: 'Proszę uruchomić pip install -U nastech-agent',
409
+ deleteSession: 'Usuń sesję',
410
+ deleteSessionSubtitle: 'Trwale usuń tę sesję',
411
+ deleteSessionConfirm: 'Usunąć sesję na stałe?',
412
+ deleteSessionWarning: 'Ta operacja jest nieodwracalna. Wszystkie wiadomości i dane powiązane z tą sesją zostaną trwale usunięte.',
413
+ failedToDeleteSession: 'Nie udało się usunąć sesji',
414
+ sessionDeleted: 'Sesja została pomyślnie usunięta',
415
+ worktreeCleanupTitle: 'Usunąć Worktree?',
416
+ worktreeCleanupMessage: 'Worktree nie ma niezatwierdzonych zmian. Czy chcesz usunąć pliki Worktree?',
417
+ worktreeCleanupDelete: 'Usuń Worktree',
418
+ worktreeCleanupKeep: 'Zachowaj pliki',
419
+ },
420
+
421
+ components: {
422
+ emptyMainScreen: {
423
+ // Used by EmptyMainScreen component
424
+ readyToCode: 'Gotowy do kodowania?',
425
+ installCli: 'Install NasTech CLI',
426
+ runIt: 'Uruchom je',
427
+ scanQrCode: 'Zeskanuj kod QR',
428
+ openCamera: 'Otwórz kamerę',
429
+ },
430
+ },
431
+
432
+ agentInput: {
433
+ permissionMode: {
434
+ title: 'TRYB UPRAWNIEŃ',
435
+ default: 'Domyślny',
436
+ acceptEdits: 'Akceptuj edycje',
437
+ plan: 'Tryb planowania',
438
+ dontAsk: 'Nie pytaj',
439
+ bypassPermissions: 'Tryb YOLO',
440
+ badgeAcceptAllEdits: 'Akceptuj wszystkie edycje',
441
+ badgeBypassAllPermissions: 'Omiń wszystkie uprawnienia',
442
+ badgePlanMode: 'Tryb planowania',
443
+ },
444
+ agent: {
445
+ claude: 'Claude',
446
+ codex: 'Codex',
447
+ gemini: 'Gemini',
448
+ openclaw: 'OpenClaw',
449
+ },
450
+ model: {
451
+ title: 'MODEL',
452
+ configureInCli: 'Skonfiguruj modele w ustawieniach CLI',
453
+ },
454
+ effort: {
455
+ title: 'WYSIŁEK',
456
+ },
457
+ codexPermissionMode: {
458
+ title: 'TRYB UPRAWNIEŃ CODEX',
459
+ default: 'Ustawienia CLI',
460
+ readOnly: 'Read Only Mode',
461
+ safeYolo: 'Safe YOLO',
462
+ yolo: 'YOLO',
463
+ badgeReadOnly: 'Read Only Mode',
464
+ badgeSafeYolo: 'Safe YOLO',
465
+ badgeYolo: 'YOLO',
466
+ },
467
+ codexModel: {
468
+ title: 'CODEX MODEL',
469
+ gpt5CodexLow: 'gpt-5-codex low',
470
+ gpt5CodexMedium: 'gpt-5-codex medium',
471
+ gpt5CodexHigh: 'gpt-5-codex high',
472
+ gpt5Minimal: 'GPT-5 Minimal',
473
+ gpt5Low: 'GPT-5 Low',
474
+ gpt5Medium: 'GPT-5 Medium',
475
+ gpt5High: 'GPT-5 High',
476
+ },
477
+ geminiPermissionMode: {
478
+ title: 'TRYB UPRAWNIEŃ GEMINI',
479
+ default: 'Domyślny',
480
+ autoEdit: 'Auto edycja',
481
+ yolo: 'YOLO',
482
+ plan: 'Planowanie',
483
+ badgeAutoEdit: 'Auto edycja',
484
+ badgeYolo: 'YOLO',
485
+ badgePlan: 'Planowanie',
486
+ },
487
+ context: {
488
+ remaining: ({ percent }: { percent: number }) => `Pozostało ${percent}%`,
489
+ },
490
+ suggestion: {
491
+ fileLabel: 'PLIK',
492
+ folderLabel: 'FOLDER',
493
+ },
494
+ noMachinesAvailable: 'Brak maszyn',
495
+ },
496
+
497
+ machineLauncher: {
498
+ showLess: 'Pokaż mniej',
499
+ showAll: ({ count }: { count: number }) => `Pokaż wszystkie (${count} ${plural({ count, one: 'ścieżka', few: 'ścieżki', many: 'ścieżek' })})`,
500
+ enterCustomPath: 'Wprowadź niestandardową ścieżkę',
501
+ offlineUnableToSpawn: 'Nie można utworzyć nowej sesji, offline',
502
+ },
503
+
504
+ sidebar: {
505
+ sessionsTitle: 'NasTech',
506
+ showArchived: 'Pokaż zarchiwizowane',
507
+ hideArchived: 'Ukryj zarchiwizowane',
508
+ newSession: 'Nowa sesja',
509
+ },
510
+
511
+ zen: {
512
+ toggle: 'Tryb zen',
513
+ },
514
+
515
+ toolView: {
516
+ input: 'Wejście',
517
+ output: 'Wyjście',
518
+ },
519
+
520
+ toolGroup: {
521
+ editedFiles: ({ count }: { count: number }) => `${plural({ count, one: 'Edytowano 1 plik', few: `Edytowano ${count} pliki`, many: `Edytowano ${count} plików` })}`,
522
+ readFiles: ({ count }: { count: number }) => `${plural({ count, one: 'Odczytano 1 plik', few: `Odczytano ${count} pliki`, many: `Odczytano ${count} plików` })}`,
523
+ ranCommands: ({ count }: { count: number }) => `${plural({ count, one: 'Wykonano 1 polecenie', few: `Wykonano ${count} polecenia`, many: `Wykonano ${count} poleceń` })}`,
524
+ searched: ({ count }: { count: number }) => `${plural({ count, one: 'Wyszukano 1 raz', few: `Wyszukano ${count} razy`, many: `Wyszukano ${count} razy` })}`,
525
+ fetchedUrls: ({ count }: { count: number }) => `${plural({ count, one: 'Pobrano 1 URL', few: `Pobrano ${count} URLe`, many: `Pobrano ${count} URLi` })}`,
526
+ ranTasks: ({ count }: { count: number }) => `${plural({ count, one: 'Wykonano 1 zadanie', few: `Wykonano ${count} zadania`, many: `Wykonano ${count} zadań` })}`,
527
+ usedTools: ({ count }: { count: number }) => `${plural({ count, one: 'Użyto 1 narzędzie', few: `Użyto ${count} narzędzia`, many: `Użyto ${count} narzędzi` })}`,
528
+ },
529
+
530
+ tools: {
531
+ fullView: {
532
+ description: 'Opis',
533
+ inputParams: 'Parametry wejściowe',
534
+ output: 'Wyjście',
535
+ error: 'Błąd',
536
+ completed: 'Narzędzie ukończone pomyślnie',
537
+ noOutput: 'Nie wygenerowano żadnego wyjścia',
538
+ running: 'Narzędzie działa...',
539
+ rawJsonDevMode: 'Surowy JSON (tryb deweloperski)',
540
+ },
541
+ taskView: {
542
+ initializing: 'Inicjalizacja agenta...',
543
+ moreTools: ({ count }: { count: number }) => `+${count} ${plural({ count, one: 'więcej narzędzie', few: 'więcej narzędzia', many: 'więcej narzędzi' })}`,
544
+ },
545
+ multiEdit: {
546
+ editNumber: ({ index, total }: { index: number; total: number }) => `Edycja ${index} z ${total}`,
547
+ replaceAll: 'Zamień wszystkie',
548
+ },
549
+ names: {
550
+ task: 'Zadanie',
551
+ terminal: 'Terminal',
552
+ searchFiles: 'Wyszukaj pliki',
553
+ search: 'Wyszukaj',
554
+ searchContent: 'Wyszukaj zawartość',
555
+ listFiles: 'Lista plików',
556
+ planProposal: 'Propozycja planu',
557
+ readFile: 'Czytaj plik',
558
+ editFile: 'Edytuj plik',
559
+ writeFile: 'Zapisz plik',
560
+ fetchUrl: 'Pobierz URL',
561
+ readNotebook: 'Czytaj notatnik',
562
+ editNotebook: 'Edytuj notatnik',
563
+ todoList: 'Lista zadań',
564
+ webSearch: 'Wyszukiwanie w sieci',
565
+ reasoning: 'Rozumowanie',
566
+ applyChanges: 'Zaktualizuj plik',
567
+ viewDiff: 'Bieżące zmiany pliku',
568
+ question: 'Pytanie',
569
+ },
570
+ desc: {
571
+ terminalCmd: ({ cmd }: { cmd: string }) => `Terminal(cmd: ${cmd})`,
572
+ searchPattern: ({ pattern }: { pattern: string }) => `Wyszukaj(wzorzec: ${pattern})`,
573
+ searchPath: ({ basename }: { basename: string }) => `Wyszukaj(ścieżka: ${basename})`,
574
+ fetchUrlHost: ({ host }: { host: string }) => `Pobierz URL(url: ${host})`,
575
+ editNotebookMode: ({ path, mode }: { path: string; mode: string }) => `Edytuj notatnik(plik: ${path}, tryb: ${mode})`,
576
+ todoListCount: ({ count }: { count: number }) => `Lista zadań(liczba: ${count})`,
577
+ webSearchQuery: ({ query }: { query: string }) => `Wyszukiwanie w sieci(zapytanie: ${query})`,
578
+ grepPattern: ({ pattern }: { pattern: string }) => `grep(wzorzec: ${pattern})`,
579
+ multiEditEdits: ({ path, count }: { path: string; count: number }) => `${path} (${count} ${plural({ count, one: 'edycja', few: 'edycje', many: 'edycji' })})`,
580
+ readingFile: ({ file }: { file: string }) => `Odczytywanie ${file}`,
581
+ writingFile: ({ file }: { file: string }) => `Zapisywanie ${file}`,
582
+ modifyingFile: ({ file }: { file: string }) => `Modyfikowanie ${file}`,
583
+ modifyingFiles: ({ count }: { count: number }) => `Modyfikowanie ${count} ${plural({ count, one: 'pliku', few: 'plików', many: 'plików' })}`,
584
+ modifyingMultipleFiles: ({ file, count }: { file: string; count: number }) => `${file} i ${count} ${plural({ count, one: 'więcej', few: 'więcej', many: 'więcej' })}`,
585
+ showingDiff: 'Pokazywanie zmian',
586
+ },
587
+ askUserQuestion: {
588
+ submit: 'Wyślij odpowiedź',
589
+ multipleQuestions: ({ count }: { count: number }) => `${count} ${plural({ count, one: 'pytanie', few: 'pytania', many: 'pytań' })}`,
590
+ other: 'Inne',
591
+ otherDescription: 'Wpisz własną odpowiedź',
592
+ otherPlaceholder: 'Wpisz swoją odpowiedź...',
593
+ }
594
+ },
595
+
596
+ files: {
597
+ changes: 'Zmiany',
598
+ searchPlaceholder: 'Wyszukaj pliki...',
599
+ detachedHead: 'odłączony HEAD',
600
+ summary: ({ staged, unstaged }: { staged: number; unstaged: number }) => `${staged} przygotowanych • ${unstaged} nieprzygotowanych`,
601
+ notRepo: 'To nie jest repozytorium git',
602
+ notUnderGit: 'Ten katalog nie jest pod kontrolą wersji git',
603
+ searching: 'Wyszukiwanie plików...',
604
+ noFilesFound: 'Nie znaleziono plików',
605
+ noFilesInProject: 'Brak plików w projekcie',
606
+ tryDifferentTerm: 'Spróbuj innego terminu wyszukiwania',
607
+ searchResults: ({ count }: { count: number }) => `Wyniki wyszukiwania (${count})`,
608
+ projectRoot: 'Katalog główny projektu',
609
+ stagedChanges: ({ count }: { count: number }) => `Przygotowane zmiany (${count})`,
610
+ unstagedChanges: ({ count }: { count: number }) => `Nieprzygotowane zmiany (${count})`,
611
+ // File viewer strings
612
+ loadingFile: ({ fileName }: { fileName: string }) => `Ładowanie ${fileName}...`,
613
+ binaryFile: 'Plik binarny',
614
+ cannotDisplayBinary: 'Nie można wyświetlić zawartości pliku binarnego',
615
+ diff: 'Różnice',
616
+ file: 'Plik',
617
+ fileEmpty: 'Plik jest pusty',
618
+ noChanges: 'Brak zmian do wyświetlenia',
619
+ noChangesTitle: 'Brak zmian',
620
+ noChangesSubtitle: 'Drzewo robocze jest czyste',
621
+ deleted: 'Usunięty',
622
+ changedFiles: ({ count }: { count: number }) => `${count} ${count === 1 ? 'zmieniony plik' : 'zmienionych plików'}`,
623
+ allFiles: 'Wszystkie pliki',
624
+ editFile: 'Edytuj',
625
+ saveFile: 'Zapisz',
626
+ failedToRead: 'Nie udało się odczytać pliku',
627
+ failedToSave: 'Nie udało się zapisać pliku',
628
+ fileConflict: 'Konflikt pliku',
629
+ fileConflictDescription: 'Ten plik został zmodyfikowany na urządzeniu podczas edycji. Załaduj ponownie aby zobaczyć najnowszą wersję.',
630
+ reload: 'Załaduj ponownie',
631
+ overwrite: 'Nadpisz',
632
+ },
633
+
634
+ settingsVoice: {
635
+ // Voice settings screen
636
+ languageTitle: 'Język',
637
+ languageDescription: 'Wybierz preferowany język dla interakcji z asystentem głosowym. To ustawienie synchronizuje się na wszystkich Twoich urządzeniach.',
638
+ preferredLanguage: 'Preferowany język',
639
+ preferredLanguageSubtitle: 'Język używany do odpowiedzi asystenta głosowego',
640
+ language: {
641
+ searchPlaceholder: 'Wyszukaj języki...',
642
+ title: 'Języki',
643
+ footer: ({ count }: { count: number }) => `Dostępnych ${count} ${plural({ count, one: 'język', few: 'języki', many: 'języków' })}`,
644
+ autoDetect: 'Automatyczne wykrywanie',
645
+ },
646
+ // Bring your own agent
647
+ byoTitle: 'Użyj własnego agenta',
648
+ byoDescription: 'Użyj własnego agenta ElevenLabs zamiast domyślnego NasTech. Subskrypcja nie jest wymagana — połącz się bezpośrednio ze swoim kontem ElevenLabs. Twój agent musi definiować dwa narzędzia klienckie: messageClaudeCode (wysyła tekst do agenta kodującego) i processPermissionRequest (zezwala lub odmawia użycia narzędzi). Otrzymuje kontekst sesji przez zmienną dynamiczną {{initialConversationContext}}.',
649
+ customAgentId: 'ElevenLabs Agent ID',
650
+ customAgentIdNotSet: 'Nie skonfigurowano',
651
+ customAgentIdDescription: 'Wprowadź swój ElevenLabs Agent ID. Pozostaw puste, aby użyć domyślnego NasTech.',
652
+ customAgentIdPlaceholder: 'e.g. abc123def456',
653
+ bypassToken: 'Połączenie bezpośrednie',
654
+ bypassTokenSubtitle: 'Pomiń serwer NasTech, połącz się bezpośrednio z ElevenLabs',
655
+ promptGuideTitle: 'Przewodnik po promptach agenta',
656
+ promptGuideDescription: 'Twój agent ElevenLabs potrzebuje:\n\n• Narzędzie: messageClaudeCode — parametr: message (string). Wysyła wiadomość do aktywnej sesji kodowania.\n• Narzędzie: processPermissionRequest — parametr: decision ("allow" lub "deny"). Zatwierdza lub odrzuca oczekujące uprawnienie narzędzia.\n• Zmienna dynamiczna: {{initialConversationContext}} — otrzymuje historię sesji i kontekst przy uruchomieniu.\n\nAgent działa jako most głosowy między użytkownikiem a agentami kodującymi. Powinien być zwięzły, odpowiadać tylko gdy jest adresowany i raportować, gdy agent kodujący zakończy pracę.',
657
+ usageTitle: 'Użycie (ostatnie 30 dni)',
658
+ usageFooter: 'Czas głosowy wykorzystany w ostatnich 30 dniach. Darmowy plan: 20 min. Z subskrypcją: 5 godzin. Maks. 100 rozmów miesięcznie.',
659
+ usageLabel: 'Czas głosowy',
660
+ conversationsLabel: 'Rozmowy',
661
+ usageUsed: ({ used, limit }: { used: string; limit: string }) => `${used} wykorzystano z ${limit}`,
662
+ supportTitle: 'Ulepsz głos',
663
+ supportSubtitle: 'Więcej czasu głosowego i wsparcie rozwoju',
664
+ },
665
+
666
+ settingsAccount: {
667
+ // Account settings screen
668
+ accountInformation: 'Informacje o koncie',
669
+ status: 'Status',
670
+ statusActive: 'Aktywny',
671
+ statusNotAuthenticated: 'Nie uwierzytelniony',
672
+ anonymousId: 'ID anonimowe',
673
+ publicId: 'ID publiczne',
674
+ notAvailable: 'Niedostępne',
675
+ linkNewDevice: 'Połącz nowe urządzenie',
676
+ linkNewDeviceSubtitle: 'Zeskanuj kod QR, aby połączyć urządzenie',
677
+ profile: 'Profil',
678
+ name: 'Nazwa',
679
+ github: 'GitHub',
680
+ tapToDisconnect: 'Dotknij, aby rozłączyć',
681
+ server: 'Serwer',
682
+ backup: 'Kopia zapasowa',
683
+ backupDescription: 'Twój klucz tajny to jedyny sposób na odzyskanie konta. Zapisz go w bezpiecznym miejscu, takim jak menedżer haseł.',
684
+ secretKey: 'Klucz tajny',
685
+ tapToReveal: 'Dotknij, aby pokazać',
686
+ tapToHide: 'Dotknij, aby ukryć',
687
+ secretKeyLabel: 'KLUCZ TAJNY (DOTKNIJ, ABY SKOPIOWAĆ)',
688
+ secretKeyCopied: 'Klucz tajny skopiowany do schowka. Przechowuj go w bezpiecznym miejscu!',
689
+ secretKeyCopyFailed: 'Nie udało się skopiować klucza tajnego',
690
+ privacy: 'Prywatność',
691
+ privacyDescription: 'Pomóż ulepszyć aplikację, udostępniając anonimowe dane o użytkowaniu. Nie zbieramy żadnych informacji osobistych.',
692
+ analytics: 'Analityka',
693
+ analyticsDisabled: 'Dane nie są udostępniane',
694
+ analyticsEnabled: 'Anonimowe dane o użytkowaniu są udostępniane',
695
+ dangerZone: 'Strefa niebezpieczna',
696
+ logout: 'Wyloguj',
697
+ logoutSubtitle: 'Wyloguj się i wyczyść dane lokalne',
698
+ logoutConfirm: 'Czy na pewno chcesz się wylogować? Upewnij się, że masz kopię zapasową klucza tajnego!',
699
+ },
700
+
701
+ settingsLanguage: {
702
+ // Language settings screen
703
+ title: 'Język',
704
+ description: 'Wybierz preferowany język interfejsu aplikacji. To ustawienie zostanie zsynchronizowane na wszystkich Twoich urządzeniach.',
705
+ currentLanguage: 'Aktualny język',
706
+ automatic: 'Automatycznie',
707
+ automaticSubtitle: 'Wykrywaj na podstawie ustawień urządzenia',
708
+ needsRestart: 'Język zmieniony',
709
+ needsRestartMessage: 'Aplikacja musi zostać uruchomiona ponownie, aby zastosować nowe ustawienia języka.',
710
+ restartNow: 'Uruchom ponownie',
711
+ },
712
+
713
+ connectButton: {
714
+ authenticate: 'Uwierzytelnij terminal',
715
+ authenticateWithUrlPaste: 'Uwierzytelnij terminal poprzez wklejenie URL',
716
+ pasteAuthUrl: 'Wklej URL uwierzytelnienia z terminala',
717
+ },
718
+
719
+ updateBanner: {
720
+ updateAvailable: 'Dostępna aktualizacja',
721
+ pressToApply: 'Naciśnij, aby zastosować aktualizację',
722
+ whatsNew: 'Co nowego',
723
+ seeLatest: 'Zobacz najnowsze aktualizacje i ulepszenia',
724
+ nativeUpdateAvailable: 'Dostępna aktualizacja aplikacji',
725
+ tapToUpdateAppStore: 'Naciśnij, aby zaktualizować w App Store',
726
+ tapToUpdatePlayStore: 'Naciśnij, aby zaktualizować w Sklepie Play',
727
+ },
728
+
729
+ changelog: {
730
+ // Used by the changelog screen
731
+ version: ({ version }: { version: number }) => `Wersja ${version}`,
732
+ noEntriesAvailable: 'Brak dostępnych wpisów dziennika zmian.',
733
+ },
734
+
735
+ terminal: {
736
+ // Used by terminal connection screens
737
+ webBrowserRequired: 'Wymagana przeglądarka internetowa',
738
+ webBrowserRequiredDescription: 'Linki połączenia terminala można otwierać tylko w przeglądarce internetowej ze względów bezpieczeństwa. Użyj skanera kodów QR lub otwórz ten link na komputerze.',
739
+ processingConnection: 'Przetwarzanie połączenia...',
740
+ invalidConnectionLink: 'Nieprawidłowy link połączenia',
741
+ invalidConnectionLinkDescription: 'Link połączenia jest nieprawidłowy lub go brakuje. Sprawdź URL i spróbuj ponownie.',
742
+ connectTerminal: 'Połącz terminal',
743
+ terminalRequestDescription: 'Terminal żąda połączenia z Twoim kontem NasTech. Pozwoli to terminalowi bezpiecznie wysyłać i odbierać wiadomości.',
744
+ connectionDetails: 'Szczegóły połączenia',
745
+ publicKey: 'Klucz publiczny',
746
+ encryption: 'Szyfrowanie',
747
+ endToEndEncrypted: 'Szyfrowanie end-to-end',
748
+ acceptConnection: 'Akceptuj połączenie',
749
+ connecting: 'Łączenie...',
750
+ reject: 'Odrzuć',
751
+ security: 'Bezpieczeństwo',
752
+ securityFooter: 'Ten link połączenia został bezpiecznie przetworzony w Twojej przeglądarce i nigdy nie został wysłany na żaden serwer. Twoje prywatne dane pozostaną bezpieczne i tylko Ty możesz odszyfrować wiadomości.',
753
+ securityFooterDevice: 'To połączenie zostało bezpiecznie przetworzone na Twoim urządzeniu i nigdy nie zostało wysłane na żaden serwer. Twoje prywatne dane pozostaną bezpieczne i tylko Ty możesz odszyfrować wiadomości.',
754
+ clientSideProcessing: 'Przetwarzanie po stronie klienta',
755
+ linkProcessedLocally: 'Link przetworzony lokalnie w przeglądarce',
756
+ linkProcessedOnDevice: 'Link przetworzony lokalnie na urządzeniu',
757
+ },
758
+
759
+ modals: {
760
+ // Used across connect flows and settings
761
+ authenticateTerminal: 'Uwierzytelnij terminal',
762
+ pasteUrlFromTerminal: 'Wklej URL uwierzytelnienia z terminala',
763
+ deviceLinkedSuccessfully: 'Urządzenie połączone pomyślnie',
764
+ terminalConnectedSuccessfully: 'Terminal połączony pomyślnie',
765
+ invalidAuthUrl: 'Nieprawidłowy URL uwierzytelnienia',
766
+ developerMode: 'Tryb deweloperski',
767
+ developerModeEnabled: 'Tryb deweloperski włączony',
768
+ developerModeDisabled: 'Tryb deweloperski wyłączony',
769
+ disconnectGithub: 'Rozłącz GitHub',
770
+ disconnectGithubConfirm: 'Czy na pewno chcesz rozłączyć swoje konto GitHub?',
771
+ disconnectService: ({ service }: { service: string }) =>
772
+ `Rozłącz ${service}`,
773
+ disconnectServiceConfirm: ({ service }: { service: string }) =>
774
+ `Czy na pewno chcesz rozłączyć ${service} ze swojego konta?`,
775
+ disconnect: 'Rozłącz',
776
+ failedToConnectTerminal: 'Nie udało się połączyć terminala',
777
+ cameraPermissionsRequiredToConnectTerminal: 'Uprawnienia do kamery są wymagane do połączenia terminala',
778
+ failedToLinkDevice: 'Nie udało się połączyć urządzenia',
779
+ cameraPermissionsRequiredToScanQr: 'Uprawnienia do kamery są wymagane do skanowania kodów QR'
780
+ },
781
+
782
+ navigation: {
783
+ // Navigation titles and screen headers
784
+ connectTerminal: 'Połącz terminal',
785
+ linkNewDevice: 'Połącz nowe urządzenie',
786
+ restoreWithSecretKey: 'Przywróć kluczem tajnym',
787
+ whatsNew: 'Co nowego',
788
+ friends: 'Przyjaciele',
789
+ },
790
+
791
+ welcome: {
792
+ // Main welcome screen for unauthenticated users
793
+ title: 'Mobilny klient Codex i Claude Code',
794
+ subtitle: 'Szyfrowanie end-to-end, a Twoje konto jest przechowywane tylko na Twoim urządzeniu.',
795
+ createAccount: 'Utwórz konto',
796
+ linkOrRestoreAccount: 'Połącz lub przywróć konto',
797
+ loginWithMobileApp: 'Zaloguj się przez aplikację mobilną',
798
+ },
799
+
800
+ review: {
801
+ // Used by utils/requestReview.ts
802
+ enjoyingApp: 'Podoba Ci się aplikacja?',
803
+ feedbackPrompt: 'Chcielibyśmy usłyszeć Twoją opinię!',
804
+ yesILoveIt: 'Tak, uwielbiam ją!',
805
+ notReally: 'Nie bardzo'
806
+ },
807
+
808
+ items: {
809
+ // Used by Item component for copy toast
810
+ copiedToClipboard: ({ label }: { label: string }) => `${label} skopiowano do schowka`
811
+ },
812
+
813
+ machine: {
814
+ offlineUnableToSpawn: 'Launcher wyłączony, gdy maszyna jest offline',
815
+ offlineHelp: '• Upewnij się, że komputer jest online\n• Uruchom `nastech daemon status`, aby zdiagnozować\n• Czy używasz najnowszej wersji CLI? Zaktualizuj poleceniem `pip install -U nastech-agent`',
816
+ launchNewSessionInDirectory: 'Uruchom nową sesję w katalogu',
817
+ daemon: 'Daemon',
818
+ status: 'Status',
819
+ stopDaemon: 'Zatrzymaj daemon',
820
+ lastKnownPid: 'Ostatni znany PID',
821
+ lastKnownHttpPort: 'Ostatni znany port HTTP',
822
+ startedAt: 'Uruchomiony o',
823
+ cliVersion: 'Wersja CLI',
824
+ daemonStateVersion: 'Wersja stanu daemon',
825
+ activeSessions: ({ count }: { count: number }) => `Aktywne sesje (${count})`,
826
+ machineGroup: 'Maszyna',
827
+ host: 'Host',
828
+ machineId: 'ID maszyny',
829
+ username: 'Nazwa użytkownika',
830
+ homeDirectory: 'Katalog domowy',
831
+ platform: 'Platforma',
832
+ architecture: 'Architektura',
833
+ lastSeen: 'Ostatnio widziana',
834
+ never: 'Nigdy',
835
+ metadataVersion: 'Wersja metadanych',
836
+ cliAvailability: 'Dostępność CLI',
837
+ cliInstalled: 'Zainstalowany',
838
+ cliNotFound: 'Nie znaleziono',
839
+ lastDetected: 'Ostatnio wykryto',
840
+ untitledSession: 'Sesja bez nazwy',
841
+ back: 'Wstecz',
842
+ dangerZone: 'Strefa niebezpieczna',
843
+ delete: 'Usuń maszynę',
844
+ deleteFooter: 'Usuń tę maszynę ze swojego konta. Historia sesji zostanie zachowana, ale nie będziesz mógł uruchamiać nowych sesji na tej maszynie.',
845
+ deleteConfirmTitle: 'Usunąć tę maszynę?',
846
+ deleteConfirmMessage: 'Maszyna zostanie usunięta z twojego konta. Historia sesji zostanie zachowana, ale nie będziesz mógł uruchamiać nowych sesji, dopóki ponownie nie podłączysz demona.',
847
+ deleteFailed: 'Nie udało się usunąć maszyny.',
848
+ },
849
+
850
+ message: {
851
+ switchedToMode: ({ mode }: { mode: string }) => `Przełączono na tryb ${mode}`,
852
+ unknownEvent: 'Nieznane zdarzenie',
853
+ usageLimitUntil: ({ time }: { time: string }) => `Osiągnięto limit użycia do ${time}`,
854
+ unknownTime: 'nieznany czas',
855
+ },
856
+
857
+ codex: {
858
+ // Codex permission dialog buttons
859
+ permissions: {
860
+ yesForSession: 'Tak, i nie pytaj dla tej sesji',
861
+ stopAndExplain: 'Zatrzymaj i wyjaśnij, co zrobić',
862
+ }
863
+ },
864
+
865
+ claude: {
866
+ // Claude permission dialog buttons
867
+ permissions: {
868
+ yesAllowAllEdits: 'Tak, zezwól na wszystkie edycje podczas tej sesji',
869
+ yesAllowEverything: 'Tak, zezwól na wszystko podczas tej sesji',
870
+ yesForTool: 'Tak, nie pytaj ponownie dla tego narzędzia',
871
+ noTellClaude: 'Nie, przekaż opinię',
872
+ }
873
+ },
874
+
875
+ textSelection: {
876
+ // Text selection screen
877
+ selectText: 'Wybierz zakres tekstu',
878
+ title: 'Wybierz tekst',
879
+ noTextProvided: 'Nie podano tekstu',
880
+ textNotFound: 'Tekst nie został znaleziony lub wygasł',
881
+ textCopied: 'Tekst skopiowany do schowka',
882
+ failedToCopy: 'Nie udało się skopiować tekstu do schowka',
883
+ noTextToCopy: 'Brak tekstu do skopiowania',
884
+ },
885
+
886
+ markdown: {
887
+ // Markdown copy functionality
888
+ codeCopied: 'Kod skopiowany',
889
+ copyFailed: 'Błąd kopiowania',
890
+ mermaidRenderFailed: 'Nie udało się wyświetlić diagramu mermaid',
891
+ },
892
+
893
+ artifacts: {
894
+ // Artifacts feature
895
+ title: 'Artefakty',
896
+ countSingular: '1 artefakt',
897
+ countPlural: ({ count }: { count: number }) => {
898
+ const n = Math.abs(count);
899
+ const n10 = n % 10;
900
+ const n100 = n % 100;
901
+
902
+ // Polish plural rules: 1 (singular), 2-4 (few), 5+ (many)
903
+ if (n === 1) {
904
+ return `${count} artefakt`;
905
+ }
906
+ if (n10 >= 2 && n10 <= 4 && (n100 < 12 || n100 > 14)) {
907
+ return `${count} artefakty`;
908
+ }
909
+ return `${count} artefaktów`;
910
+ },
911
+ empty: 'Brak artefaktów',
912
+ emptyDescription: 'Utwórz pierwszy artefakt, aby rozpocząć',
913
+ new: 'Nowy artefakt',
914
+ edit: 'Edytuj artefakt',
915
+ delete: 'Usuń',
916
+ updateError: 'Nie udało się zaktualizować artefaktu. Spróbuj ponownie.',
917
+ notFound: 'Artefakt nie został znaleziony',
918
+ discardChanges: 'Odrzucić zmiany?',
919
+ discardChangesDescription: 'Masz niezapisane zmiany. Czy na pewno chcesz je odrzucić?',
920
+ deleteConfirm: 'Usunąć artefakt?',
921
+ deleteConfirmDescription: 'Tej operacji nie można cofnąć',
922
+ titleLabel: 'TYTUŁ',
923
+ titlePlaceholder: 'Wprowadź tytuł dla swojego artefaktu',
924
+ bodyLabel: 'TREŚĆ',
925
+ bodyPlaceholder: 'Napisz swoją treść tutaj...',
926
+ emptyFieldsError: 'Proszę wprowadzić tytuł lub treść',
927
+ createError: 'Nie udało się utworzyć artefaktu. Spróbuj ponownie.',
928
+ save: 'Zapisz',
929
+ saving: 'Zapisywanie...',
930
+ loading: 'Ładowanie artefaktów...',
931
+ error: 'Nie udało się załadować artefaktu',
932
+ },
933
+
934
+ friends: {
935
+ // Friends feature
936
+ title: 'Przyjaciele',
937
+ manageFriends: 'Zarządzaj swoimi przyjaciółmi i połączeniami',
938
+ searchTitle: 'Znajdź przyjaciół',
939
+ pendingRequests: 'Zaproszenia do znajomych',
940
+ myFriends: 'Moi przyjaciele',
941
+ noFriendsYet: 'Nie masz jeszcze żadnych przyjaciół',
942
+ findFriends: 'Znajdź przyjaciół',
943
+ remove: 'Usuń',
944
+ pendingRequest: 'Oczekujące',
945
+ sentOn: ({ date }: { date: string }) => `Wysłano ${date}`,
946
+ accept: 'Akceptuj',
947
+ reject: 'Odrzuć',
948
+ addFriend: 'Dodaj do znajomych',
949
+ alreadyFriends: 'Już jesteście znajomymi',
950
+ requestPending: 'Zaproszenie oczekuje',
951
+ searchInstructions: 'Wprowadź nazwę użytkownika, aby znaleźć przyjaciół',
952
+ searchPlaceholder: 'Wprowadź nazwę użytkownika...',
953
+ searching: 'Szukanie...',
954
+ userNotFound: 'Nie znaleziono użytkownika',
955
+ noUserFound: 'Nie znaleziono użytkownika o tej nazwie',
956
+ checkUsername: 'Sprawdź nazwę użytkownika i spróbuj ponownie',
957
+ howToFind: 'Jak znaleźć przyjaciół',
958
+ findInstructions: 'Szukaj przyjaciół po nazwie użytkownika. Zarówno ty, jak i twój przyjaciel musicie mieć połączony GitHub, aby wysyłać zaproszenia do znajomych.',
959
+ requestSent: 'Zaproszenie do znajomych wysłane!',
960
+ requestAccepted: 'Zaproszenie do znajomych zaakceptowane!',
961
+ requestRejected: 'Zaproszenie do znajomych odrzucone',
962
+ friendRemoved: 'Przyjaciel usunięty',
963
+ confirmRemove: 'Usuń przyjaciela',
964
+ confirmRemoveMessage: 'Czy na pewno chcesz usunąć tego przyjaciela?',
965
+ cannotAddYourself: 'Nie możesz wysłać zaproszenia do siebie',
966
+ bothMustHaveGithub: 'Obaj użytkownicy muszą mieć połączony GitHub, aby zostać przyjaciółmi',
967
+ status: {
968
+ none: 'Nie połączono',
969
+ requested: 'Zaproszenie wysłane',
970
+ pending: 'Zaproszenie oczekuje',
971
+ friend: 'Przyjaciele',
972
+ rejected: 'Odrzucone',
973
+ },
974
+ acceptRequest: 'Zaakceptuj zaproszenie',
975
+ removeFriend: 'Usuń z przyjaciół',
976
+ removeFriendConfirm: ({ name }: { name: string }) => `Czy na pewno chcesz usunąć ${name} z przyjaciół?`,
977
+ requestSentDescription: ({ name }: { name: string }) => `Twoje zaproszenie do grona przyjaciół zostało wysłane do ${name}`,
978
+ requestFriendship: 'Wyślij zaproszenie do znajomych',
979
+ cancelRequest: 'Anuluj zaproszenie do znajomych',
980
+ cancelRequestConfirm: ({ name }: { name: string }) => `Anulować zaproszenie do znajomych wysłane do ${name}?`,
981
+ denyRequest: 'Odrzuć zaproszenie',
982
+ nowFriendsWith: ({ name }: { name: string }) => `Teraz jesteś w gronie znajomych z ${name}`,
983
+ },
984
+
985
+ usage: {
986
+ // Usage panel strings
987
+ today: 'Dzisiaj',
988
+ last7Days: 'Ostatnie 7 dni',
989
+ last30Days: 'Ostatnie 30 dni',
990
+ totalTokens: 'Łącznie tokenów',
991
+ totalCost: 'Całkowity koszt',
992
+ tokens: 'Tokeny',
993
+ cost: 'Koszt',
994
+ usageOverTime: 'Użycie w czasie',
995
+ byModel: 'Według modelu',
996
+ noData: 'Brak danych o użyciu',
997
+ },
998
+
999
+ imageUpload: {
1000
+ permissionTitle: 'Dostęp do biblioteki zdjęć',
1001
+ permissionMessage: 'Zezwól na dostęp do biblioteki zdjęć, aby załączać obrazy do wiadomości.',
1002
+ limitTitle: 'Osiągnięto limit obrazów',
1003
+ limitMessage: ({ max }: { max: number }) => `Możesz dołączyć maksymalnie ${max} obrazów na wiadomość.`,
1004
+ fileTooLargeTitle: 'Plik zbyt duży',
1005
+ fileTooLargeMessage: ({ name, maxMb }: { name: string; maxMb: number }) => `"${name}" przekracza limit ${maxMb}MB i nie został dodany.`,
1006
+ uploadFailedTitle: 'Przesyłanie nieudane',
1007
+ uploadFailedMessage: ({ count }: { count: number }) => count === 1
1008
+ ? 'Nie udało się przesłać jednego zdjęcia i nie zostało wysłane.'
1009
+ : `Nie udało się przesłać ${count} zdjęć i nie zostały wysłane.`,
1010
+ notSupportedTitle: 'Obrazy nieobsługiwane',
1011
+ notSupportedMessage: 'Ten agent nie obsługuje załączników obrazów. Wysłano tylko tekst.',
1012
+ },
1013
+
1014
+ feed: {
1015
+ // Feed notifications for friend requests and acceptances
1016
+ friendRequestFrom: ({ name }: { name: string }) => `${name} wysłał Ci zaproszenie do znajomych`,
1017
+ friendRequestGeneric: 'Nowe zaproszenie do znajomych',
1018
+ friendAccepted: ({ name }: { name: string }) => `Jesteś teraz znajomym z ${name}`,
1019
+ friendAcceptedGeneric: 'Zaproszenie do znajomych zaakceptowane',
1020
+ },
1021
+
1022
+ } as const;
1023
+
1024
+ export type TranslationsPl = typeof pl;