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.
- package/.claude/agents/i18n-translator.md +119 -0
- package/.claude/settings.json +8 -0
- package/.eas/workflows/ota.yaml +9 -0
- package/.eas/workflows/preview.yaml +12 -0
- package/.easignore +12 -0
- package/.github/workflows/eas-build.yml +24 -0
- package/CHANGELOG.md +117 -0
- package/CLAUDE.md +413 -0
- package/GoogleService-Info.plist +30 -0
- package/LICENSE +21 -0
- package/NasTechapp.md +383 -0
- package/README.md +75 -0
- package/Stores.md +85 -0
- package/TERMS.md +83 -0
- package/app.config.js +153 -0
- package/babel.config.js +28 -0
- package/deploy/nastech-app.yaml +51 -0
- package/docs/marketing/README-creators.md +73 -0
- package/eas-build-post-install.sh +11 -0
- package/eas-build-pre-install.sh +27 -0
- package/eas.json +78 -0
- package/google-services.json +67 -0
- package/index.ts +3 -0
- package/logo.png +0 -0
- package/metro.config.js +54 -0
- package/nativewind-env.d.ts +1 -0
- package/package.json +233 -0
- package/patches/.keep +0 -0
- package/plugins/withEinkCompatibility.js +156 -0
- package/public/.well-known/apple-app-site-association +22 -0
- package/public/.well-known/assetlinks.json +12 -0
- package/public/canvaskit.wasm +0 -0
- package/public/favicon-active.ico +0 -0
- package/release-dev.sh +7 -0
- package/release-production.sh +3 -0
- package/release.cjs +160 -0
- package/sources/-session/SessionView.tsx +944 -0
- package/sources/-session/sessionOverlayNav.ts +34 -0
- package/sources/app/(app)/_layout.tsx +321 -0
- package/sources/app/(app)/artifacts/[id].tsx +279 -0
- package/sources/app/(app)/artifacts/edit/[id].tsx +318 -0
- package/sources/app/(app)/artifacts/index.tsx +264 -0
- package/sources/app/(app)/artifacts/new.tsx +219 -0
- package/sources/app/(app)/changelog.tsx +113 -0
- package/sources/app/(app)/dev/colors.tsx +197 -0
- package/sources/app/(app)/dev/device-info.tsx +183 -0
- package/sources/app/(app)/dev/expo-constants.tsx +394 -0
- package/sources/app/(app)/dev/index.tsx +400 -0
- package/sources/app/(app)/dev/input-styles.tsx +1951 -0
- package/sources/app/(app)/dev/inverted-list.tsx +295 -0
- package/sources/app/(app)/dev/list-demo.tsx +125 -0
- package/sources/app/(app)/dev/logs.tsx +160 -0
- package/sources/app/(app)/dev/messages-demo-data.ts +479 -0
- package/sources/app/(app)/dev/messages-demo.tsx +45 -0
- package/sources/app/(app)/dev/modal-demo.tsx +211 -0
- package/sources/app/(app)/dev/multi-text-input.tsx +224 -0
- package/sources/app/(app)/dev/purchases.tsx +228 -0
- package/sources/app/(app)/dev/qr-test.tsx +168 -0
- package/sources/app/(app)/dev/session-composer.tsx +812 -0
- package/sources/app/(app)/dev/shimmer-demo.tsx +275 -0
- package/sources/app/(app)/dev/tests.tsx +203 -0
- package/sources/app/(app)/dev/tools2.tsx +556 -0
- package/sources/app/(app)/dev/typography.tsx +177 -0
- package/sources/app/(app)/dev/unistyles-demo.tsx +376 -0
- package/sources/app/(app)/friends/index.tsx +167 -0
- package/sources/app/(app)/friends/search.tsx +232 -0
- package/sources/app/(app)/inbox/index.tsx +124 -0
- package/sources/app/(app)/index.tsx +264 -0
- package/sources/app/(app)/machine/[id].tsx +646 -0
- package/sources/app/(app)/new/index.tsx +1611 -0
- package/sources/app/(app)/restore/index.tsx +167 -0
- package/sources/app/(app)/restore/manual.tsx +138 -0
- package/sources/app/(app)/server.tsx +234 -0
- package/sources/app/(app)/session/[id]/file.tsx +527 -0
- package/sources/app/(app)/session/[id]/files.tsx +442 -0
- package/sources/app/(app)/session/[id]/info.tsx +655 -0
- package/sources/app/(app)/session/[id]/message/[messageId].tsx +125 -0
- package/sources/app/(app)/session/[id].tsx +10 -0
- package/sources/app/(app)/session/recent.tsx +270 -0
- package/sources/app/(app)/settings/account.tsx +600 -0
- package/sources/app/(app)/settings/agents.tsx +180 -0
- package/sources/app/(app)/settings/appearance.tsx +259 -0
- package/sources/app/(app)/settings/connect/claude.tsx +178 -0
- package/sources/app/(app)/settings/features.tsx +177 -0
- package/sources/app/(app)/settings/index.tsx +3 -0
- package/sources/app/(app)/settings/language.tsx +106 -0
- package/sources/app/(app)/settings/usage.tsx +11 -0
- package/sources/app/(app)/settings/voice/language.tsx +114 -0
- package/sources/app/(app)/settings/voice.tsx +274 -0
- package/sources/app/(app)/terminal/connect.tsx +241 -0
- package/sources/app/(app)/terminal/index.tsx +184 -0
- package/sources/app/(app)/text-selection.tsx +149 -0
- package/sources/app/(app)/user/[id].tsx +314 -0
- package/sources/app/+html.tsx +39 -0
- package/sources/app/_layout.tsx +402 -0
- package/sources/assets/animations/game.json +1 -0
- package/sources/assets/animations/owl.json +1 -0
- package/sources/assets/animations/popcorn.json +1 -0
- package/sources/assets/animations/robot.json +1 -0
- package/sources/assets/animations/sparkles.json +1 -0
- package/sources/assets/animations/stone.json +1 -0
- package/sources/assets/fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/sources/assets/fonts/IBMPlexMono-Italic.ttf +0 -0
- package/sources/assets/fonts/IBMPlexMono-Regular.ttf +0 -0
- package/sources/assets/fonts/IBMPlexMono-SemiBold.ttf +0 -0
- package/sources/assets/fonts/IBMPlexSans-Italic.ttf +0 -0
- package/sources/assets/fonts/IBMPlexSans-Regular.ttf +0 -0
- package/sources/assets/fonts/IBMPlexSans-SemiBold.ttf +0 -0
- package/sources/assets/fonts/SpaceMono-Regular.ttf +0 -0
- package/sources/assets/images/brutalist/Abstract-1.png +0 -0
- package/sources/assets/images/brutalist/Abstract-10.png +0 -0
- package/sources/assets/images/brutalist/Abstract-100.png +0 -0
- package/sources/assets/images/brutalist/Abstract-101.png +0 -0
- package/sources/assets/images/brutalist/Abstract-102.png +0 -0
- package/sources/assets/images/brutalist/Abstract-103.png +0 -0
- package/sources/assets/images/brutalist/Abstract-104.png +0 -0
- package/sources/assets/images/brutalist/Abstract-105.png +0 -0
- package/sources/assets/images/brutalist/Abstract-106.png +0 -0
- package/sources/assets/images/brutalist/Abstract-107.png +0 -0
- package/sources/assets/images/brutalist/Abstract-108.png +0 -0
- package/sources/assets/images/brutalist/Abstract-109.png +0 -0
- package/sources/assets/images/brutalist/Abstract-11.png +0 -0
- package/sources/assets/images/brutalist/Abstract-110.png +0 -0
- package/sources/assets/images/brutalist/Abstract-111.png +0 -0
- package/sources/assets/images/brutalist/Abstract-112.png +0 -0
- package/sources/assets/images/brutalist/Abstract-113.png +0 -0
- package/sources/assets/images/brutalist/Abstract-114.png +0 -0
- package/sources/assets/images/brutalist/Abstract-115.png +0 -0
- package/sources/assets/images/brutalist/Abstract-116.png +0 -0
- package/sources/assets/images/brutalist/Abstract-117.png +0 -0
- package/sources/assets/images/brutalist/Abstract-118.png +0 -0
- package/sources/assets/images/brutalist/Abstract-119.png +0 -0
- package/sources/assets/images/brutalist/Abstract-12.png +0 -0
- package/sources/assets/images/brutalist/Abstract-120.png +0 -0
- package/sources/assets/images/brutalist/Abstract-121.png +0 -0
- package/sources/assets/images/brutalist/Abstract-122.png +0 -0
- package/sources/assets/images/brutalist/Abstract-123.png +0 -0
- package/sources/assets/images/brutalist/Abstract-124.png +0 -0
- package/sources/assets/images/brutalist/Abstract-125.png +0 -0
- package/sources/assets/images/brutalist/Abstract-126.png +0 -0
- package/sources/assets/images/brutalist/Abstract-127.png +0 -0
- package/sources/assets/images/brutalist/Abstract-128.png +0 -0
- package/sources/assets/images/brutalist/Abstract-129.png +0 -0
- package/sources/assets/images/brutalist/Abstract-13.png +0 -0
- package/sources/assets/images/brutalist/Abstract-130.png +0 -0
- package/sources/assets/images/brutalist/Abstract-131.png +0 -0
- package/sources/assets/images/brutalist/Abstract-132.png +0 -0
- package/sources/assets/images/brutalist/Abstract-133.png +0 -0
- package/sources/assets/images/brutalist/Abstract-134.png +0 -0
- package/sources/assets/images/brutalist/Abstract-135.png +0 -0
- package/sources/assets/images/brutalist/Abstract-136.png +0 -0
- package/sources/assets/images/brutalist/Abstract-137.png +0 -0
- package/sources/assets/images/brutalist/Abstract-138.png +0 -0
- package/sources/assets/images/brutalist/Abstract-139.png +0 -0
- package/sources/assets/images/brutalist/Abstract-14.png +0 -0
- package/sources/assets/images/brutalist/Abstract-140.png +0 -0
- package/sources/assets/images/brutalist/Abstract-141.png +0 -0
- package/sources/assets/images/brutalist/Abstract-142.png +0 -0
- package/sources/assets/images/brutalist/Abstract-143.png +0 -0
- package/sources/assets/images/brutalist/Abstract-144.png +0 -0
- package/sources/assets/images/brutalist/Abstract-145.png +0 -0
- package/sources/assets/images/brutalist/Abstract-146.png +0 -0
- package/sources/assets/images/brutalist/Abstract-147.png +0 -0
- package/sources/assets/images/brutalist/Abstract-148.png +0 -0
- package/sources/assets/images/brutalist/Abstract-149.png +0 -0
- package/sources/assets/images/brutalist/Abstract-15.png +0 -0
- package/sources/assets/images/brutalist/Abstract-150.png +0 -0
- package/sources/assets/images/brutalist/Abstract-151.png +0 -0
- package/sources/assets/images/brutalist/Abstract-152.png +0 -0
- package/sources/assets/images/brutalist/Abstract-153.png +0 -0
- package/sources/assets/images/brutalist/Abstract-154.png +0 -0
- package/sources/assets/images/brutalist/Abstract-155.png +0 -0
- package/sources/assets/images/brutalist/Abstract-156.png +0 -0
- package/sources/assets/images/brutalist/Abstract-157.png +0 -0
- package/sources/assets/images/brutalist/Abstract-158.png +0 -0
- package/sources/assets/images/brutalist/Abstract-159.png +0 -0
- package/sources/assets/images/brutalist/Abstract-16.png +0 -0
- package/sources/assets/images/brutalist/Abstract-160.png +0 -0
- package/sources/assets/images/brutalist/Abstract-161.png +0 -0
- package/sources/assets/images/brutalist/Abstract-162.png +0 -0
- package/sources/assets/images/brutalist/Abstract-163.png +0 -0
- package/sources/assets/images/brutalist/Abstract-164.png +0 -0
- package/sources/assets/images/brutalist/Abstract-165.png +0 -0
- package/sources/assets/images/brutalist/Abstract-166.png +0 -0
- package/sources/assets/images/brutalist/Abstract-167.png +0 -0
- package/sources/assets/images/brutalist/Abstract-168.png +0 -0
- package/sources/assets/images/brutalist/Abstract-169.png +0 -0
- package/sources/assets/images/brutalist/Abstract-17.png +0 -0
- package/sources/assets/images/brutalist/Abstract-170.png +0 -0
- package/sources/assets/images/brutalist/Abstract-171.png +0 -0
- package/sources/assets/images/brutalist/Abstract-172.png +0 -0
- package/sources/assets/images/brutalist/Abstract-173.png +0 -0
- package/sources/assets/images/brutalist/Abstract-174.png +0 -0
- package/sources/assets/images/brutalist/Abstract-175.png +0 -0
- package/sources/assets/images/brutalist/Abstract-176.png +0 -0
- package/sources/assets/images/brutalist/Abstract-177.png +0 -0
- package/sources/assets/images/brutalist/Abstract-178.png +0 -0
- package/sources/assets/images/brutalist/Abstract-179.png +0 -0
- package/sources/assets/images/brutalist/Abstract-18.png +0 -0
- package/sources/assets/images/brutalist/Abstract-180.png +0 -0
- package/sources/assets/images/brutalist/Abstract-181.png +0 -0
- package/sources/assets/images/brutalist/Abstract-182.png +0 -0
- package/sources/assets/images/brutalist/Abstract-183.png +0 -0
- package/sources/assets/images/brutalist/Abstract-184.png +0 -0
- package/sources/assets/images/brutalist/Abstract-185.png +0 -0
- package/sources/assets/images/brutalist/Abstract-186.png +0 -0
- package/sources/assets/images/brutalist/Abstract-187.png +0 -0
- package/sources/assets/images/brutalist/Abstract-188.png +0 -0
- package/sources/assets/images/brutalist/Abstract-189.png +0 -0
- package/sources/assets/images/brutalist/Abstract-19.png +0 -0
- package/sources/assets/images/brutalist/Abstract-190.png +0 -0
- package/sources/assets/images/brutalist/Abstract-191.png +0 -0
- package/sources/assets/images/brutalist/Abstract-192.png +0 -0
- package/sources/assets/images/brutalist/Abstract-193.png +0 -0
- package/sources/assets/images/brutalist/Abstract-194.png +0 -0
- package/sources/assets/images/brutalist/Abstract-195.png +0 -0
- package/sources/assets/images/brutalist/Abstract-196.png +0 -0
- package/sources/assets/images/brutalist/Abstract-197.png +0 -0
- package/sources/assets/images/brutalist/Abstract-198.png +0 -0
- package/sources/assets/images/brutalist/Abstract-199.png +0 -0
- package/sources/assets/images/brutalist/Abstract-2.png +0 -0
- package/sources/assets/images/brutalist/Abstract-20.png +0 -0
- package/sources/assets/images/brutalist/Abstract-200.png +0 -0
- package/sources/assets/images/brutalist/Abstract-201.png +0 -0
- package/sources/assets/images/brutalist/Abstract-202.png +0 -0
- package/sources/assets/images/brutalist/Abstract-203.png +0 -0
- package/sources/assets/images/brutalist/Abstract-204.png +0 -0
- package/sources/assets/images/brutalist/Abstract-205.png +0 -0
- package/sources/assets/images/brutalist/Abstract-206.png +0 -0
- package/sources/assets/images/brutalist/Abstract-207.png +0 -0
- package/sources/assets/images/brutalist/Abstract-208.png +0 -0
- package/sources/assets/images/brutalist/Abstract-209.png +0 -0
- package/sources/assets/images/brutalist/Abstract-21.png +0 -0
- package/sources/assets/images/brutalist/Abstract-210.png +0 -0
- package/sources/assets/images/brutalist/Abstract-211.png +0 -0
- package/sources/assets/images/brutalist/Abstract-212.png +0 -0
- package/sources/assets/images/brutalist/Abstract-213.png +0 -0
- package/sources/assets/images/brutalist/Abstract-214.png +0 -0
- package/sources/assets/images/brutalist/Abstract-215.png +0 -0
- package/sources/assets/images/brutalist/Abstract-216.png +0 -0
- package/sources/assets/images/brutalist/Abstract-217.png +0 -0
- package/sources/assets/images/brutalist/Abstract-218.png +0 -0
- package/sources/assets/images/brutalist/Abstract-219.png +0 -0
- package/sources/assets/images/brutalist/Abstract-22.png +0 -0
- package/sources/assets/images/brutalist/Abstract-220.png +0 -0
- package/sources/assets/images/brutalist/Abstract-221.png +0 -0
- package/sources/assets/images/brutalist/Abstract-222.png +0 -0
- package/sources/assets/images/brutalist/Abstract-223.png +0 -0
- package/sources/assets/images/brutalist/Abstract-224.png +0 -0
- package/sources/assets/images/brutalist/Abstract-225.png +0 -0
- package/sources/assets/images/brutalist/Abstract-226.png +0 -0
- package/sources/assets/images/brutalist/Abstract-227.png +0 -0
- package/sources/assets/images/brutalist/Abstract-228.png +0 -0
- package/sources/assets/images/brutalist/Abstract-229.png +0 -0
- package/sources/assets/images/brutalist/Abstract-23.png +0 -0
- package/sources/assets/images/brutalist/Abstract-230.png +0 -0
- package/sources/assets/images/brutalist/Abstract-231.png +0 -0
- package/sources/assets/images/brutalist/Abstract-232.png +0 -0
- package/sources/assets/images/brutalist/Abstract-233.png +0 -0
- package/sources/assets/images/brutalist/Abstract-234.png +0 -0
- package/sources/assets/images/brutalist/Abstract-235.png +0 -0
- package/sources/assets/images/brutalist/Abstract-236.png +0 -0
- package/sources/assets/images/brutalist/Abstract-237.png +0 -0
- package/sources/assets/images/brutalist/Abstract-238.png +0 -0
- package/sources/assets/images/brutalist/Abstract-239.png +0 -0
- package/sources/assets/images/brutalist/Abstract-24.png +0 -0
- package/sources/assets/images/brutalist/Abstract-240.png +0 -0
- package/sources/assets/images/brutalist/Abstract-241.png +0 -0
- package/sources/assets/images/brutalist/Abstract-242.png +0 -0
- package/sources/assets/images/brutalist/Abstract-243.png +0 -0
- package/sources/assets/images/brutalist/Abstract-244.png +0 -0
- package/sources/assets/images/brutalist/Abstract-245.png +0 -0
- package/sources/assets/images/brutalist/Abstract-246.png +0 -0
- package/sources/assets/images/brutalist/Abstract-247.png +0 -0
- package/sources/assets/images/brutalist/Abstract-248.png +0 -0
- package/sources/assets/images/brutalist/Abstract-249.png +0 -0
- package/sources/assets/images/brutalist/Abstract-25.png +0 -0
- package/sources/assets/images/brutalist/Abstract-250.png +0 -0
- package/sources/assets/images/brutalist/Abstract-251.png +0 -0
- package/sources/assets/images/brutalist/Abstract-252.png +0 -0
- package/sources/assets/images/brutalist/Abstract-253.png +0 -0
- package/sources/assets/images/brutalist/Abstract-254.png +0 -0
- package/sources/assets/images/brutalist/Abstract-255.png +0 -0
- package/sources/assets/images/brutalist/Abstract-256.png +0 -0
- package/sources/assets/images/brutalist/Abstract-257.png +0 -0
- package/sources/assets/images/brutalist/Abstract-258.png +0 -0
- package/sources/assets/images/brutalist/Abstract-259.png +0 -0
- package/sources/assets/images/brutalist/Abstract-26.png +0 -0
- package/sources/assets/images/brutalist/Abstract-260.png +0 -0
- package/sources/assets/images/brutalist/Abstract-261.png +0 -0
- package/sources/assets/images/brutalist/Abstract-262.png +0 -0
- package/sources/assets/images/brutalist/Abstract-27.png +0 -0
- package/sources/assets/images/brutalist/Abstract-28.png +0 -0
- package/sources/assets/images/brutalist/Abstract-29.png +0 -0
- package/sources/assets/images/brutalist/Abstract-3.png +0 -0
- package/sources/assets/images/brutalist/Abstract-30.png +0 -0
- package/sources/assets/images/brutalist/Abstract-31.png +0 -0
- package/sources/assets/images/brutalist/Abstract-32.png +0 -0
- package/sources/assets/images/brutalist/Abstract-33.png +0 -0
- package/sources/assets/images/brutalist/Abstract-34.png +0 -0
- package/sources/assets/images/brutalist/Abstract-35.png +0 -0
- package/sources/assets/images/brutalist/Abstract-36.png +0 -0
- package/sources/assets/images/brutalist/Abstract-37.png +0 -0
- package/sources/assets/images/brutalist/Abstract-38.png +0 -0
- package/sources/assets/images/brutalist/Abstract-39.png +0 -0
- package/sources/assets/images/brutalist/Abstract-4.png +0 -0
- package/sources/assets/images/brutalist/Abstract-40.png +0 -0
- package/sources/assets/images/brutalist/Abstract-41.png +0 -0
- package/sources/assets/images/brutalist/Abstract-42.png +0 -0
- package/sources/assets/images/brutalist/Abstract-43.png +0 -0
- package/sources/assets/images/brutalist/Abstract-44.png +0 -0
- package/sources/assets/images/brutalist/Abstract-45.png +0 -0
- package/sources/assets/images/brutalist/Abstract-46.png +0 -0
- package/sources/assets/images/brutalist/Abstract-47.png +0 -0
- package/sources/assets/images/brutalist/Abstract-48.png +0 -0
- package/sources/assets/images/brutalist/Abstract-49.png +0 -0
- package/sources/assets/images/brutalist/Abstract-5.png +0 -0
- package/sources/assets/images/brutalist/Abstract-50.png +0 -0
- package/sources/assets/images/brutalist/Abstract-51.png +0 -0
- package/sources/assets/images/brutalist/Abstract-52.png +0 -0
- package/sources/assets/images/brutalist/Abstract-53.png +0 -0
- package/sources/assets/images/brutalist/Abstract-54.png +0 -0
- package/sources/assets/images/brutalist/Abstract-55.png +0 -0
- package/sources/assets/images/brutalist/Abstract-56.png +0 -0
- package/sources/assets/images/brutalist/Abstract-57.png +0 -0
- package/sources/assets/images/brutalist/Abstract-58.png +0 -0
- package/sources/assets/images/brutalist/Abstract-59.png +0 -0
- package/sources/assets/images/brutalist/Abstract-6.png +0 -0
- package/sources/assets/images/brutalist/Abstract-60.png +0 -0
- package/sources/assets/images/brutalist/Abstract-61.png +0 -0
- package/sources/assets/images/brutalist/Abstract-62.png +0 -0
- package/sources/assets/images/brutalist/Abstract-63.png +0 -0
- package/sources/assets/images/brutalist/Abstract-64.png +0 -0
- package/sources/assets/images/brutalist/Abstract-65.png +0 -0
- package/sources/assets/images/brutalist/Abstract-66.png +0 -0
- package/sources/assets/images/brutalist/Abstract-67.png +0 -0
- package/sources/assets/images/brutalist/Abstract-68.png +0 -0
- package/sources/assets/images/brutalist/Abstract-69.png +0 -0
- package/sources/assets/images/brutalist/Abstract-7.png +0 -0
- package/sources/assets/images/brutalist/Abstract-70.png +0 -0
- package/sources/assets/images/brutalist/Abstract-71.png +0 -0
- package/sources/assets/images/brutalist/Abstract-72.png +0 -0
- package/sources/assets/images/brutalist/Abstract-73.png +0 -0
- package/sources/assets/images/brutalist/Abstract-74.png +0 -0
- package/sources/assets/images/brutalist/Abstract-75.png +0 -0
- package/sources/assets/images/brutalist/Abstract-76.png +0 -0
- package/sources/assets/images/brutalist/Abstract-77.png +0 -0
- package/sources/assets/images/brutalist/Abstract-78.png +0 -0
- package/sources/assets/images/brutalist/Abstract-79.png +0 -0
- package/sources/assets/images/brutalist/Abstract-8.png +0 -0
- package/sources/assets/images/brutalist/Abstract-80.png +0 -0
- package/sources/assets/images/brutalist/Abstract-81.png +0 -0
- package/sources/assets/images/brutalist/Abstract-82.png +0 -0
- package/sources/assets/images/brutalist/Abstract-83.png +0 -0
- package/sources/assets/images/brutalist/Abstract-84.png +0 -0
- package/sources/assets/images/brutalist/Abstract-85.png +0 -0
- package/sources/assets/images/brutalist/Abstract-86.png +0 -0
- package/sources/assets/images/brutalist/Abstract-87.png +0 -0
- package/sources/assets/images/brutalist/Abstract-88.png +0 -0
- package/sources/assets/images/brutalist/Abstract-89.png +0 -0
- package/sources/assets/images/brutalist/Abstract-9.png +0 -0
- package/sources/assets/images/brutalist/Abstract-90.png +0 -0
- package/sources/assets/images/brutalist/Abstract-91.png +0 -0
- package/sources/assets/images/brutalist/Abstract-92.png +0 -0
- package/sources/assets/images/brutalist/Abstract-93.png +0 -0
- package/sources/assets/images/brutalist/Abstract-94.png +0 -0
- package/sources/assets/images/brutalist/Abstract-95.png +0 -0
- package/sources/assets/images/brutalist/Abstract-96.png +0 -0
- package/sources/assets/images/brutalist/Abstract-97.png +0 -0
- package/sources/assets/images/brutalist/Abstract-98.png +0 -0
- package/sources/assets/images/brutalist/Abstract-99.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-1.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-10.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-11.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-12.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-13.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-14.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-15.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-16.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-17.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-18.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-19.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-2.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-20.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-21.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-22.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-23.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-24.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-25.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-26.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-27.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-28.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-29.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-3.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-30.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-31.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-32.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-33.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-34.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-35.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-36.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-37.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-38.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-39.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-4.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-40.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-5.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-6.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-7.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-8.png +0 -0
- package/sources/assets/images/brutalist/Bauhaus-9.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-1.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-10.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-100.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-101.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-102.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-103.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-104.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-105.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-106.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-107.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-108.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-109.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-11.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-110.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-111.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-112.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-113.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-114.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-115.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-116.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-117.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-118.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-12.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-13.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-14.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-15.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-16.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-17.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-18.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-19.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-2.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-20.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-21.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-22.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-23.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-24.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-25.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-26.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-27.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-28.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-29.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-3.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-30.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-31.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-32.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-33.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-34.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-35.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-36.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-37.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-38.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-39.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-4.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-40.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-41.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-42.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-43.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-44.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-45.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-46.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-47.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-48.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-49.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-5.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-50.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-51.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-52.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-53.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-54.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-55.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-56.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-57.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-58.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-59.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-6.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-60.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-61.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-62.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-63.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-64.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-65.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-66.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-67.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-68.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-69.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-7.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-70.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-71.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-72.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-73.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-74.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-75.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-76.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-77.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-78.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-79.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-8.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-80.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-81.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-82.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-83.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-84.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-85.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-86.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-87.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-88.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-89.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-9.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-90.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-91.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-92.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-93.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-94.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-95.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-96.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-97.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-98.png +0 -0
- package/sources/assets/images/brutalist/Brutalism-99.png +0 -0
- package/sources/assets/images/favicon-active.png +0 -0
- package/sources/assets/images/favicon.png +0 -0
- package/sources/assets/images/gradients/01.png +0 -0
- package/sources/assets/images/gradients/02.png +0 -0
- package/sources/assets/images/gradients/03.png +0 -0
- package/sources/assets/images/gradients/04.png +0 -0
- package/sources/assets/images/gradients/05.png +0 -0
- package/sources/assets/images/gradients/06.png +0 -0
- package/sources/assets/images/gradients/07.png +0 -0
- package/sources/assets/images/gradients/08.png +0 -0
- package/sources/assets/images/gradients/09.png +0 -0
- package/sources/assets/images/gradients/10.png +0 -0
- package/sources/assets/images/gradients/100.png +0 -0
- package/sources/assets/images/gradients/11.png +0 -0
- package/sources/assets/images/gradients/12.png +0 -0
- package/sources/assets/images/gradients/13.png +0 -0
- package/sources/assets/images/gradients/14.png +0 -0
- package/sources/assets/images/gradients/15.png +0 -0
- package/sources/assets/images/gradients/16.png +0 -0
- package/sources/assets/images/gradients/17.png +0 -0
- package/sources/assets/images/gradients/18.png +0 -0
- package/sources/assets/images/gradients/19.png +0 -0
- package/sources/assets/images/gradients/20.png +0 -0
- package/sources/assets/images/gradients/21.png +0 -0
- package/sources/assets/images/gradients/22.png +0 -0
- package/sources/assets/images/gradients/23.png +0 -0
- package/sources/assets/images/gradients/24.png +0 -0
- package/sources/assets/images/gradients/25.png +0 -0
- package/sources/assets/images/gradients/26.png +0 -0
- package/sources/assets/images/gradients/27.png +0 -0
- package/sources/assets/images/gradients/28.png +0 -0
- package/sources/assets/images/gradients/29.png +0 -0
- package/sources/assets/images/gradients/30.png +0 -0
- package/sources/assets/images/gradients/31.png +0 -0
- package/sources/assets/images/gradients/32.png +0 -0
- package/sources/assets/images/gradients/33.png +0 -0
- package/sources/assets/images/gradients/34.png +0 -0
- package/sources/assets/images/gradients/35.png +0 -0
- package/sources/assets/images/gradients/36.png +0 -0
- package/sources/assets/images/gradients/37.png +0 -0
- package/sources/assets/images/gradients/38.png +0 -0
- package/sources/assets/images/gradients/39.png +0 -0
- package/sources/assets/images/gradients/40.png +0 -0
- package/sources/assets/images/gradients/41.png +0 -0
- package/sources/assets/images/gradients/42.png +0 -0
- package/sources/assets/images/gradients/43.png +0 -0
- package/sources/assets/images/gradients/44.png +0 -0
- package/sources/assets/images/gradients/45.png +0 -0
- package/sources/assets/images/gradients/46.png +0 -0
- package/sources/assets/images/gradients/47.png +0 -0
- package/sources/assets/images/gradients/48.png +0 -0
- package/sources/assets/images/gradients/49.png +0 -0
- package/sources/assets/images/gradients/50.png +0 -0
- package/sources/assets/images/gradients/51.png +0 -0
- package/sources/assets/images/gradients/52.png +0 -0
- package/sources/assets/images/gradients/53.png +0 -0
- package/sources/assets/images/gradients/54.png +0 -0
- package/sources/assets/images/gradients/55.png +0 -0
- package/sources/assets/images/gradients/56.png +0 -0
- package/sources/assets/images/gradients/57.png +0 -0
- package/sources/assets/images/gradients/58.png +0 -0
- package/sources/assets/images/gradients/59.png +0 -0
- package/sources/assets/images/gradients/60.png +0 -0
- package/sources/assets/images/gradients/61.png +0 -0
- package/sources/assets/images/gradients/62.png +0 -0
- package/sources/assets/images/gradients/63.png +0 -0
- package/sources/assets/images/gradients/64.png +0 -0
- package/sources/assets/images/gradients/65.png +0 -0
- package/sources/assets/images/gradients/66.png +0 -0
- package/sources/assets/images/gradients/67.png +0 -0
- package/sources/assets/images/gradients/68.png +0 -0
- package/sources/assets/images/gradients/69.png +0 -0
- package/sources/assets/images/gradients/70.png +0 -0
- package/sources/assets/images/gradients/71.png +0 -0
- package/sources/assets/images/gradients/72.png +0 -0
- package/sources/assets/images/gradients/73.png +0 -0
- package/sources/assets/images/gradients/74.png +0 -0
- package/sources/assets/images/gradients/75.png +0 -0
- package/sources/assets/images/gradients/76.png +0 -0
- package/sources/assets/images/gradients/77.png +0 -0
- package/sources/assets/images/gradients/78.png +0 -0
- package/sources/assets/images/gradients/79.png +0 -0
- package/sources/assets/images/gradients/80.png +0 -0
- package/sources/assets/images/gradients/81.png +0 -0
- package/sources/assets/images/gradients/82.png +0 -0
- package/sources/assets/images/gradients/83.png +0 -0
- package/sources/assets/images/gradients/84.png +0 -0
- package/sources/assets/images/gradients/85.png +0 -0
- package/sources/assets/images/gradients/86.png +0 -0
- package/sources/assets/images/gradients/87.png +0 -0
- package/sources/assets/images/gradients/88.png +0 -0
- package/sources/assets/images/gradients/89.png +0 -0
- package/sources/assets/images/gradients/90.png +0 -0
- package/sources/assets/images/gradients/91.png +0 -0
- package/sources/assets/images/gradients/92.png +0 -0
- package/sources/assets/images/gradients/93.png +0 -0
- package/sources/assets/images/gradients/94.png +0 -0
- package/sources/assets/images/gradients/95.png +0 -0
- package/sources/assets/images/gradients/96.png +0 -0
- package/sources/assets/images/gradients/97.png +0 -0
- package/sources/assets/images/gradients/98.png +0 -0
- package/sources/assets/images/gradients/99.png +0 -0
- package/sources/assets/images/icon-adaptive.png +0 -0
- package/sources/assets/images/icon-claude.png +0 -0
- package/sources/assets/images/icon-claude@2x.png +0 -0
- package/sources/assets/images/icon-claude@3x.png +0 -0
- package/sources/assets/images/icon-gemini.png +0 -0
- package/sources/assets/images/icon-gemini@2x.png +0 -0
- package/sources/assets/images/icon-gemini@3x.png +0 -0
- package/sources/assets/images/icon-gpt.png +0 -0
- package/sources/assets/images/icon-gpt@2x.png +0 -0
- package/sources/assets/images/icon-gpt@3x.png +0 -0
- package/sources/assets/images/icon-monochrome.png +0 -0
- package/sources/assets/images/icon-notification.png +0 -0
- package/sources/assets/images/icon-openclaw.png +0 -0
- package/sources/assets/images/icon-openclaw@2x.png +0 -0
- package/sources/assets/images/icon-openclaw@3x.png +0 -0
- package/sources/assets/images/icon-tauri.png +0 -0
- package/sources/assets/images/icon-voice-white.png +0 -0
- package/sources/assets/images/icon-voice.png +0 -0
- package/sources/assets/images/icon-voice@2x.png +0 -0
- package/sources/assets/images/icon-voice@3x.png +0 -0
- package/sources/assets/images/icon.png +0 -0
- package/sources/assets/images/logo-black.png +0 -0
- package/sources/assets/images/logo-white.png +0 -0
- package/sources/assets/images/logotype-dark.png +0 -0
- package/sources/assets/images/logotype-dark@2x.png +0 -0
- package/sources/assets/images/logotype-dark@3x.png +0 -0
- package/sources/assets/images/logotype-light.png +0 -0
- package/sources/assets/images/logotype-light@2x.png +0 -0
- package/sources/assets/images/logotype-light@3x.png +0 -0
- package/sources/assets/images/logotype.png +0 -0
- package/sources/assets/images/logotype@2x.png +0 -0
- package/sources/assets/images/logotype@3x.png +0 -0
- package/sources/assets/images/splash-android-dark.png +0 -0
- package/sources/assets/images/splash-android-light.png +0 -0
- package/sources/assets/images/transparent.png +0 -0
- package/sources/assets/images/zen-icon.png +0 -0
- package/sources/auth/AuthContext.tsx +100 -0
- package/sources/auth/authAccountApprove.ts +2 -0
- package/sources/auth/authApprove.ts +2 -0
- package/sources/auth/authChallenge.ts +8 -0
- package/sources/auth/authGetToken.ts +4 -0
- package/sources/auth/authQRStart.ts +17 -0
- package/sources/auth/authQRWait.ts +13 -0
- package/sources/auth/secretKeyBackup.spec.ts +465 -0
- package/sources/auth/secretKeyBackup.ts +179 -0
- package/sources/auth/tokenStorage.ts +27 -0
- package/sources/changelog/changelog.json +60 -0
- package/sources/changelog/index.ts +3 -0
- package/sources/changelog/parser.ts +23 -0
- package/sources/changelog/storage.ts +17 -0
- package/sources/changelog/types.ts +10 -0
- package/sources/components/ActiveSessionsGroupCompact.tsx +567 -0
- package/sources/components/AgentContentView.ios.tsx +70 -0
- package/sources/components/AgentContentView.tsx +48 -0
- package/sources/components/AgentInput.tsx +1468 -0
- package/sources/components/AgentInputAttachmentStrip.tsx +122 -0
- package/sources/components/AgentInputAutocomplete.tsx +96 -0
- package/sources/components/AgentInputSuggestionView.tsx +106 -0
- package/sources/components/AllFilesDiffView.tsx +515 -0
- package/sources/components/Avatar.tsx +149 -0
- package/sources/components/AvatarBrutalist.tsx +501 -0
- package/sources/components/AvatarGradient.tsx +147 -0
- package/sources/components/AvatarSkia.tsx +111 -0
- package/sources/components/AvatarSkia.web.tsx +113 -0
- package/sources/components/ChatFooter.tsx +50 -0
- package/sources/components/ChatHeaderView.tsx +180 -0
- package/sources/components/ChatList.tsx +283 -0
- package/sources/components/CodeEditor.tsx +22 -0
- package/sources/components/CodeEditor.web.tsx +180 -0
- package/sources/components/CodeView.tsx +33 -0
- package/sources/components/CommandPalette/CommandPalette.tsx +72 -0
- package/sources/components/CommandPalette/CommandPaletteInput.tsx +65 -0
- package/sources/components/CommandPalette/CommandPaletteItem.tsx +141 -0
- package/sources/components/CommandPalette/CommandPaletteModal.tsx +148 -0
- package/sources/components/CommandPalette/CommandPaletteProvider.tsx +141 -0
- package/sources/components/CommandPalette/CommandPaletteResults.tsx +129 -0
- package/sources/components/CommandPalette/index.ts +3 -0
- package/sources/components/CommandPalette/types.ts +15 -0
- package/sources/components/CommandPalette/useCommandPalette.ts +107 -0
- package/sources/components/CommandView.tsx +135 -0
- package/sources/components/CompactGitStatus.tsx +88 -0
- package/sources/components/ConnectButton.tsx +117 -0
- package/sources/components/Deferred.tsx +18 -0
- package/sources/components/DuplicateSheet.tsx +295 -0
- package/sources/components/EmptyMainScreen.tsx +171 -0
- package/sources/components/EmptyMessages.tsx +123 -0
- package/sources/components/EmptySessionsTablet.tsx +111 -0
- package/sources/components/ExternalLink.tsx +22 -0
- package/sources/components/FAB.tsx +53 -0
- package/sources/components/FABWide.tsx +59 -0
- package/sources/components/FeedItemCard.tsx +98 -0
- package/sources/components/FileIcon.tsx +63 -0
- package/sources/components/FileViewPanel.tsx +673 -0
- package/sources/components/FilesSidebar.tsx +739 -0
- package/sources/components/FloatingOverlay.tsx +48 -0
- package/sources/components/GitStatusBadge.tsx +82 -0
- package/sources/components/HeaderLogo.tsx +28 -0
- package/sources/components/HomeHeader.tsx +243 -0
- package/sources/components/HorizontalScrollView.tsx +88 -0
- package/sources/components/InboxView.tsx +260 -0
- package/sources/components/InlineFileDiff.tsx +277 -0
- package/sources/components/Item.tsx +315 -0
- package/sources/components/ItemGroup.tsx +147 -0
- package/sources/components/ItemList.tsx +102 -0
- package/sources/components/MainView.tsx +324 -0
- package/sources/components/MessageView.tsx +299 -0
- package/sources/components/MultiTextInput.tsx +285 -0
- package/sources/components/MultiTextInput.web.tsx +220 -0
- package/sources/components/OAuthView.tsx +374 -0
- package/sources/components/PermissionModeSelector.tsx +68 -0
- package/sources/components/PlaceholderContainerView.tsx +47 -0
- package/sources/components/PlusPlus.tsx +34 -0
- package/sources/components/PlusPlus.web.tsx +34 -0
- package/sources/components/ProjectGitStatus.tsx +102 -0
- package/sources/components/RoundButton.tsx +130 -0
- package/sources/components/SearchableListSelector.tsx +675 -0
- package/sources/components/SessionActionsNativeMenu.android.tsx +58 -0
- package/sources/components/SessionActionsNativeMenu.ios.tsx +55 -0
- package/sources/components/SessionActionsNativeMenu.tsx +20 -0
- package/sources/components/SessionActionsNativeMenu.web.tsx +13 -0
- package/sources/components/SessionActionsPopover.tsx +240 -0
- package/sources/components/SessionsList.tsx +471 -0
- package/sources/components/SessionsListWrapper.tsx +72 -0
- package/sources/components/SettingsView.tsx +470 -0
- package/sources/components/SettingsViewWrapper.tsx +21 -0
- package/sources/components/Shaker.tsx +42 -0
- package/sources/components/Shaker.web.tsx +46 -0
- package/sources/components/ShimmerView.tsx +106 -0
- package/sources/components/SidebarNavigator.tsx +218 -0
- package/sources/components/SidebarView.tsx +104 -0
- package/sources/components/SimpleSyntaxHighlighter.tsx +322 -0
- package/sources/components/StatusBarProvider.tsx +12 -0
- package/sources/components/StatusDot.tsx +49 -0
- package/sources/components/StyledText.tsx +35 -0
- package/sources/components/Switch.tsx +20 -0
- package/sources/components/TabBar.tsx +140 -0
- package/sources/components/ToolGroupView.tsx +101 -0
- package/sources/components/TransitionStack.tsx +14 -0
- package/sources/components/UpdateBanner.tsx +74 -0
- package/sources/components/UserCard.tsx +41 -0
- package/sources/components/UserSearchResult.tsx +129 -0
- package/sources/components/VoiceAssistantStatusBar.tsx +260 -0
- package/sources/components/VoiceBars.tsx +95 -0
- package/sources/components/autocomplete/applySuggestion.test.ts +194 -0
- package/sources/components/autocomplete/applySuggestion.ts +61 -0
- package/sources/components/autocomplete/findActiveWord.test.ts +365 -0
- package/sources/components/autocomplete/findActiveWord.ts +207 -0
- package/sources/components/autocomplete/suggestions.ts +79 -0
- package/sources/components/autocomplete/useActiveSuggestions.ts +130 -0
- package/sources/components/autocomplete/useActiveWord.ts +19 -0
- package/sources/components/diff/DiffView.tsx +188 -0
- package/sources/components/diff/PierreDiffView.tsx +253 -0
- package/sources/components/diff/calculateDiff.ts +317 -0
- package/sources/components/entityColor.ts +51 -0
- package/sources/components/haptics.ts +9 -0
- package/sources/components/haptics.web.ts +7 -0
- package/sources/components/layout.ts +44 -0
- package/sources/components/markdown/MarkdownView.tsx +670 -0
- package/sources/components/markdown/MermaidRenderer.tsx +233 -0
- package/sources/components/markdown/linkUtils.test.ts +17 -0
- package/sources/components/markdown/linkUtils.ts +5 -0
- package/sources/components/markdown/parseMarkdown.test.ts +64 -0
- package/sources/components/markdown/parseMarkdown.ts +46 -0
- package/sources/components/markdown/parseMarkdownBlock.test.ts +108 -0
- package/sources/components/markdown/parseMarkdownBlock.ts +200 -0
- package/sources/components/markdown/parseMarkdownSpans.ts +88 -0
- package/sources/components/modelModeOptions.test.ts +114 -0
- package/sources/components/modelModeOptions.ts +257 -0
- package/sources/components/navigation/Header.tsx +252 -0
- package/sources/components/parseLocalCommandMessage.spec.ts +96 -0
- package/sources/components/parseLocalCommandMessage.ts +97 -0
- package/sources/components/qr/QRCode.tsx +178 -0
- package/sources/components/qr/QRCode.web.tsx +229 -0
- package/sources/components/qr/index.ts +2 -0
- package/sources/components/qr/qrMatrix.ts +48 -0
- package/sources/components/tools/PermissionFooter.tsx +527 -0
- package/sources/components/tools/ToolDiffView.tsx +60 -0
- package/sources/components/tools/ToolError.tsx +49 -0
- package/sources/components/tools/ToolFullView.tsx +193 -0
- package/sources/components/tools/ToolHeader.tsx +93 -0
- package/sources/components/tools/ToolSectionView.tsx +42 -0
- package/sources/components/tools/ToolStatusIndicator.tsx +36 -0
- package/sources/components/tools/ToolView.tsx +340 -0
- package/sources/components/tools/knownTools.tsx +957 -0
- package/sources/components/tools/views/AskUserQuestionView.tsx +357 -0
- package/sources/components/tools/views/BashView.tsx +47 -0
- package/sources/components/tools/views/BashViewFull.tsx +81 -0
- package/sources/components/tools/views/CodexBashView.tsx +126 -0
- package/sources/components/tools/views/CodexDiffView.tsx +79 -0
- package/sources/components/tools/views/CodexPatchView.tsx +186 -0
- package/sources/components/tools/views/EditView.tsx +33 -0
- package/sources/components/tools/views/EditViewFull.tsx +38 -0
- package/sources/components/tools/views/ExitPlanToolView.tsx +21 -0
- package/sources/components/tools/views/FileView.tsx +118 -0
- package/sources/components/tools/views/GeminiEditView.tsx +75 -0
- package/sources/components/tools/views/GeminiExecuteView.tsx +92 -0
- package/sources/components/tools/views/MCPToolView.tsx +31 -0
- package/sources/components/tools/views/MultiEditView.tsx +41 -0
- package/sources/components/tools/views/MultiEditViewFull.tsx +84 -0
- package/sources/components/tools/views/TaskView.tsx +129 -0
- package/sources/components/tools/views/TodoView.tsx +90 -0
- package/sources/components/tools/views/WriteView.tsx +29 -0
- package/sources/components/tools/views/_all.tsx +88 -0
- package/sources/components/usage/UsageBar.tsx +80 -0
- package/sources/components/usage/UsageChart.tsx +164 -0
- package/sources/components/usage/UsagePanel.tsx +283 -0
- package/sources/components/web/FaviconPermissionIndicator.tsx +44 -0
- package/sources/config.ts +3 -0
- package/sources/constants/Languages.ts +116 -0
- package/sources/constants/Typography.ts +116 -0
- package/sources/dev/testRunner.ts +277 -0
- package/sources/docs/autocomplete-text-manipulation.md +224 -0
- package/sources/encryption/aes.appspec.ts +25 -0
- package/sources/encryption/aes.ts +21 -0
- package/sources/encryption/aes.web.test.ts +73 -0
- package/sources/encryption/aes.web.ts +79 -0
- package/sources/encryption/base64.appspec.ts +240 -0
- package/sources/encryption/base64.native.ts +12 -0
- package/sources/encryption/base64.ts +46 -0
- package/sources/encryption/blob.test.ts +120 -0
- package/sources/encryption/blob.ts +58 -0
- package/sources/encryption/deriveKey.appspec.ts +72 -0
- package/sources/encryption/deriveKey.ts +46 -0
- package/sources/encryption/hex.ts +17 -0
- package/sources/encryption/hmac_sha512.appspec.ts +40 -0
- package/sources/encryption/hmac_sha512.ts +42 -0
- package/sources/encryption/libsodium.lib.ts +2 -0
- package/sources/encryption/libsodium.lib.web.ts +2 -0
- package/sources/encryption/libsodium.ts +58 -0
- package/sources/encryption/text.test.ts +61 -0
- package/sources/encryption/text.ts +11 -0
- package/sources/hooks/useAsyncCommand.ts +25 -0
- package/sources/hooks/useAttachmentImage.ts +134 -0
- package/sources/hooks/useAutocomplete.ts +69 -0
- package/sources/hooks/useAutocompleteSession.ts +53 -0
- package/sources/hooks/useChangelog.ts +45 -0
- package/sources/hooks/useCheckCameraPermissions.ts +25 -0
- package/sources/hooks/useConnectAccount.ts +107 -0
- package/sources/hooks/useConnectTerminal.ts +112 -0
- package/sources/hooks/useDemoMessages.ts +48 -0
- package/sources/hooks/useDraft.ts +120 -0
- package/sources/hooks/useElapsedTime.ts +36 -0
- package/sources/hooks/useGetPath.ts +13 -0
- package/sources/hooks/useGitStatusFiles.ts +45 -0
- package/sources/hooks/useGlobalKeyboard.ts +29 -0
- package/sources/hooks/useGroupedMessages.ts +149 -0
- package/sources/hooks/useImagePicker.ts +135 -0
- package/sources/hooks/useInboxHasContent.ts +19 -0
- package/sources/hooks/useMultiClick.ts +56 -0
- package/sources/hooks/useNasTechAction.ts +45 -0
- package/sources/hooks/useNativeUpdate.ts +10 -0
- package/sources/hooks/useNavigateToSession.ts +20 -0
- package/sources/hooks/useNewSessionDraft.ts +70 -0
- package/sources/hooks/usePrefetchFileContents.ts +162 -0
- package/sources/hooks/useSearch.ts +120 -0
- package/sources/hooks/useSessionQuickActions.ts +325 -0
- package/sources/hooks/useTauriDrag.ts +76 -0
- package/sources/hooks/useTauriZoom.ts +67 -0
- package/sources/hooks/useUpdates.ts +84 -0
- package/sources/hooks/useVisibleSessionListViewData.ts +65 -0
- package/sources/hooks/useWorktreeCleanup.ts +69 -0
- package/sources/log.ts +108 -0
- package/sources/modal/ModalManager.ts +203 -0
- package/sources/modal/ModalProvider.tsx +103 -0
- package/sources/modal/components/BaseModal.tsx +122 -0
- package/sources/modal/components/CustomModal.tsx +42 -0
- package/sources/modal/components/WebAlertModal.tsx +139 -0
- package/sources/modal/components/WebPromptModal.tsx +185 -0
- package/sources/modal/index.ts +3 -0
- package/sources/modal/types.ts +79 -0
- package/sources/nastech-wire/index.ts +10 -0
- package/sources/nastech-wire/legacyProtocol.ts +27 -0
- package/sources/nastech-wire/messageMeta.ts +14 -0
- package/sources/nastech-wire/messages.ts +113 -0
- package/sources/nastech-wire/sessionProtocol.ts +134 -0
- package/sources/nastech-wire/voice.ts +34 -0
- package/sources/polyfills/screenOrientation.ts +33 -0
- package/sources/realtime/RealtimeProvider.tsx +20 -0
- package/sources/realtime/RealtimeProvider.web.tsx +15 -0
- package/sources/realtime/RealtimeSession.ts +200 -0
- package/sources/realtime/RealtimeVoiceSession.tsx +211 -0
- package/sources/realtime/RealtimeVoiceSession.web.tsx +209 -0
- package/sources/realtime/hooks/contextFormatters.ts +127 -0
- package/sources/realtime/hooks/voiceHooks.ts +232 -0
- package/sources/realtime/realtimeClientTools.ts +94 -0
- package/sources/realtime/types.ts +19 -0
- package/sources/realtime/voiceConfig.ts +31 -0
- package/sources/realtime/voiceExperiment.ts +91 -0
- package/sources/realtime/voiceSystemPrompt.ts +75 -0
- package/sources/scripts/compareTranslations.ts +217 -0
- package/sources/scripts/parseChangelog.ts +87 -0
- package/sources/sync/__testdata__/trace_0.json +3986 -0
- package/sources/sync/__testdata__/trace_1.json +1391 -0
- package/sources/sync/__testdata__/trace_2.json +182 -0
- package/sources/sync/agentDefaults.ts +108 -0
- package/sources/sync/apiArtifacts.ts +143 -0
- package/sources/sync/apiAttachments.ts +217 -0
- package/sources/sync/apiFeed.ts +60 -0
- package/sources/sync/apiFriends.ts +217 -0
- package/sources/sync/apiGithub.spec.ts +97 -0
- package/sources/sync/apiGithub.ts +103 -0
- package/sources/sync/apiKv.ts +270 -0
- package/sources/sync/apiPush.ts +83 -0
- package/sources/sync/apiServices.ts +64 -0
- package/sources/sync/apiSocket.ts +290 -0
- package/sources/sync/apiTypes.spec.ts +23 -0
- package/sources/sync/apiTypes.ts +213 -0
- package/sources/sync/apiUsage.ts +130 -0
- package/sources/sync/apiVoice.ts +57 -0
- package/sources/sync/appConfig.ts +95 -0
- package/sources/sync/artifactTypes.ts +85 -0
- package/sources/sync/attachmentTypes.ts +28 -0
- package/sources/sync/encryption/artifactEncryption.ts +83 -0
- package/sources/sync/encryption/encryption.ts +220 -0
- package/sources/sync/encryption/encryptionCache.ts +248 -0
- package/sources/sync/encryption/encryptor.appspec.ts +409 -0
- package/sources/sync/encryption/encryptor.ts +126 -0
- package/sources/sync/encryption/machineEncryption.ts +122 -0
- package/sources/sync/encryption/sessionEncryption.ts +207 -0
- package/sources/sync/feedTypes.ts +43 -0
- package/sources/sync/friendTypes.ts +92 -0
- package/sources/sync/git-parsers/LineParser.ts +62 -0
- package/sources/sync/git-parsers/parseBranch.ts +97 -0
- package/sources/sync/git-parsers/parseDiff.ts +180 -0
- package/sources/sync/git-parsers/parseStatus.ts +162 -0
- package/sources/sync/git-parsers/parseStatusV2.ts +307 -0
- package/sources/sync/gitStatusFiles.ts +185 -0
- package/sources/sync/gitStatusSync.ts +282 -0
- package/sources/sync/localSettings.ts +67 -0
- package/sources/sync/messageMeta.test.ts +87 -0
- package/sources/sync/messageMeta.ts +36 -0
- package/sources/sync/modeHacks.test.ts +29 -0
- package/sources/sync/modeHacks.ts +22 -0
- package/sources/sync/nastechApi.ts +124 -0
- package/sources/sync/ops.ts +776 -0
- package/sources/sync/persistence.ts +322 -0
- package/sources/sync/profile.ts +95 -0
- package/sources/sync/projectFiles.ts +54 -0
- package/sources/sync/prompt/systemPrompt.ts +20 -0
- package/sources/sync/purchases.ts +67 -0
- package/sources/sync/pushRegistration.ts +229 -0
- package/sources/sync/reducer/activityUpdateAccumulator.test.ts +492 -0
- package/sources/sync/reducer/activityUpdateAccumulator.ts +96 -0
- package/sources/sync/reducer/messageToEvent.ts +85 -0
- package/sources/sync/reducer/phase0-skipping.spec.ts +206 -0
- package/sources/sync/reducer/reducer.spec.ts +3169 -0
- package/sources/sync/reducer/reducer.ts +1214 -0
- package/sources/sync/reducer/reducerTracer.spec.ts +502 -0
- package/sources/sync/reducer/reducerTracer.ts +310 -0
- package/sources/sync/revenueCat/index.ts +21 -0
- package/sources/sync/revenueCat/revenueCat.ts +215 -0
- package/sources/sync/revenueCat/revenueCat.web.ts +238 -0
- package/sources/sync/revenueCat/types.ts +82 -0
- package/sources/sync/serverConfig.ts +72 -0
- package/sources/sync/settings.spec.ts +456 -0
- package/sources/sync/settings.ts +186 -0
- package/sources/sync/storage.ts +1653 -0
- package/sources/sync/storageTypes.spec.ts +24 -0
- package/sources/sync/storageTypes.ts +215 -0
- package/sources/sync/suggestionCommands.ts +149 -0
- package/sources/sync/suggestionFile.ts +206 -0
- package/sources/sync/sync.ts +2555 -0
- package/sources/sync/typesMessage.ts +69 -0
- package/sources/sync/typesMessageMeta.test.ts +14 -0
- package/sources/sync/typesMessageMeta.ts +17 -0
- package/sources/sync/typesRaw.spec.ts +2010 -0
- package/sources/sync/typesRaw.ts +1183 -0
- package/sources/sync/uploadFormFile.ts +29 -0
- package/sources/sync/uploadFormFile.web.ts +14 -0
- package/sources/sync/webTabTitle.ts +58 -0
- package/sources/text/README.md +223 -0
- package/sources/text/_all.ts +104 -0
- package/sources/text/_default.ts +1015 -0
- package/sources/text/index.ts +215 -0
- package/sources/text/translations/ca.ts +993 -0
- package/sources/text/translations/en.ts +1009 -0
- package/sources/text/translations/es.ts +995 -0
- package/sources/text/translations/it.ts +992 -0
- package/sources/text/translations/ja.ts +993 -0
- package/sources/text/translations/pl.ts +1024 -0
- package/sources/text/translations/pt.ts +992 -0
- package/sources/text/translations/ru.ts +1023 -0
- package/sources/text/translations/zh-Hans.ts +992 -0
- package/sources/text/translations/zh-Hant.ts +991 -0
- package/sources/theme.css +72 -0
- package/sources/theme.dark.json +31 -0
- package/sources/theme.figma.json +457 -0
- package/sources/theme.gen.ts +10 -0
- package/sources/theme.light.json +31 -0
- package/sources/theme.ts +452 -0
- package/sources/track/index.ts +171 -0
- package/sources/track/tracking.ts +12 -0
- package/sources/track/useTrackScreens.ts +10 -0
- package/sources/types/react-native-webrtc-web-shim.d.ts +6 -0
- package/sources/unistyles.ts +97 -0
- package/sources/utils/codexUnifiedDiff.spec.ts +43 -0
- package/sources/utils/codexUnifiedDiff.ts +70 -0
- package/sources/utils/consoleLogging.ts +145 -0
- package/sources/utils/copySessionMetadataToClipboard.ts +53 -0
- package/sources/utils/debounce.test.ts +646 -0
- package/sources/utils/debounce.ts +122 -0
- package/sources/utils/deviceCalculations.test.ts +318 -0
- package/sources/utils/deviceCalculations.ts +87 -0
- package/sources/utils/errors.ts +10 -0
- package/sources/utils/formatPermissionParams.ts +23 -0
- package/sources/utils/isTauri.ts +7 -0
- package/sources/utils/loadSkia.ts +3 -0
- package/sources/utils/loadSkia.web.ts +5 -0
- package/sources/utils/lock.ts +40 -0
- package/sources/utils/machineUtils.ts +6 -0
- package/sources/utils/messageUtils.ts +254 -0
- package/sources/utils/microphonePermissions.ts +109 -0
- package/sources/utils/notificationRouting.test.ts +51 -0
- package/sources/utils/notificationRouting.ts +81 -0
- package/sources/utils/oauth.ts +143 -0
- package/sources/utils/openExternalUrl.ts +19 -0
- package/sources/utils/parseToken.ts +23 -0
- package/sources/utils/pasteImages.web.ts +81 -0
- package/sources/utils/pathUtils.spec.ts +226 -0
- package/sources/utils/pathUtils.ts +75 -0
- package/sources/utils/platform.ts +19 -0
- package/sources/utils/readFileBytes.ts +11 -0
- package/sources/utils/readFileBytes.web.ts +12 -0
- package/sources/utils/requestReview.ts +135 -0
- package/sources/utils/responsive.ts +87 -0
- package/sources/utils/resumeCommand.test.ts +78 -0
- package/sources/utils/resumeCommand.ts +70 -0
- package/sources/utils/sessionFileLinks.test.ts +112 -0
- package/sources/utils/sessionFileLinks.ts +388 -0
- package/sources/utils/sessionUtils.ts +226 -0
- package/sources/utils/stringUtils.ts +41 -0
- package/sources/utils/sync.ts +164 -0
- package/sources/utils/thumbhash.ts +17 -0
- package/sources/utils/thumbhash.web.ts +85 -0
- package/sources/utils/time.ts +41 -0
- package/sources/utils/toSnakeCase.test.ts +182 -0
- package/sources/utils/toSnakeCase.ts +40 -0
- package/sources/utils/toolCommand.test.ts +23 -0
- package/sources/utils/toolCommand.ts +35 -0
- package/sources/utils/toolComparison.test.ts +101 -0
- package/sources/utils/toolComparison.ts +73 -0
- package/sources/utils/toolErrorParser.test.ts +126 -0
- package/sources/utils/toolErrorParser.ts +102 -0
- package/sources/utils/trimIdent.ts +27 -0
- package/sources/utils/truncateForLogs.ts +37 -0
- package/sources/utils/versionUtils.test.ts +58 -0
- package/sources/utils/versionUtils.ts +69 -0
- package/sources/utils/web/faviconGenerator.ts +39 -0
- package/sources/utils/worktree.ts +192 -0
- package/sources/wire/index.ts +97 -0
- package/src-tauri/Cargo.lock +5978 -0
- package/src-tauri/Cargo.toml +27 -0
- package/src-tauri/build.rs +3 -0
- package/src-tauri/capabilities/default.json +27 -0
- package/src-tauri/deny.toml +53 -0
- package/src-tauri/entitlements.plist +24 -0
- package/src-tauri/icons/128x128.png +0 -0
- package/src-tauri/icons/128x128@2x.png +0 -0
- package/src-tauri/icons/32x32.png +0 -0
- package/src-tauri/icons/64x64.png +0 -0
- package/src-tauri/icons/Square107x107Logo.png +0 -0
- package/src-tauri/icons/Square142x142Logo.png +0 -0
- package/src-tauri/icons/Square150x150Logo.png +0 -0
- package/src-tauri/icons/Square284x284Logo.png +0 -0
- package/src-tauri/icons/Square30x30Logo.png +0 -0
- package/src-tauri/icons/Square310x310Logo.png +0 -0
- package/src-tauri/icons/Square44x44Logo.png +0 -0
- package/src-tauri/icons/Square71x71Logo.png +0 -0
- package/src-tauri/icons/Square89x89Logo.png +0 -0
- package/src-tauri/icons/StoreLogo.png +0 -0
- package/src-tauri/icons/icon.icns +0 -0
- package/src-tauri/icons/icon.ico +0 -0
- package/src-tauri/icons/icon.png +0 -0
- package/src-tauri/src/lib.rs +18 -0
- package/src-tauri/src/main.rs +6 -0
- package/src-tauri/tauri.conf.json +51 -0
- package/src-tauri/tauri.dev.conf.json +20 -0
- package/src-tauri/tauri.preview.conf.json +20 -0
- package/tsconfig.json +45 -0
- package/vitest.config.ts +26 -0
|
@@ -0,0 +1,993 @@
|
|
|
1
|
+
import type { TranslationStructure } from '../_default';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Catalan plural helper function
|
|
5
|
+
* Catalan has 2 plural forms: singular, plural
|
|
6
|
+
* @param options - Object containing count, singular, and plural forms
|
|
7
|
+
* @returns The appropriate form based on Catalan plural rules
|
|
8
|
+
*/
|
|
9
|
+
function plural({ count, singular, plural }: { count: number; singular: string; plural: string }): string {
|
|
10
|
+
return count === 1 ? singular : plural;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Catalan translations for the NasTech app
|
|
15
|
+
* Must match the exact structure of the English translations
|
|
16
|
+
*/
|
|
17
|
+
export const ca: TranslationStructure = {
|
|
18
|
+
tabs: {
|
|
19
|
+
// Tab navigation labels
|
|
20
|
+
inbox: 'Safata',
|
|
21
|
+
sessions: 'Terminals',
|
|
22
|
+
settings: 'Configuració',
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
inbox: {
|
|
26
|
+
// Inbox screen
|
|
27
|
+
emptyTitle: 'Safata buida',
|
|
28
|
+
emptyDescription: 'Connecta\'t amb amics per començar a compartir sessions',
|
|
29
|
+
updates: 'Actualitzacions',
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
common: {
|
|
33
|
+
// Simple string constants
|
|
34
|
+
cancel: 'Cancel·la',
|
|
35
|
+
authenticate: 'Autentica',
|
|
36
|
+
save: 'Desa',
|
|
37
|
+
saveAs: 'Desa com a',
|
|
38
|
+
error: 'Error',
|
|
39
|
+
success: 'Èxit',
|
|
40
|
+
ok: 'D\'acord',
|
|
41
|
+
continue: 'Continua',
|
|
42
|
+
back: 'Enrere',
|
|
43
|
+
create: 'Crear',
|
|
44
|
+
rename: 'Reanomena',
|
|
45
|
+
reset: 'Reinicia',
|
|
46
|
+
logout: 'Tanca la sessió',
|
|
47
|
+
yes: 'Sí',
|
|
48
|
+
no: 'No',
|
|
49
|
+
discard: 'Descarta',
|
|
50
|
+
version: 'Versió',
|
|
51
|
+
copied: 'Copiat',
|
|
52
|
+
copy: 'Copiar',
|
|
53
|
+
scanning: 'Escanejant...',
|
|
54
|
+
urlPlaceholder: 'https://exemple.com',
|
|
55
|
+
home: 'Inici',
|
|
56
|
+
message: 'Missatge',
|
|
57
|
+
files: 'Fitxers',
|
|
58
|
+
fileViewer: 'Visualitzador de fitxers',
|
|
59
|
+
loading: 'Carregant...',
|
|
60
|
+
retry: 'Torna-ho a provar',
|
|
61
|
+
delete: 'Elimina',
|
|
62
|
+
optional: 'Opcional',
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
profile: {
|
|
66
|
+
userProfile: 'Perfil d\'usuari',
|
|
67
|
+
details: 'Detalls',
|
|
68
|
+
firstName: 'Nom',
|
|
69
|
+
lastName: 'Cognoms',
|
|
70
|
+
username: 'Nom d\'usuari',
|
|
71
|
+
status: 'Estat',
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
status: {
|
|
76
|
+
connected: 'connectat',
|
|
77
|
+
connecting: 'connectant',
|
|
78
|
+
disconnected: 'desconnectat',
|
|
79
|
+
error: 'error',
|
|
80
|
+
online: 'en línia',
|
|
81
|
+
offline: 'fora de línia',
|
|
82
|
+
lastSeen: ({ time }: { time: string }) => `vist per última vegada ${time}`,
|
|
83
|
+
permissionRequired: 'permís requerit',
|
|
84
|
+
activeNow: 'Actiu ara',
|
|
85
|
+
unknown: 'desconegut',
|
|
86
|
+
unread: 'nastech resultats',
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
time: {
|
|
90
|
+
justNow: 'ara mateix',
|
|
91
|
+
minutesAgo: ({ count }: { count: number }) => `fa ${count} minut${count !== 1 ? 's' : ''}`,
|
|
92
|
+
hoursAgo: ({ count }: { count: number }) => `fa ${count} hora${count !== 1 ? 'es' : ''}`,
|
|
93
|
+
daysAgo: ({ count }: { count: number }) => `fa ${count} dia${count !== 1 ? 's' : ''}`,
|
|
94
|
+
},
|
|
95
|
+
|
|
96
|
+
connect: {
|
|
97
|
+
restoreAccount: 'Restaura el compte',
|
|
98
|
+
enterSecretKey: 'Introdueix la teva clau secreta',
|
|
99
|
+
invalidSecretKey: 'Clau secreta no vàlida. Comprova-ho i torna-ho a provar.',
|
|
100
|
+
enterUrlManually: 'Introdueix l\'URL manualment',
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
settings: {
|
|
104
|
+
title: 'Configuració',
|
|
105
|
+
connectedAccounts: 'Comptes connectats',
|
|
106
|
+
connectAccount: 'Connectar compte',
|
|
107
|
+
github: 'GitHub',
|
|
108
|
+
machines: 'Màquines',
|
|
109
|
+
showOfflineMachines: ({ count }: { count: number }) => count === 1 ? 'Mostra 1 màquina fora de línia' : `Mostra ${count} màquines fora de línia`,
|
|
110
|
+
hideOfflineMachines: 'Amaga màquines fora de línia',
|
|
111
|
+
features: 'Funcions',
|
|
112
|
+
social: 'Social',
|
|
113
|
+
account: 'Compte',
|
|
114
|
+
accountSubtitle: 'Gestiona els detalls del teu compte',
|
|
115
|
+
appearance: 'Aparença',
|
|
116
|
+
appearanceSubtitle: 'Personalitza l\'aspecte de l\'aplicació',
|
|
117
|
+
voiceAssistant: 'Assistent de veu',
|
|
118
|
+
voiceAssistantSubtitle: 'Configura les preferències d\'interacció per veu',
|
|
119
|
+
featuresTitle: 'Funcions',
|
|
120
|
+
featuresSubtitle: 'Activa o desactiva les funcions de l\'aplicació',
|
|
121
|
+
developer: 'Desenvolupador',
|
|
122
|
+
developerTools: 'Eines de desenvolupador',
|
|
123
|
+
about: 'Quant a',
|
|
124
|
+
aboutFooter: 'NasTech és un client mòbil de Codex i Claude Code. Tot està xifrat punt a punt i el teu compte es guarda només al teu dispositiu. No està afiliat amb Anthropic.',
|
|
125
|
+
whatsNew: 'Novetats',
|
|
126
|
+
whatsNewSubtitle: 'Mira les últimes actualitzacions i millores',
|
|
127
|
+
reportIssue: 'Informa d\'un problema',
|
|
128
|
+
privacyPolicy: 'Política de privadesa',
|
|
129
|
+
termsOfService: 'Condicions del servei',
|
|
130
|
+
eula: 'EULA',
|
|
131
|
+
supportUs: 'Dona\'ns suport',
|
|
132
|
+
supportUsSubtitlePro: 'Gràcies pel teu suport!',
|
|
133
|
+
supportUsSubtitle: 'Dona suport al desenvolupament del projecte',
|
|
134
|
+
scanQrCodeToAuthenticate: 'Escaneja el codi QR per autenticar-te',
|
|
135
|
+
githubConnected: ({ login }: { login: string }) => `Connectat com a @${login}`,
|
|
136
|
+
connectGithubAccount: 'Connecta el teu compte de GitHub',
|
|
137
|
+
claudeAuthSuccess: 'Connexió amb Claude realitzada amb èxit',
|
|
138
|
+
exchangingTokens: 'Intercanviant tokens...',
|
|
139
|
+
usage: 'Ús',
|
|
140
|
+
usageSubtitle: "Veure l'ús de l'API i costos",
|
|
141
|
+
|
|
142
|
+
// Dynamic settings messages
|
|
143
|
+
accountConnected: ({ service }: { service: string }) => `Compte de ${service} connectat`,
|
|
144
|
+
machineStatus: ({ name, status }: { name: string; status: 'online' | 'offline' }) =>
|
|
145
|
+
`${name} està ${status === 'online' ? 'en línia' : 'fora de línia'}`,
|
|
146
|
+
featureToggled: ({ feature, enabled }: { feature: string; enabled: boolean }) =>
|
|
147
|
+
`${feature} ${enabled ? 'activada' : 'desactivada'}`,
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
settingsAppearance: {
|
|
151
|
+
// Appearance settings screen
|
|
152
|
+
theme: 'Tema',
|
|
153
|
+
themeDescription: 'Tria el teu esquema de colors preferit',
|
|
154
|
+
themeOptions: {
|
|
155
|
+
adaptive: 'Adaptatiu',
|
|
156
|
+
light: 'Clar',
|
|
157
|
+
dark: 'Fosc',
|
|
158
|
+
},
|
|
159
|
+
themeDescriptions: {
|
|
160
|
+
adaptive: 'Segueix la configuració del sistema',
|
|
161
|
+
light: 'Usa sempre el tema clar',
|
|
162
|
+
dark: 'Usa sempre el tema fosc',
|
|
163
|
+
},
|
|
164
|
+
display: 'Pantalla',
|
|
165
|
+
displayDescription: 'Controla la disposició i l\'espaiat',
|
|
166
|
+
inlineToolCalls: 'Crides d\'eines en línia',
|
|
167
|
+
inlineToolCallsDescription: 'Mostra les crides d\'eines directament als missatges de xat',
|
|
168
|
+
expandTodoLists: 'Expandeix les llistes de tasques',
|
|
169
|
+
expandTodoListsDescription: 'Mostra totes les tasques en lloc de només els canvis',
|
|
170
|
+
showLineNumbersInDiffs: 'Mostra els números de línia a les diferències',
|
|
171
|
+
showLineNumbersInDiffsDescription: 'Mostra els números de línia a les diferències de codi',
|
|
172
|
+
showLineNumbersInToolViews: 'Mostra els números de línia a les vistes d\'eines',
|
|
173
|
+
showLineNumbersInToolViewsDescription: 'Mostra els números de línia a les diferències de vistes d\'eines',
|
|
174
|
+
wrapLinesInDiffs: 'Ajusta les línies a les diferències',
|
|
175
|
+
wrapLinesInDiffsDescription: 'Ajusta les línies llargues en lloc de desplaçament horitzontal a les vistes de diferències',
|
|
176
|
+
diffStyle: 'Vista de diferències',
|
|
177
|
+
diffStyleDescription: 'Mostra les diferències en una sola columna (unified) o una al costat de l\'altra (split). La vista split només funciona al web.',
|
|
178
|
+
diffStyleOptions: {
|
|
179
|
+
unified: 'Unified',
|
|
180
|
+
split: 'Split',
|
|
181
|
+
},
|
|
182
|
+
alwaysShowContextSize: 'Mostra sempre la mida del context',
|
|
183
|
+
alwaysShowContextSizeDescription: 'Mostra l\'ús del context fins i tot quan no estigui prop del límit',
|
|
184
|
+
avatarStyle: 'Estil d\'avatar',
|
|
185
|
+
avatarStyleDescription: 'Tria l\'aparença de l\'avatar de la sessió',
|
|
186
|
+
avatarOptions: {
|
|
187
|
+
pixelated: 'Pixelat',
|
|
188
|
+
gradient: 'Gradient',
|
|
189
|
+
brutalist: 'Brutalista',
|
|
190
|
+
},
|
|
191
|
+
showFlavorIcons: "Mostrar icones de proveïdors d'IA",
|
|
192
|
+
showFlavorIconsDescription: "Mostrar icones del proveïdor d'IA als avatars de sessió",
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
settingsFeatures: {
|
|
196
|
+
// Features settings screen
|
|
197
|
+
experiments: 'Experiments',
|
|
198
|
+
experimentsDescription: 'Activa funcions experimentals que encara estan en desenvolupament. Aquestes funcions poden ser inestables o canviar sense avís.',
|
|
199
|
+
experimentalFeatures: 'Funcions experimentals',
|
|
200
|
+
experimentalFeaturesEnabled: 'Funcions experimentals activades',
|
|
201
|
+
experimentalFeaturesDisabled: 'Utilitzant només funcions estables',
|
|
202
|
+
webFeatures: 'Funcions web',
|
|
203
|
+
webFeaturesDescription: 'Funcions disponibles només a la versió web de l\'app.',
|
|
204
|
+
enterToSend: 'Enter per enviar',
|
|
205
|
+
enterToSendEnabled: 'Prem Enter per enviar (Maj+Enter per a una nova línia)',
|
|
206
|
+
enterToSendDisabled: 'Enter insereix una nova línia',
|
|
207
|
+
commandPalette: 'Paleta de comandes',
|
|
208
|
+
commandPaletteEnabled: 'Prem ⌘K per obrir',
|
|
209
|
+
commandPaletteDisabled: 'Accés ràpid a comandes desactivat',
|
|
210
|
+
markdownCopyV2: 'Markdown Copy v2',
|
|
211
|
+
markdownCopyV2Subtitle: 'Pulsació llarga obre modal de còpia',
|
|
212
|
+
hideInactiveSessions: 'Amaga les sessions inactives',
|
|
213
|
+
hideInactiveSessionsSubtitle: 'Mostra només els xats actius a la llista',
|
|
214
|
+
groupToolCalls: 'Agrupa les crides a eines',
|
|
215
|
+
groupToolCallsSubtitle: 'Replega les crides consecutives a eines en un sol contenidor',
|
|
216
|
+
privacy: 'Privadesa',
|
|
217
|
+
privacyDescription: 'Desactiva completament tota l\'analítica i telemetria. No s\'enviaran dades a PostHog ni a cap altre servei de seguiment.',
|
|
218
|
+
disableAnalytics: 'Desactivar analítica',
|
|
219
|
+
analyticsDisabled: 'Tot el seguiment i telemetria desactivats',
|
|
220
|
+
analyticsEnabled: 'Analítica anònima d\'ús activa',
|
|
221
|
+
imageUpload: 'Pujada d\'imatges',
|
|
222
|
+
imageUploadSubtitle: 'Adjunta imatges als missatges perquè Claude les analitzi',
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
errors: {
|
|
226
|
+
networkError: 'Error de connexió',
|
|
227
|
+
serverError: 'Error del servidor',
|
|
228
|
+
unknownError: 'Error desconegut',
|
|
229
|
+
connectionTimeout: 'S\'ha esgotat el temps de connexió',
|
|
230
|
+
authenticationFailed: 'L\'autenticació ha fallat',
|
|
231
|
+
permissionDenied: 'Permís denegat',
|
|
232
|
+
fileNotFound: 'Fitxer no trobat',
|
|
233
|
+
invalidFormat: 'Format no vàlid',
|
|
234
|
+
operationFailed: 'L\'operació ha fallat',
|
|
235
|
+
tryAgain: 'Torna-ho a provar',
|
|
236
|
+
contactSupport: 'Contacta amb el suport si el problema persisteix',
|
|
237
|
+
sessionNotFound: 'Sessió no trobada',
|
|
238
|
+
voiceSessionFailed: 'Ha fallat l\'inici de la sessió de veu',
|
|
239
|
+
voiceServiceUnavailable: 'El servei de veu no està disponible temporalment',
|
|
240
|
+
voiceLimitReachedTitle: 'Límit de veu assolit',
|
|
241
|
+
voiceHardLimitReached: ({ hours }: { hours: number }) => `Has utilitzat ${hours}+ hores de veu aquest mes. Aquest és el màxim permès. Pots configurar el teu propi agent ElevenLabs a la configuració de veu per utilitzar la teva pròpia quota.`,
|
|
242
|
+
voiceConversationLimitReached: 'Has assolit el nombre màxim de converses de veu aquest mes. És possible que en el futur afegim ús de veu sota demanda — si us plau, crea un issue a github.com/nastech-ai/nastech/issues si arribes a aquest límit.',
|
|
243
|
+
oauthInitializationFailed: 'Ha fallat la inicialització del flux OAuth',
|
|
244
|
+
tokenStorageFailed: 'Ha fallat l\'emmagatzematge dels tokens d\'autenticació',
|
|
245
|
+
oauthStateMismatch: 'Ha fallat la validació de seguretat. Si us plau, torna-ho a provar',
|
|
246
|
+
tokenExchangeFailed: 'Ha fallat l\'intercanvi del codi d\'autorització',
|
|
247
|
+
oauthAuthorizationDenied: 'L\'autorització ha estat denegada',
|
|
248
|
+
webViewLoadFailed: 'Ha fallat la càrrega de la pàgina d\'autenticació',
|
|
249
|
+
failedToLoadProfile: 'No s\'ha pogut carregar el perfil d\'usuari',
|
|
250
|
+
userNotFound: 'Usuari no trobat',
|
|
251
|
+
sessionDeleted: 'La sessió s\'ha eliminat',
|
|
252
|
+
sessionDeletedDescription: 'Aquesta sessió s\'ha eliminat permanentment',
|
|
253
|
+
|
|
254
|
+
// Error functions with context
|
|
255
|
+
fieldError: ({ field, reason }: { field: string; reason: string }) =>
|
|
256
|
+
`${field}: ${reason}`,
|
|
257
|
+
validationError: ({ field, min, max }: { field: string; min: number; max: number }) =>
|
|
258
|
+
`${field} ha d'estar entre ${min} i ${max}`,
|
|
259
|
+
retryIn: ({ seconds }: { seconds: number }) =>
|
|
260
|
+
`Torna-ho a provar en ${seconds} ${seconds === 1 ? 'segon' : 'segons'}`,
|
|
261
|
+
errorWithCode: ({ message, code }: { message: string; code: number | string }) =>
|
|
262
|
+
`${message} (Error ${code})`,
|
|
263
|
+
disconnectServiceFailed: ({ service }: { service: string }) =>
|
|
264
|
+
`Ha fallat la desconnexió de ${service}`,
|
|
265
|
+
connectServiceFailed: ({ service }: { service: string }) =>
|
|
266
|
+
`No s'ha pogut connectar ${service}. Si us plau, torna-ho a provar.`,
|
|
267
|
+
failedToLoadFriends: 'No s\'ha pogut carregar la llista d\'amics',
|
|
268
|
+
failedToAcceptRequest: 'No s\'ha pogut acceptar la sol·licitud d\'amistat',
|
|
269
|
+
failedToRejectRequest: 'No s\'ha pogut rebutjar la sol·licitud d\'amistat',
|
|
270
|
+
failedToRemoveFriend: 'No s\'ha pogut eliminar l\'amic',
|
|
271
|
+
searchFailed: 'La cerca ha fallat. Si us plau, torna-ho a provar.',
|
|
272
|
+
failedToSendRequest: 'No s\'ha pogut enviar la sol·licitud d\'amistat',
|
|
273
|
+
},
|
|
274
|
+
|
|
275
|
+
newSession: {
|
|
276
|
+
title: 'Iniciar nova sessió',
|
|
277
|
+
machineOffline: 'La màquina està fora de línia',
|
|
278
|
+
switchMachinesHint: '• Canvia de màquina fent clic a la màquina de dalt',
|
|
279
|
+
},
|
|
280
|
+
|
|
281
|
+
sessionHistory: {
|
|
282
|
+
// Used by session history screen
|
|
283
|
+
title: 'Historial de sessions',
|
|
284
|
+
empty: 'No s\'han trobat sessions',
|
|
285
|
+
today: 'Avui',
|
|
286
|
+
yesterday: 'Ahir',
|
|
287
|
+
daysAgo: ({ count }: { count: number }) => `fa ${count} ${count === 1 ? 'dia' : 'dies'}`,
|
|
288
|
+
viewAll: 'Veure totes les sessions',
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
session: {
|
|
292
|
+
inputPlaceholder: 'Escriu un missatge...',
|
|
293
|
+
inactiveArchived: 'Aquesta sessió està inactiva.',
|
|
294
|
+
resumeFromTerminal: 'Per reprendre-la des del terminal:',
|
|
295
|
+
newChat: 'Nou xat',
|
|
296
|
+
forkAction: 'Bifurca la sessió',
|
|
297
|
+
forkSubtitle: 'Continua en una nova sessió amb el mateix context',
|
|
298
|
+
duplicateAction: 'Duplica des d\'un missatge…',
|
|
299
|
+
duplicateSubtitle: 'Torna a un punt escollit i prova de nou',
|
|
300
|
+
forkFromHere: 'Bifurca des d\'aquí',
|
|
301
|
+
duplicateSheetTitle: 'Tria un punt de retrocés',
|
|
302
|
+
duplicateSheetSubtitle: 'La nova sessió conservarà el torn escollit complet (el teu missatge i la resposta de l\'agent) i descartarà els missatges següents.',
|
|
303
|
+
duplicateSheetConfirm: 'Duplica',
|
|
304
|
+
duplicateSheetEmpty: 'Encara no hi ha missatges per retrocedir en aquesta sessió.',
|
|
305
|
+
duplicateRowDisabled: 'Aquest missatge no es pot usar com a punt de retrocés.',
|
|
306
|
+
forkedFromLabel: 'Bifurcat de',
|
|
307
|
+
forkedFromSubtitle: 'Obre la sessió de la qual prové la bifurcació',
|
|
308
|
+
forkErrorOffline: 'La màquina està fora de línia. La bifurcació només està disponible mentre la màquina de la sessió estigui en línia.',
|
|
309
|
+
forkErrorMissingUuid: 'El punt de retrocés escollit ja no existeix a la sessió origen — prova a bifurcar sense truncar.',
|
|
310
|
+
forkErrorMissingMetadata: 'Falten metadades de la sessió necessàries per bifurcar.',
|
|
311
|
+
forkErrorGeneric: 'No s\'ha pogut bifurcar la sessió.',
|
|
312
|
+
forkClaudeOnly: 'La bifurcació només està disponible per a sessions de Claude.',
|
|
313
|
+
},
|
|
314
|
+
|
|
315
|
+
commandPalette: {
|
|
316
|
+
placeholder: 'Escriu una comanda o cerca...',
|
|
317
|
+
},
|
|
318
|
+
|
|
319
|
+
server: {
|
|
320
|
+
// Used by Server Configuration screen (app/(app)/server.tsx)
|
|
321
|
+
serverConfiguration: 'Configuració del servidor',
|
|
322
|
+
enterServerUrl: 'Introdueix una URL del servidor',
|
|
323
|
+
notValidNasTechServer: 'No és un servidor NasTech vàlid',
|
|
324
|
+
changeServer: 'Canvia el servidor',
|
|
325
|
+
continueWithServer: 'Continuar amb aquest servidor?',
|
|
326
|
+
resetToDefault: 'Reinicia per defecte',
|
|
327
|
+
resetServerDefault: 'Reiniciar el servidor per defecte?',
|
|
328
|
+
validating: 'Validant...',
|
|
329
|
+
validatingServer: 'Validant el servidor...',
|
|
330
|
+
serverReturnedError: 'El servidor ha retornat un error',
|
|
331
|
+
failedToConnectToServer: 'Ha fallat la connexió amb el servidor',
|
|
332
|
+
currentlyUsingCustomServer: 'Actualment utilitzant un servidor personalitzat',
|
|
333
|
+
customServerUrlLabel: 'URL del servidor personalitzat',
|
|
334
|
+
advancedFeatureFooter: 'Aquesta és una funció avançada. Només canvia el servidor si saps el que fas. Hauràs de tancar la sessió i tornar-la a iniciar després de canviar els servidors.'
|
|
335
|
+
},
|
|
336
|
+
|
|
337
|
+
sessionInfo: {
|
|
338
|
+
// Used by Session Info screen (app/(app)/session/[id]/info.tsx)
|
|
339
|
+
killSession: 'Finalitza la sessió',
|
|
340
|
+
killSessionConfirm: 'Segur que vols finalitzar aquesta sessió?',
|
|
341
|
+
archiveSession: 'Arxiva la sessió',
|
|
342
|
+
archiveSessionConfirm: 'Segur que vols arxivar aquesta sessió?',
|
|
343
|
+
nastechSessionIdCopied: 'ID de la sessió de NasTech copiat al porta-retalls',
|
|
344
|
+
failedToCopySessionId: 'Ha fallat copiar l\'ID de la sessió de NasTech',
|
|
345
|
+
nastechSessionId: 'ID de la sessió de NasTech',
|
|
346
|
+
claudeCodeSessionId: 'ID de la sessió de Claude Code',
|
|
347
|
+
claudeCodeSessionIdCopied: 'ID de la sessió de Claude Code copiat al porta-retalls',
|
|
348
|
+
codexThreadId: 'ID del fil de Codex',
|
|
349
|
+
codexThreadIdCopied: 'ID del fil de Codex copiat al porta-retalls',
|
|
350
|
+
aiProvider: 'Proveïdor d\'IA',
|
|
351
|
+
failedToCopyClaudeCodeSessionId: 'Ha fallat copiar l\'ID de la sessió de Claude Code',
|
|
352
|
+
failedToCopyCodexThreadId: 'Ha fallat copiar l\'ID del fil de Codex',
|
|
353
|
+
metadataCopied: 'Metadades copiades al porta-retalls',
|
|
354
|
+
failedToCopyMetadata: 'Ha fallat copiar les metadades',
|
|
355
|
+
failedToKillSession: 'Ha fallat finalitzar la sessió',
|
|
356
|
+
failedToArchiveSession: 'Ha fallat arxivar la sessió',
|
|
357
|
+
connectionStatus: 'Estat de la connexió',
|
|
358
|
+
created: 'Creat',
|
|
359
|
+
lastUpdated: 'Última actualització',
|
|
360
|
+
sequence: 'Seqüència',
|
|
361
|
+
quickActions: 'Accions ràpides',
|
|
362
|
+
viewMachine: 'Veure la màquina',
|
|
363
|
+
viewMachineSubtitle: 'Veure detalls de la màquina i sessions',
|
|
364
|
+
resumeSession: 'Resume Session',
|
|
365
|
+
resumeSessionSubtitle: 'Resume this session on the same machine',
|
|
366
|
+
resumeSessionSameMachineOnly: 'This session can only be resumed on the same machine it started on.',
|
|
367
|
+
resumeSessionMachineOffline: 'This machine is offline. Resume is only available while it is online.',
|
|
368
|
+
resumeSessionNeedsNasTechAgent: 'Resume is unavailable on this machine. Run `nastech-agent auth login` to enable it.',
|
|
369
|
+
resumeSessionMissingMachine: 'This session is missing its machine metadata, so it cannot be resumed.',
|
|
370
|
+
resumeSessionMissingBackendId: 'This session does not have a resumable Claude or Codex identifier.',
|
|
371
|
+
resumeSessionUnexpectedDirectoryPrompt: 'Resume cannot create directories. Start the session manually from its original path.',
|
|
372
|
+
killSessionSubtitle: 'Finalitzar immediatament la sessió',
|
|
373
|
+
archiveSessionSubtitle: 'Arxiva aquesta sessió i atura-la',
|
|
374
|
+
metadata: 'Metadades',
|
|
375
|
+
host: 'Host',
|
|
376
|
+
path: 'Camí',
|
|
377
|
+
operatingSystem: 'Sistema operatiu',
|
|
378
|
+
processId: 'ID del procés',
|
|
379
|
+
nastechHome: 'Directori de NasTech',
|
|
380
|
+
copyMetadata: 'Copia les metadades',
|
|
381
|
+
agentState: 'Estat de l\'agent',
|
|
382
|
+
controlledByUser: 'Controlat per l\'usuari',
|
|
383
|
+
pendingRequests: 'Sol·licituds pendents',
|
|
384
|
+
activity: 'Activitat',
|
|
385
|
+
thinking: 'Pensant',
|
|
386
|
+
thinkingSince: 'Pensant des de',
|
|
387
|
+
cliVersion: 'Versió del CLI',
|
|
388
|
+
cliVersionOutdated: 'Actualització del CLI requerida',
|
|
389
|
+
cliVersionOutdatedMessage: ({ currentVersion, requiredVersion }: { currentVersion: string; requiredVersion: string }) =>
|
|
390
|
+
`Versió ${currentVersion} instal·lada. Actualitzeu a ${requiredVersion} o posterior`,
|
|
391
|
+
updateCliInstructions: 'Si us plau executeu pip install -U nastech-agent',
|
|
392
|
+
deleteSession: 'Elimina la sessió',
|
|
393
|
+
deleteSessionSubtitle: 'Elimina permanentment aquesta sessió',
|
|
394
|
+
deleteSessionConfirm: 'Eliminar la sessió permanentment?',
|
|
395
|
+
deleteSessionWarning: 'Aquesta acció no es pot desfer. Tots els missatges i dades associats amb aquesta sessió s\'eliminaran permanentment.',
|
|
396
|
+
failedToDeleteSession: 'Error en eliminar la sessió',
|
|
397
|
+
sessionDeleted: 'Sessió eliminada amb èxit',
|
|
398
|
+
worktreeCleanupTitle: 'Eliminar Worktree?',
|
|
399
|
+
worktreeCleanupMessage: 'El Worktree no té canvis sense confirmar. Vols eliminar els fitxers del Worktree?',
|
|
400
|
+
worktreeCleanupDelete: 'Eliminar Worktree',
|
|
401
|
+
worktreeCleanupKeep: 'Conservar fitxers',
|
|
402
|
+
|
|
403
|
+
},
|
|
404
|
+
|
|
405
|
+
components: {
|
|
406
|
+
emptyMainScreen: {
|
|
407
|
+
// Used by EmptyMainScreen component
|
|
408
|
+
readyToCode: 'Llest per programar?',
|
|
409
|
+
installCli: 'Install NasTech CLI',
|
|
410
|
+
runIt: 'Executa\'l',
|
|
411
|
+
scanQrCode: 'Escaneja el codi QR',
|
|
412
|
+
openCamera: 'Obre la càmera',
|
|
413
|
+
},
|
|
414
|
+
},
|
|
415
|
+
|
|
416
|
+
agentInput: {
|
|
417
|
+
permissionMode: {
|
|
418
|
+
title: 'MODE DE PERMISOS',
|
|
419
|
+
default: 'Per defecte',
|
|
420
|
+
acceptEdits: 'Accepta edicions',
|
|
421
|
+
plan: 'Mode de planificació',
|
|
422
|
+
dontAsk: 'No preguntis',
|
|
423
|
+
bypassPermissions: 'Mode Yolo',
|
|
424
|
+
badgeAcceptAllEdits: 'Accepta totes les edicions',
|
|
425
|
+
badgeBypassAllPermissions: 'Omet tots els permisos',
|
|
426
|
+
badgePlanMode: 'Mode de planificació',
|
|
427
|
+
},
|
|
428
|
+
agent: {
|
|
429
|
+
claude: 'Claude',
|
|
430
|
+
codex: 'Codex',
|
|
431
|
+
gemini: 'Gemini',
|
|
432
|
+
openclaw: 'OpenClaw',
|
|
433
|
+
},
|
|
434
|
+
model: {
|
|
435
|
+
title: 'MODEL',
|
|
436
|
+
configureInCli: 'Configura els models a la configuració del CLI',
|
|
437
|
+
},
|
|
438
|
+
effort: {
|
|
439
|
+
title: 'ESFORÇ',
|
|
440
|
+
},
|
|
441
|
+
codexPermissionMode: {
|
|
442
|
+
title: 'MODE DE PERMISOS CODEX',
|
|
443
|
+
default: 'Configuració del CLI',
|
|
444
|
+
readOnly: 'Read Only Mode',
|
|
445
|
+
safeYolo: 'Safe YOLO',
|
|
446
|
+
yolo: 'YOLO',
|
|
447
|
+
badgeReadOnly: 'Read Only Mode',
|
|
448
|
+
badgeSafeYolo: 'Safe YOLO',
|
|
449
|
+
badgeYolo: 'YOLO',
|
|
450
|
+
},
|
|
451
|
+
codexModel: {
|
|
452
|
+
title: 'CODEX MODEL',
|
|
453
|
+
gpt5CodexLow: 'gpt-5-codex low',
|
|
454
|
+
gpt5CodexMedium: 'gpt-5-codex medium',
|
|
455
|
+
gpt5CodexHigh: 'gpt-5-codex high',
|
|
456
|
+
gpt5Minimal: 'GPT-5 Minimal',
|
|
457
|
+
gpt5Low: 'GPT-5 Low',
|
|
458
|
+
gpt5Medium: 'GPT-5 Medium',
|
|
459
|
+
gpt5High: 'GPT-5 High',
|
|
460
|
+
},
|
|
461
|
+
geminiPermissionMode: {
|
|
462
|
+
title: 'MODE DE PERMISOS GEMINI',
|
|
463
|
+
default: 'Per defecte',
|
|
464
|
+
autoEdit: 'Edició automàtica',
|
|
465
|
+
yolo: 'YOLO',
|
|
466
|
+
plan: 'Planificació',
|
|
467
|
+
badgeAutoEdit: 'Edició automàtica',
|
|
468
|
+
badgeYolo: 'YOLO',
|
|
469
|
+
badgePlan: 'Planificació',
|
|
470
|
+
},
|
|
471
|
+
context: {
|
|
472
|
+
remaining: ({ percent }: { percent: number }) => `${percent}% restant`,
|
|
473
|
+
},
|
|
474
|
+
suggestion: {
|
|
475
|
+
fileLabel: 'FITXER',
|
|
476
|
+
folderLabel: 'CARPETA',
|
|
477
|
+
},
|
|
478
|
+
noMachinesAvailable: 'Sense màquines',
|
|
479
|
+
},
|
|
480
|
+
|
|
481
|
+
machineLauncher: {
|
|
482
|
+
showLess: 'Mostra menys',
|
|
483
|
+
showAll: ({ count }: { count: number }) => `Mostra tots (${count} camins)`,
|
|
484
|
+
enterCustomPath: 'Introdueix un camí personalitzat',
|
|
485
|
+
offlineUnableToSpawn: 'No es pot crear una nova sessió, fora de línia',
|
|
486
|
+
},
|
|
487
|
+
|
|
488
|
+
sidebar: {
|
|
489
|
+
sessionsTitle: 'NasTech',
|
|
490
|
+
showArchived: 'Mostra arxivades',
|
|
491
|
+
hideArchived: 'Amaga arxivades',
|
|
492
|
+
newSession: 'Nova sessió',
|
|
493
|
+
},
|
|
494
|
+
|
|
495
|
+
zen: {
|
|
496
|
+
toggle: 'Mode zen',
|
|
497
|
+
},
|
|
498
|
+
|
|
499
|
+
toolView: {
|
|
500
|
+
input: 'Entrada',
|
|
501
|
+
output: 'Sortida',
|
|
502
|
+
},
|
|
503
|
+
|
|
504
|
+
toolGroup: {
|
|
505
|
+
editedFiles: ({ count }: { count: number }) => count === 1 ? 'S\'ha editat 1 fitxer' : `S'han editat ${count} fitxers`,
|
|
506
|
+
readFiles: ({ count }: { count: number }) => count === 1 ? 'S\'ha llegit 1 fitxer' : `S'han llegit ${count} fitxers`,
|
|
507
|
+
ranCommands: ({ count }: { count: number }) => count === 1 ? 'S\'ha executat 1 comanda' : `S'han executat ${count} comandes`,
|
|
508
|
+
searched: ({ count }: { count: number }) => count === 1 ? 'S\'ha cercat 1 vegada' : `S'ha cercat ${count} vegades`,
|
|
509
|
+
fetchedUrls: ({ count }: { count: number }) => count === 1 ? 'S\'ha obtingut 1 URL' : `S'han obtingut ${count} URLs`,
|
|
510
|
+
ranTasks: ({ count }: { count: number }) => count === 1 ? 'S\'ha executat 1 tasca' : `S'han executat ${count} tasques`,
|
|
511
|
+
usedTools: ({ count }: { count: number }) => count === 1 ? 'S\'ha usat 1 eina' : `S'han usat ${count} eines`,
|
|
512
|
+
},
|
|
513
|
+
|
|
514
|
+
tools: {
|
|
515
|
+
fullView: {
|
|
516
|
+
description: 'Descripció',
|
|
517
|
+
inputParams: 'Paràmetres d\'entrada',
|
|
518
|
+
output: 'Sortida',
|
|
519
|
+
error: 'Error',
|
|
520
|
+
completed: 'Eina completada amb èxit',
|
|
521
|
+
noOutput: 'No s\'ha produït cap sortida',
|
|
522
|
+
running: 'L\'eina s\'està executant...',
|
|
523
|
+
rawJsonDevMode: 'JSON en brut (mode desenvolupador)',
|
|
524
|
+
},
|
|
525
|
+
taskView: {
|
|
526
|
+
initializing: 'Inicialitzant l\'agent...',
|
|
527
|
+
moreTools: ({ count }: { count: number }) => `+${count} més ${plural({ count, singular: 'eina', plural: 'eines' })}`,
|
|
528
|
+
},
|
|
529
|
+
multiEdit: {
|
|
530
|
+
editNumber: ({ index, total }: { index: number; total: number }) => `Edició ${index} de ${total}`,
|
|
531
|
+
replaceAll: 'Reemplaça tot',
|
|
532
|
+
},
|
|
533
|
+
names: {
|
|
534
|
+
task: 'Tasca',
|
|
535
|
+
terminal: 'Terminal',
|
|
536
|
+
searchFiles: 'Cerca fitxers',
|
|
537
|
+
search: 'Cerca',
|
|
538
|
+
searchContent: 'Cerca contingut',
|
|
539
|
+
listFiles: 'Llista fitxers',
|
|
540
|
+
planProposal: 'Proposta de pla',
|
|
541
|
+
readFile: 'Llegeix fitxer',
|
|
542
|
+
editFile: 'Edita fitxer',
|
|
543
|
+
writeFile: 'Escriu fitxer',
|
|
544
|
+
fetchUrl: 'Obté URL',
|
|
545
|
+
readNotebook: 'Llegeix quadern',
|
|
546
|
+
editNotebook: 'Edita quadern',
|
|
547
|
+
todoList: 'Llista de tasques',
|
|
548
|
+
webSearch: 'Cerca web',
|
|
549
|
+
reasoning: 'Raonament',
|
|
550
|
+
applyChanges: 'Actualitza fitxer',
|
|
551
|
+
viewDiff: 'Canvis del fitxer actual',
|
|
552
|
+
question: 'Pregunta',
|
|
553
|
+
},
|
|
554
|
+
desc: {
|
|
555
|
+
terminalCmd: ({ cmd }: { cmd: string }) => `Terminal(cmd: ${cmd})`,
|
|
556
|
+
searchPattern: ({ pattern }: { pattern: string }) => `Cerca(patró: ${pattern})`,
|
|
557
|
+
searchPath: ({ basename }: { basename: string }) => `Cerca(camí: ${basename})`,
|
|
558
|
+
fetchUrlHost: ({ host }: { host: string }) => `Obté URL(url: ${host})`,
|
|
559
|
+
editNotebookMode: ({ path, mode }: { path: string; mode: string }) => `Edita quadern(fitxer: ${path}, mode: ${mode})`,
|
|
560
|
+
todoListCount: ({ count }: { count: number }) => `Llista de tasques(quantitat: ${count})`,
|
|
561
|
+
webSearchQuery: ({ query }: { query: string }) => `Cerca web(consulta: ${query})`,
|
|
562
|
+
grepPattern: ({ pattern }: { pattern: string }) => `grep(patró: ${pattern})`,
|
|
563
|
+
multiEditEdits: ({ path, count }: { path: string; count: number }) => `${path} (${count} edicions)`,
|
|
564
|
+
readingFile: ({ file }: { file: string }) => `Llegint ${file}`,
|
|
565
|
+
writingFile: ({ file }: { file: string }) => `Escrivint ${file}`,
|
|
566
|
+
modifyingFile: ({ file }: { file: string }) => `Modificant ${file}`,
|
|
567
|
+
modifyingFiles: ({ count }: { count: number }) => `Modificant ${count} fitxers`,
|
|
568
|
+
modifyingMultipleFiles: ({ file, count }: { file: string; count: number }) => `${file} i ${count} més`,
|
|
569
|
+
showingDiff: 'Mostrant canvis',
|
|
570
|
+
},
|
|
571
|
+
askUserQuestion: {
|
|
572
|
+
submit: 'Envia resposta',
|
|
573
|
+
multipleQuestions: ({ count }: { count: number }) => `${count} ${plural({ count, singular: 'pregunta', plural: 'preguntes' })}`,
|
|
574
|
+
other: 'Altres',
|
|
575
|
+
otherDescription: 'Escriu la teva pròpia resposta',
|
|
576
|
+
otherPlaceholder: 'Escriu la teva resposta...',
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
|
|
580
|
+
files: {
|
|
581
|
+
changes: 'Canvis',
|
|
582
|
+
searchPlaceholder: 'Cerca fitxers...',
|
|
583
|
+
detachedHead: 'HEAD separat',
|
|
584
|
+
summary: ({ staged, unstaged }: { staged: number; unstaged: number }) => `${staged} preparats • ${unstaged} sense preparar`,
|
|
585
|
+
notRepo: 'No és un repositori git',
|
|
586
|
+
notUnderGit: 'Aquest directori no està sota control de versions git',
|
|
587
|
+
searching: 'Cercant fitxers...',
|
|
588
|
+
noFilesFound: 'No s\'han trobat fitxers',
|
|
589
|
+
noFilesInProject: 'No hi ha fitxers al projecte',
|
|
590
|
+
tryDifferentTerm: 'Prova un terme de cerca diferent',
|
|
591
|
+
searchResults: ({ count }: { count: number }) => `Resultats de la cerca (${count})`,
|
|
592
|
+
projectRoot: 'Arrel del projecte',
|
|
593
|
+
stagedChanges: ({ count }: { count: number }) => `Canvis preparats (${count})`,
|
|
594
|
+
unstagedChanges: ({ count }: { count: number }) => `Canvis sense preparar (${count})`,
|
|
595
|
+
// File viewer strings
|
|
596
|
+
loadingFile: ({ fileName }: { fileName: string }) => `Carregant ${fileName}...`,
|
|
597
|
+
binaryFile: 'Fitxer binari',
|
|
598
|
+
cannotDisplayBinary: 'No es pot mostrar el contingut del fitxer binari',
|
|
599
|
+
diff: 'Diferències',
|
|
600
|
+
file: 'Fitxer',
|
|
601
|
+
fileEmpty: 'El fitxer està buit',
|
|
602
|
+
noChanges: 'No hi ha canvis a mostrar',
|
|
603
|
+
noChangesTitle: 'Sense canvis',
|
|
604
|
+
noChangesSubtitle: 'L\'arbre de treball està net',
|
|
605
|
+
deleted: 'Eliminat',
|
|
606
|
+
changedFiles: ({ count }: { count: number }) => `${count} ${count === 1 ? 'fitxer modificat' : 'fitxers modificats'}`,
|
|
607
|
+
allFiles: 'Tots els fitxers',
|
|
608
|
+
editFile: 'Editar',
|
|
609
|
+
saveFile: 'Desar',
|
|
610
|
+
failedToRead: 'No s\'ha pogut llegir el fitxer',
|
|
611
|
+
failedToSave: 'No s\'ha pogut desar el fitxer',
|
|
612
|
+
fileConflict: 'Conflicte de fitxer',
|
|
613
|
+
fileConflictDescription: 'Aquest fitxer s\'ha modificat al dispositiu mentre l\'editaves. Recarrega per veure la darrera versió.',
|
|
614
|
+
reload: 'Recarregar',
|
|
615
|
+
overwrite: 'Sobreescriure',
|
|
616
|
+
},
|
|
617
|
+
|
|
618
|
+
settingsVoice: {
|
|
619
|
+
// Voice settings screen
|
|
620
|
+
languageTitle: 'Idioma',
|
|
621
|
+
languageDescription: 'Tria el teu idioma preferit per a les interaccions amb l\'assistent de veu. Aquesta configuració es sincronitza a tots els teus dispositius.',
|
|
622
|
+
preferredLanguage: 'Idioma preferit',
|
|
623
|
+
preferredLanguageSubtitle: 'Idioma utilitzat per a les respostes de l\'assistent de veu',
|
|
624
|
+
language: {
|
|
625
|
+
searchPlaceholder: 'Cerca idiomes...',
|
|
626
|
+
title: 'Idiomes',
|
|
627
|
+
footer: ({ count }: { count: number }) => `${count} ${plural({ count, singular: 'idioma', plural: 'idiomes' })} disponibles`,
|
|
628
|
+
autoDetect: 'Detecta automàticament',
|
|
629
|
+
},
|
|
630
|
+
// Bring your own agent
|
|
631
|
+
byoTitle: 'Porta el teu propi agent',
|
|
632
|
+
byoDescription: 'Utilitza el teu propi agent d\'ElevenLabs en lloc del predeterminat de NasTech. No cal subscripció — connecta directament amb el teu propi compte d\'ElevenLabs. El teu agent ha de definir dues eines de client: messageClaudeCode (envia text a l\'agent de codi) i processPermissionRequest (permet o denega l\'ús d\'eines). Rep el context de la sessió a través de la variable dinàmica {{initialConversationContext}}.',
|
|
633
|
+
customAgentId: 'ElevenLabs Agent ID',
|
|
634
|
+
customAgentIdNotSet: 'No configurat',
|
|
635
|
+
customAgentIdDescription: 'Introdueix el teu ElevenLabs Agent ID. Deixa-ho buit per utilitzar el predeterminat de NasTech.',
|
|
636
|
+
customAgentIdPlaceholder: 'e.g. abc123def456',
|
|
637
|
+
bypassToken: 'Connexió directa',
|
|
638
|
+
bypassTokenSubtitle: 'Omet el servidor de NasTech, connecta directament a ElevenLabs',
|
|
639
|
+
promptGuideTitle: 'Guia de prompt de l\'agent',
|
|
640
|
+
promptGuideDescription: 'El teu agent d\'ElevenLabs necessita:\n\n• Eina: messageClaudeCode — paràmetre: message (string). Envia un missatge a la sessió de codi activa.\n• Eina: processPermissionRequest — paràmetre: decision ("allow" o "deny"). Aprova o denega un permís d\'eina pendent.\n• Variable dinàmica: {{initialConversationContext}} — rep l\'historial i el context de la sessió en iniciar.\n\nL\'agent actua com a pont de veu entre l\'usuari i els agents de codi. Ha de ser concís, respondre només quan se li parla i informar quan un agent de codi acaba la feina.',
|
|
641
|
+
usageTitle: 'Ús (últims 30 dies)',
|
|
642
|
+
usageFooter: 'Temps de veu utilitzat en els últims 30 dies. Nivell gratuït: 20 min. Subscrit: 5 hores. Màx. 100 converses al mes.',
|
|
643
|
+
usageLabel: 'Temps de veu',
|
|
644
|
+
conversationsLabel: 'Converses',
|
|
645
|
+
usageUsed: ({ used, limit }: { used: string; limit: string }) => `${used} utilitzat de ${limit}`,
|
|
646
|
+
supportTitle: 'Millorar veu',
|
|
647
|
+
supportSubtitle: 'Més temps de veu i suport al desenvolupament',
|
|
648
|
+
},
|
|
649
|
+
|
|
650
|
+
settingsAccount: {
|
|
651
|
+
// Account settings screen
|
|
652
|
+
accountInformation: 'Informació del compte',
|
|
653
|
+
status: 'Estat',
|
|
654
|
+
statusActive: 'Actiu',
|
|
655
|
+
statusNotAuthenticated: 'No autenticat',
|
|
656
|
+
anonymousId: 'ID anònim',
|
|
657
|
+
publicId: 'ID públic',
|
|
658
|
+
notAvailable: 'No disponible',
|
|
659
|
+
linkNewDevice: 'Enllaça un nou dispositiu',
|
|
660
|
+
linkNewDeviceSubtitle: 'Escaneja el codi QR per enllaçar el dispositiu',
|
|
661
|
+
profile: 'Perfil',
|
|
662
|
+
name: 'Nom',
|
|
663
|
+
github: 'GitHub',
|
|
664
|
+
tapToDisconnect: 'Toca per desconnectar',
|
|
665
|
+
server: 'Servidor',
|
|
666
|
+
backup: 'Còpia de seguretat',
|
|
667
|
+
backupDescription: 'La teva clau secreta és l\'única manera de recuperar el teu compte. Desa-la en un lloc segur com un gestor de contrasenyes.',
|
|
668
|
+
secretKey: 'Clau secreta',
|
|
669
|
+
tapToReveal: 'Toca per revelar',
|
|
670
|
+
tapToHide: 'Toca per ocultar',
|
|
671
|
+
secretKeyLabel: 'CLAU SECRETA (TOCA PER COPIAR)',
|
|
672
|
+
secretKeyCopied: 'Clau secreta copiada al porta-retalls. Desa-la en un lloc segur!',
|
|
673
|
+
secretKeyCopyFailed: 'Ha fallat copiar la clau secreta',
|
|
674
|
+
privacy: 'Privadesa',
|
|
675
|
+
privacyDescription: 'Ajuda a millorar l\'aplicació compartint dades d\'ús anònimes. No es recopila informació personal.',
|
|
676
|
+
analytics: 'Analítiques',
|
|
677
|
+
analyticsDisabled: 'No es comparteixen dades',
|
|
678
|
+
analyticsEnabled: 'Es comparteixen dades d\'ús anònimes',
|
|
679
|
+
dangerZone: 'Zona de perill',
|
|
680
|
+
logout: 'Tanca la sessió',
|
|
681
|
+
logoutSubtitle: 'Tanca la sessió i esborra les dades locals',
|
|
682
|
+
logoutConfirm: 'Estàs segur que vols tancar la sessió? Assegura\'t d\'haver fet una còpia de seguretat de la teva clau secreta!',
|
|
683
|
+
},
|
|
684
|
+
|
|
685
|
+
settingsLanguage: {
|
|
686
|
+
// Language settings screen
|
|
687
|
+
title: 'Idioma',
|
|
688
|
+
description: 'Tria el teu idioma preferit per a la interfície de l\'app. Això se sincronitzarà a tots els teus dispositius.',
|
|
689
|
+
currentLanguage: 'Idioma actual',
|
|
690
|
+
automatic: 'Automàtic',
|
|
691
|
+
automaticSubtitle: 'Detecta des de la configuració del dispositiu',
|
|
692
|
+
needsRestart: 'Idioma canviat',
|
|
693
|
+
needsRestartMessage: 'L\'aplicació necessita reiniciar-se per aplicar la nova configuració d\'idioma.',
|
|
694
|
+
restartNow: 'Reinicia ara',
|
|
695
|
+
},
|
|
696
|
+
|
|
697
|
+
connectButton: {
|
|
698
|
+
authenticate: 'Autentica el terminal',
|
|
699
|
+
authenticateWithUrlPaste: 'Autentica el terminal amb enganxat d\'URL',
|
|
700
|
+
pasteAuthUrl: 'Enganxa l\'URL d\'autenticació del teu terminal',
|
|
701
|
+
},
|
|
702
|
+
|
|
703
|
+
updateBanner: {
|
|
704
|
+
updateAvailable: 'Actualització disponible',
|
|
705
|
+
pressToApply: 'Prem per aplicar l\'actualització',
|
|
706
|
+
whatsNew: 'Novetats',
|
|
707
|
+
seeLatest: 'Mira les últimes actualitzacions i millores',
|
|
708
|
+
nativeUpdateAvailable: 'Actualització de l\'aplicació disponible',
|
|
709
|
+
tapToUpdateAppStore: 'Toca per actualitzar a l\'App Store',
|
|
710
|
+
tapToUpdatePlayStore: 'Toca per actualitzar a Play Store',
|
|
711
|
+
},
|
|
712
|
+
|
|
713
|
+
changelog: {
|
|
714
|
+
// Used by the changelog screen
|
|
715
|
+
version: ({ version }: { version: number }) => `Versió ${version}`,
|
|
716
|
+
noEntriesAvailable: 'No hi ha entrades de registre de canvis disponibles.',
|
|
717
|
+
},
|
|
718
|
+
|
|
719
|
+
terminal: {
|
|
720
|
+
// Used by terminal connection screens
|
|
721
|
+
webBrowserRequired: 'Es requereix un navegador web',
|
|
722
|
+
webBrowserRequiredDescription: 'Els enllaços de connexió de terminal només es poden obrir en un navegador web per raons de seguretat. Utilitza l\'escàner de codi QR o obre aquest enllaç en un ordinador.',
|
|
723
|
+
processingConnection: 'Processant la connexió...',
|
|
724
|
+
invalidConnectionLink: 'Enllaç de connexió no vàlid',
|
|
725
|
+
invalidConnectionLinkDescription: 'L\'enllaç de connexió falta o no és vàlid. Comprova l\'URL i torna-ho a provar.',
|
|
726
|
+
connectTerminal: 'Connecta el terminal',
|
|
727
|
+
terminalRequestDescription: 'Un terminal està sol·licitant connectar-se al teu compte de NasTech. Això permetrà al terminal enviar i rebre missatges de forma segura.',
|
|
728
|
+
connectionDetails: 'Detalls de la connexió',
|
|
729
|
+
publicKey: 'Clau pública',
|
|
730
|
+
encryption: 'Xifratge',
|
|
731
|
+
endToEndEncrypted: 'Xifrat punt a punt',
|
|
732
|
+
acceptConnection: 'Accepta la connexió',
|
|
733
|
+
connecting: 'Connectant...',
|
|
734
|
+
reject: 'Rebutja',
|
|
735
|
+
security: 'Seguretat',
|
|
736
|
+
securityFooter: 'Aquest enllaç de connexió s\'ha processat de forma segura al teu navegador i mai s\'ha enviat a cap servidor. Les teves dades privades es mantindran segures i només tu pots desxifrar els missatges.',
|
|
737
|
+
securityFooterDevice: 'Aquesta connexió s\'ha processat de forma segura al teu dispositiu i mai s\'ha enviat a cap servidor. Les teves dades privades es mantindran segures i només tu pots desxifrar els missatges.',
|
|
738
|
+
clientSideProcessing: 'Processament del costat del client',
|
|
739
|
+
linkProcessedLocally: 'Enllaç processat localment al navegador',
|
|
740
|
+
linkProcessedOnDevice: 'Enllaç processat localment al dispositiu',
|
|
741
|
+
},
|
|
742
|
+
|
|
743
|
+
modals: {
|
|
744
|
+
// Used across connect flows and settings
|
|
745
|
+
authenticateTerminal: 'Autentica el terminal',
|
|
746
|
+
pasteUrlFromTerminal: 'Enganxa l\'URL d\'autenticació del teu terminal',
|
|
747
|
+
deviceLinkedSuccessfully: 'Dispositiu enllaçat amb èxit',
|
|
748
|
+
terminalConnectedSuccessfully: 'Terminal connectat amb èxit',
|
|
749
|
+
invalidAuthUrl: 'URL d\'autenticació no vàlida',
|
|
750
|
+
developerMode: 'Mode desenvolupador',
|
|
751
|
+
developerModeEnabled: 'Mode desenvolupador activat',
|
|
752
|
+
developerModeDisabled: 'Mode desenvolupador desactivat',
|
|
753
|
+
disconnectGithub: 'Desconnecta GitHub',
|
|
754
|
+
disconnectGithubConfirm: 'Segur que vols desconnectar el teu compte de GitHub?',
|
|
755
|
+
disconnectService: ({ service }: { service: string }) =>
|
|
756
|
+
`Desconnecta ${service}`,
|
|
757
|
+
disconnectServiceConfirm: ({ service }: { service: string }) =>
|
|
758
|
+
`Segur que vols desconnectar ${service} del teu compte?`,
|
|
759
|
+
disconnect: 'Desconnecta',
|
|
760
|
+
failedToConnectTerminal: 'Ha fallat connectar el terminal',
|
|
761
|
+
cameraPermissionsRequiredToConnectTerminal: 'Es requereixen permisos de càmera per connectar el terminal',
|
|
762
|
+
failedToLinkDevice: 'Ha fallat enllaçar el dispositiu',
|
|
763
|
+
cameraPermissionsRequiredToScanQr: 'Es requereixen permisos de càmera per escanejar codis QR'
|
|
764
|
+
},
|
|
765
|
+
|
|
766
|
+
navigation: {
|
|
767
|
+
// Navigation titles and screen headers
|
|
768
|
+
connectTerminal: 'Connecta el terminal',
|
|
769
|
+
linkNewDevice: 'Enllaça un nou dispositiu',
|
|
770
|
+
restoreWithSecretKey: 'Restaura amb clau secreta',
|
|
771
|
+
whatsNew: 'Novetats',
|
|
772
|
+
friends: 'Amics',
|
|
773
|
+
},
|
|
774
|
+
|
|
775
|
+
welcome: {
|
|
776
|
+
// Main welcome screen for unauthenticated users
|
|
777
|
+
title: 'Client mòbil de Codex i Claude Code',
|
|
778
|
+
subtitle: 'Xifrat punt a punt i el teu compte s\'emmagatzema només al teu dispositiu.',
|
|
779
|
+
createAccount: 'Crea un compte',
|
|
780
|
+
linkOrRestoreAccount: 'Enllaça o restaura un compte',
|
|
781
|
+
loginWithMobileApp: 'Inicia sessió amb l\'aplicació mòbil',
|
|
782
|
+
},
|
|
783
|
+
|
|
784
|
+
review: {
|
|
785
|
+
// Used by utils/requestReview.ts
|
|
786
|
+
enjoyingApp: 'T\'està agradant l\'aplicació?',
|
|
787
|
+
feedbackPrompt: 'Ens encantaria conèixer la teva opinió!',
|
|
788
|
+
yesILoveIt: 'Sí, m\'encanta!',
|
|
789
|
+
notReally: 'No gaire'
|
|
790
|
+
},
|
|
791
|
+
|
|
792
|
+
items: {
|
|
793
|
+
// Used by Item component for copy toast
|
|
794
|
+
copiedToClipboard: ({ label }: { label: string }) => `${label} copiat al porta-retalls`
|
|
795
|
+
},
|
|
796
|
+
|
|
797
|
+
machine: {
|
|
798
|
+
offlineUnableToSpawn: 'El llançador està desactivat mentre la màquina està fora de línia',
|
|
799
|
+
offlineHelp: '• Assegura\'t que l\'ordinador estigui en línia\n• Executa `nastech daemon status` per diagnosticar\n• Fas servir l\'última versió del CLI? Actualitza amb `pip install -U nastech-agent`',
|
|
800
|
+
launchNewSessionInDirectory: 'Inicia una nova sessió al directori',
|
|
801
|
+
daemon: 'Dimoni',
|
|
802
|
+
status: 'Estat',
|
|
803
|
+
stopDaemon: 'Atura el dimoni',
|
|
804
|
+
lastKnownPid: 'Últim PID conegut',
|
|
805
|
+
lastKnownHttpPort: 'Últim port HTTP conegut',
|
|
806
|
+
startedAt: 'Iniciat a',
|
|
807
|
+
cliVersion: 'Versió del CLI',
|
|
808
|
+
daemonStateVersion: 'Versió de l\'estat del dimoni',
|
|
809
|
+
activeSessions: ({ count }: { count: number }) => `Sessions actives (${count})`,
|
|
810
|
+
machineGroup: 'Màquina',
|
|
811
|
+
host: 'Host',
|
|
812
|
+
machineId: 'ID de la màquina',
|
|
813
|
+
username: 'Nom d\'usuari',
|
|
814
|
+
homeDirectory: 'Directori principal',
|
|
815
|
+
platform: 'Plataforma',
|
|
816
|
+
architecture: 'Arquitectura',
|
|
817
|
+
lastSeen: 'Vist per última vegada',
|
|
818
|
+
never: 'Mai',
|
|
819
|
+
metadataVersion: 'Versió de les metadades',
|
|
820
|
+
cliAvailability: 'Disponibilitat de CLI',
|
|
821
|
+
cliInstalled: 'Instal·lat',
|
|
822
|
+
cliNotFound: 'No trobat',
|
|
823
|
+
lastDetected: 'Última detecció',
|
|
824
|
+
untitledSession: 'Sessió sense títol',
|
|
825
|
+
back: 'Enrere',
|
|
826
|
+
dangerZone: 'Zona de perill',
|
|
827
|
+
delete: 'Elimina la màquina',
|
|
828
|
+
deleteFooter: 'Elimina aquesta màquina del teu compte. L\'historial de sessions es conservarà, però no podràs iniciar noves sessions en aquesta màquina.',
|
|
829
|
+
deleteConfirmTitle: 'Eliminar aquesta màquina?',
|
|
830
|
+
deleteConfirmMessage: 'La màquina s\'eliminarà del teu compte. L\'historial de sessions es conservarà, però no podràs iniciar noves sessions fins que tornis a connectar el dimoni.',
|
|
831
|
+
deleteFailed: 'No s\'ha pogut eliminar la màquina.',
|
|
832
|
+
},
|
|
833
|
+
|
|
834
|
+
message: {
|
|
835
|
+
switchedToMode: ({ mode }: { mode: string }) => `S'ha canviat al mode ${mode}`,
|
|
836
|
+
unknownEvent: 'Esdeveniment desconegut',
|
|
837
|
+
usageLimitUntil: ({ time }: { time: string }) => `Límit d'ús assolit fins a ${time}`,
|
|
838
|
+
unknownTime: 'temps desconegut',
|
|
839
|
+
},
|
|
840
|
+
|
|
841
|
+
codex: {
|
|
842
|
+
// Codex permission dialog buttons
|
|
843
|
+
permissions: {
|
|
844
|
+
yesForSession: 'Sí, i no preguntar per aquesta sessió',
|
|
845
|
+
stopAndExplain: 'Atura, i explica què fer',
|
|
846
|
+
}
|
|
847
|
+
},
|
|
848
|
+
|
|
849
|
+
claude: {
|
|
850
|
+
// Claude permission dialog buttons
|
|
851
|
+
permissions: {
|
|
852
|
+
yesAllowAllEdits: 'Sí, permet totes les edicions durant aquesta sessió',
|
|
853
|
+
yesAllowEverything: 'Sí, permet-ho tot durant aquesta sessió',
|
|
854
|
+
yesForTool: 'Sí, no tornis a preguntar per aquesta eina',
|
|
855
|
+
noTellClaude: 'No, proporciona comentaris',
|
|
856
|
+
}
|
|
857
|
+
},
|
|
858
|
+
|
|
859
|
+
textSelection: {
|
|
860
|
+
// Text selection screen
|
|
861
|
+
selectText: 'Seleccionar rang de text',
|
|
862
|
+
title: 'Seleccionar text',
|
|
863
|
+
noTextProvided: 'No s\'ha proporcionat text',
|
|
864
|
+
textNotFound: 'Text no trobat o expirat',
|
|
865
|
+
textCopied: 'Text copiat al porta-retalls',
|
|
866
|
+
failedToCopy: 'No s\'ha pogut copiar el text al porta-retalls',
|
|
867
|
+
noTextToCopy: 'No hi ha text disponible per copiar',
|
|
868
|
+
},
|
|
869
|
+
|
|
870
|
+
markdown: {
|
|
871
|
+
// Markdown copy functionality
|
|
872
|
+
codeCopied: 'Codi copiat',
|
|
873
|
+
copyFailed: 'Error al copiar',
|
|
874
|
+
mermaidRenderFailed: 'Error al renderitzar el diagrama mermaid',
|
|
875
|
+
},
|
|
876
|
+
|
|
877
|
+
artifacts: {
|
|
878
|
+
title: 'Artefactes',
|
|
879
|
+
countSingular: '1 artefacte',
|
|
880
|
+
countPlural: ({ count }: { count: number }) => `${count} artefactes`,
|
|
881
|
+
empty: 'Encara no hi ha artefactes',
|
|
882
|
+
emptyDescription: 'Crea el teu primer artefacte per desar i organitzar contingut',
|
|
883
|
+
new: 'Nou artefacte',
|
|
884
|
+
edit: 'Edita artefacte',
|
|
885
|
+
delete: 'Elimina',
|
|
886
|
+
updateError: 'No s\'ha pogut actualitzar l\'artefacte. Si us plau, torna-ho a provar.',
|
|
887
|
+
notFound: 'Artefacte no trobat',
|
|
888
|
+
discardChanges: 'Descartar els canvis?',
|
|
889
|
+
discardChangesDescription: 'Tens canvis sense desar. Estàs segur que vols descartar-los?',
|
|
890
|
+
deleteConfirm: 'Eliminar artefacte?',
|
|
891
|
+
deleteConfirmDescription: 'Aquest artefacte s\'eliminarà permanentment.',
|
|
892
|
+
titlePlaceholder: 'Títol de l\'artefacte',
|
|
893
|
+
bodyPlaceholder: 'Escriu aquí el contingut...',
|
|
894
|
+
save: 'Desa',
|
|
895
|
+
saving: 'Desant...',
|
|
896
|
+
loading: 'Carregant...',
|
|
897
|
+
error: 'Error en carregar els artefactes',
|
|
898
|
+
titleLabel: 'TÍTOL',
|
|
899
|
+
bodyLabel: 'CONTINGUT',
|
|
900
|
+
emptyFieldsError: 'Si us plau, introdueix un títol o contingut',
|
|
901
|
+
createError: 'No s\'ha pogut crear l\'artefacte. Si us plau, torna-ho a provar.',
|
|
902
|
+
},
|
|
903
|
+
|
|
904
|
+
friends: {
|
|
905
|
+
// Friends feature
|
|
906
|
+
title: 'Amics',
|
|
907
|
+
manageFriends: 'Gestiona els teus amics i connexions',
|
|
908
|
+
searchTitle: 'Buscar amics',
|
|
909
|
+
pendingRequests: 'Sol·licituds d\'amistat',
|
|
910
|
+
myFriends: 'Els meus amics',
|
|
911
|
+
noFriendsYet: 'Encara no tens amics',
|
|
912
|
+
findFriends: 'Buscar amics',
|
|
913
|
+
remove: 'Eliminar',
|
|
914
|
+
pendingRequest: 'Pendent',
|
|
915
|
+
sentOn: ({ date }: { date: string }) => `Enviat el ${date}`,
|
|
916
|
+
accept: 'Acceptar',
|
|
917
|
+
reject: 'Rebutjar',
|
|
918
|
+
addFriend: 'Afegir amic',
|
|
919
|
+
alreadyFriends: 'Ja sou amics',
|
|
920
|
+
requestPending: 'Sol·licitud pendent',
|
|
921
|
+
searchInstructions: 'Introdueix un nom d\'usuari per buscar amics',
|
|
922
|
+
searchPlaceholder: 'Introdueix nom d\'usuari...',
|
|
923
|
+
searching: 'Buscant...',
|
|
924
|
+
userNotFound: 'Usuari no trobat',
|
|
925
|
+
noUserFound: 'No s\'ha trobat cap usuari amb aquest nom',
|
|
926
|
+
checkUsername: 'Si us plau, verifica el nom d\'usuari i torna-ho a provar',
|
|
927
|
+
howToFind: 'Com trobar amics',
|
|
928
|
+
findInstructions: 'Cerca amics pel seu nom d\'usuari. Tant tu com el teu amic heu de tenir GitHub connectat per enviar sol·licituds d\'amistat.',
|
|
929
|
+
requestSent: 'Sol·licitud d\'amistat enviada!',
|
|
930
|
+
requestAccepted: 'Sol·licitud d\'amistat acceptada!',
|
|
931
|
+
requestRejected: 'Sol·licitud d\'amistat rebutjada',
|
|
932
|
+
friendRemoved: 'Amic eliminat',
|
|
933
|
+
confirmRemove: 'Eliminar amic',
|
|
934
|
+
confirmRemoveMessage: 'Estàs segur que vols eliminar aquest amic?',
|
|
935
|
+
cannotAddYourself: 'No pots enviar-te una sol·licitud d\'amistat a tu mateix',
|
|
936
|
+
bothMustHaveGithub: 'Ambdós usuaris han de tenir GitHub connectat per ser amics',
|
|
937
|
+
status: {
|
|
938
|
+
none: 'No connectat',
|
|
939
|
+
requested: 'Sol·licitud enviada',
|
|
940
|
+
pending: 'Sol·licitud pendent',
|
|
941
|
+
friend: 'Amics',
|
|
942
|
+
rejected: 'Rebutjada',
|
|
943
|
+
},
|
|
944
|
+
acceptRequest: 'Acceptar sol·licitud',
|
|
945
|
+
removeFriend: 'Eliminar dels amics',
|
|
946
|
+
removeFriendConfirm: ({ name }: { name: string }) => `Estàs segur que vols eliminar ${name} dels teus amics?`,
|
|
947
|
+
requestSentDescription: ({ name }: { name: string }) => `La teva sol·licitud d\'amistat ha estat enviada a ${name}`,
|
|
948
|
+
requestFriendship: 'Sol·licitar amistat',
|
|
949
|
+
cancelRequest: 'Cancel·lar sol·licitud d\'amistat',
|
|
950
|
+
cancelRequestConfirm: ({ name }: { name: string }) => `Cancel·lar la teva sol·licitud d\'amistat a ${name}?`,
|
|
951
|
+
denyRequest: 'Rebutjar sol·licitud',
|
|
952
|
+
nowFriendsWith: ({ name }: { name: string }) => `Ara ets amic de ${name}`,
|
|
953
|
+
},
|
|
954
|
+
|
|
955
|
+
usage: {
|
|
956
|
+
// Usage panel strings
|
|
957
|
+
today: 'Avui',
|
|
958
|
+
last7Days: 'Últims 7 dies',
|
|
959
|
+
last30Days: 'Últims 30 dies',
|
|
960
|
+
totalTokens: 'Tokens totals',
|
|
961
|
+
totalCost: 'Cost total',
|
|
962
|
+
tokens: 'Tokens',
|
|
963
|
+
cost: 'Cost',
|
|
964
|
+
usageOverTime: 'Ús al llarg del temps',
|
|
965
|
+
byModel: 'Per model',
|
|
966
|
+
noData: "No hi ha dades d'ús disponibles",
|
|
967
|
+
},
|
|
968
|
+
|
|
969
|
+
imageUpload: {
|
|
970
|
+
permissionTitle: 'Accés a la biblioteca de fotos',
|
|
971
|
+
permissionMessage: "Permet l'accés a la teva biblioteca de fotos per adjuntar imatges als missatges.",
|
|
972
|
+
limitTitle: "Límit d'imatges assolit",
|
|
973
|
+
limitMessage: ({ max }: { max: number }) => `Pots adjuntar fins a ${max} imatges per missatge.`,
|
|
974
|
+
fileTooLargeTitle: 'Fitxer massa gran',
|
|
975
|
+
fileTooLargeMessage: ({ name, maxMb }: { name: string; maxMb: number }) => `"${name}" supera el límit de ${maxMb}MB i no s'ha afegit.`,
|
|
976
|
+
uploadFailedTitle: 'Error en la càrrega',
|
|
977
|
+
uploadFailedMessage: ({ count }: { count: number }) => count === 1
|
|
978
|
+
? 'No s\'ha pogut pujar una imatge i no s\'ha enviat.'
|
|
979
|
+
: `No s'han pogut pujar ${count} imatges i no s'han enviat.`,
|
|
980
|
+
notSupportedTitle: 'Imatges no compatibles',
|
|
981
|
+
notSupportedMessage: 'Aquest agent no admet imatges adjuntes. Només s\'ha enviat el text.',
|
|
982
|
+
},
|
|
983
|
+
|
|
984
|
+
feed: {
|
|
985
|
+
// Feed notifications for friend requests and acceptances
|
|
986
|
+
friendRequestFrom: ({ name }: { name: string }) => `${name} t'ha enviat una sol·licitud d'amistat`,
|
|
987
|
+
friendRequestGeneric: 'Nova sol·licitud d\'amistat',
|
|
988
|
+
friendAccepted: ({ name }: { name: string }) => `Ara ets amic de ${name}`,
|
|
989
|
+
friendAcceptedGeneric: 'Sol·licitud d\'amistat acceptada',
|
|
990
|
+
}
|
|
991
|
+
} as const;
|
|
992
|
+
|
|
993
|
+
export type TranslationsCa = typeof ca;
|