diff --git a/lingui.config.ts b/lingui.config.ts new file mode 100644 index 00000000..39665c92 --- /dev/null +++ b/lingui.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "@lingui/cli"; +import { formatter } from "@lingui/format-po"; + +// i18n is renderer-only: macros are expanded by Babel in the Vite pipeline, and +// the main process (tsdown) carries no catalogs. Adding a language is two steps: +// add its code to `locales` here (and to SUPPORTED_LOCALES in +// src/shared/locale.ts), then run `pnpm i18n:extract`. +export default defineConfig({ + sourceLocale: "en", + locales: ["en", "es", "ru", "uk", "zh-CN", "ja", "pt-BR", "de", "fr", "ko", "pl", "vi", "tr"], + catalogs: [ + { + path: "src/renderer/locales/{locale}/messages", + include: ["src/renderer"], + exclude: ["**/*.test.*", "**/node_modules/**"], + }, + ], + format: formatter({ lineNumbers: false }), +}); diff --git a/package.json b/package.json index 6e2936cf..bbc3400c 100644 --- a/package.json +++ b/package.json @@ -45,11 +45,13 @@ "lint:fix": "oxlint --type-aware --fix .", "fmt": "oxfmt --write .", "fmt:check": "oxfmt --check .", - "test": "vitest run", - "test:perf:cli-hook": "vitest run src/supervisor/runtime/cliHookEventChain.perf.test.ts", - "test:integration:providers": "vitest run --config vitest.integration.config.ts", + "test": "vitest run --configLoader runner", + "test:perf:cli-hook": "vitest run --configLoader runner src/supervisor/runtime/cliHookEventChain.perf.test.ts", + "test:integration:providers": "vitest run --configLoader runner --config vitest.integration.config.ts", "update-server": "node scripts/update-server.mjs", "db:clone": "node scripts/clone-db.mjs", + "i18n:extract": "lingui extract", + "i18n:extract:clean": "lingui extract --clean", "prepare": "husky" }, "dependencies": { @@ -68,6 +70,8 @@ "@heroui/styles": "^3.0.3", "@huggingface/transformers": "^4.2.0", "@lightcode/agents-usage": "workspace:*", + "@lingui/core": "6.2.0", + "@lingui/react": "6.2.0", "@monaco-editor/react": "^4.7.0", "@opencode-ai/sdk": "^1.14.48", "@sentry/electron": "^7.13.0", @@ -109,6 +113,10 @@ "devDependencies": { "@babel/core": "^7.29.0", "@electron/rebuild": "^4.0.4", + "@lingui/babel-plugin-lingui-macro": "6.2.0", + "@lingui/cli": "6.2.0", + "@lingui/format-po": "6.2.0", + "@lingui/vite-plugin": "6.2.0", "@rolldown/plugin-babel": "^0.2.3", "@sentry/cli": "^3.4.2", "@tailwindcss/postcss": "^4.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ccc690a2..50bbe82c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,12 @@ importers: '@lightcode/agents-usage': specifier: workspace:* version: link:packages/agents-usage + '@lingui/core': + specifier: 6.2.0 + version: 6.2.0 + '@lingui/react': + specifier: 6.2.0 + version: 6.2.0(react@19.2.5) '@monaco-editor/react': specifier: ^4.7.0 version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -189,6 +195,18 @@ importers: '@electron/rebuild': specifier: ^4.0.4 version: 4.0.4 + '@lingui/babel-plugin-lingui-macro': + specifier: 6.2.0 + version: 6.2.0 + '@lingui/cli': + specifier: 6.2.0 + version: 6.2.0 + '@lingui/format-po': + specifier: 6.2.0 + version: 6.2.0 + '@lingui/vite-plugin': + specifier: 6.2.0 + version: 6.2.0(@babel/core@7.29.7)(@lingui/babel-plugin-lingui-macro@6.2.0)(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/runtime@7.29.7)(rolldown@1.0.3)(vite@8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0)))(rolldown@1.0.3)(vite@8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0)) '@rolldown/plugin-babel': specifier: ^0.2.3 version: 0.2.3(@babel/core@7.29.7)(@babel/runtime@7.29.7)(rolldown@1.0.3)(vite@8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0)) @@ -595,6 +613,10 @@ packages: '@chevrotain/utils@12.0.0': resolution: {integrity: sha512-lB59uJoaGIfOOL9knQqQRfhl9g7x8/wqFkp13zTdkRu1huG9kg6IJs1O8hqj9rs6h7orGxHJUKb+mX3rPbWGhA==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@csstools/color-helpers@6.0.2': resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} engines: {node: '>=20.19.0'} @@ -1152,6 +1174,14 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1172,6 +1202,69 @@ packages: resolution: {integrity: sha512-hloP58zRVCRSpgDxmqCWJNlizAlUgJFqG2ypq79DCvyv9tHjRYMDOcPFjzfl/A1/YxDvRCZz8wvZvmapQnKwFQ==} engines: {node: '>=12'} + '@lingui/babel-plugin-extract-messages@6.2.0': + resolution: {integrity: sha512-/iPL0DSvq6oZQjxLSHXofaxq18joGKEYzJjaZUWw9jdyWpRp1kNFMHPQVPbemVBR2PSJUNS7jlOu1iph7qtkrQ==} + engines: {node: '>=22.19.0'} + + '@lingui/babel-plugin-lingui-macro@6.2.0': + resolution: {integrity: sha512-sZqrd+RFLOePcimYoyNWs7n8brfkD5MXKb9trYNaV+/obt3C02LEpLrdIqUvykpn5+NgeZY6H0x/HqaXTil5vA==} + engines: {node: '>=22.19.0'} + + '@lingui/cli@6.2.0': + resolution: {integrity: sha512-47j2VnDCRAuxlwFnBshQqTGBmkiRvr2jUs7FzEHT0z/drCOhNwHoNCDDAGC/1SwsiK9kaeNZcObyZfrpe3z3PA==} + engines: {node: '>=22.19.0'} + hasBin: true + + '@lingui/conf@6.2.0': + resolution: {integrity: sha512-SVZlXH0MJgS6Cu9NFCtJeqT7VzbKp5VDQcd9j51x6lRCzknPJS4CjJ4GWzu0RHoTmtQyoADLzuQTPrzD0ommLA==} + engines: {node: '>=22.19.0'} + + '@lingui/core@6.2.0': + resolution: {integrity: sha512-iNxDy9+GfwBGi9YVgAt7q0V7hA7kwt5t+akScFWvIyzII0KpMd4oLq0JyPsedsKloWVmL8V0PuvtThM0Ja4SWg==} + engines: {node: '>=22.19.0'} + peerDependencies: + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + '@lingui/format-po@6.2.0': + resolution: {integrity: sha512-rchqiXGySJagw/sN+fL6Wi9A1hAooSO7B/5qPmHbH2DP5kGnMbE61MwqvhGaJQrWMtnac9AGz1PC4AKBWKVAZw==} + engines: {node: '>=22.19.0'} + + '@lingui/message-utils@6.2.0': + resolution: {integrity: sha512-oFmD6xYO40kC/7qBdxieEVekoYNI0KWtizCOanrlT6RXYPSwn5hH4Hf6u0mErEf23m/zNGDMO+D6YNQ4z7IxwQ==} + engines: {node: '>=22.19.0'} + + '@lingui/react@6.2.0': + resolution: {integrity: sha512-DDdzKgHG+j13qA4In3nqBCSJDhdW9baIx+0a9/5znoHlnJsR2VG3AqlAtCmuTMr7uhjzwuZYJgG2Ms718Rr39A==} + engines: {node: '>=22.19.0'} + peerDependencies: + babel-plugin-macros: 2 || 3 + react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + '@lingui/vite-plugin@6.2.0': + resolution: {integrity: sha512-Ti1wFsY40LP7+aXoooZ/fp1HqKLABBibaBNlboUYogsw6vZFatc3ZRYjOs6WcKozzlcawz8IeznGbCtAn3WVnA==} + engines: {node: '>=22.19.0'} + peerDependencies: + '@babel/core': ^7.29.6 + '@lingui/babel-plugin-lingui-macro': ^5 || ^6 + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + rolldown: ^1.0.0-rc.5 + vite: ^8.0.16 + peerDependenciesMeta: + '@babel/core': + optional: true + '@lingui/babel-plugin-lingui-macro': + optional: true + '@rolldown/plugin-babel': + optional: true + rolldown: + optional: true + '@malept/cross-spawn-promise@2.0.0': resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} engines: {node: '>= 12.13.0'} @@ -1183,6 +1276,12 @@ packages: '@mermaid-js/parser@1.1.0': resolution: {integrity: sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw==} + '@messageformat/date-skeleton@1.1.0': + resolution: {integrity: sha512-rmGAfB1tIPER+gh3p/RgA+PVeRE/gxuQ2w4snFWPF5xtb5mbWR7Cbw7wCOftcUypbD6HVoxrVdyyghPm3WzP5A==} + + '@messageformat/parser@5.1.1': + resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==} + '@modelcontextprotocol/sdk@1.29.0': resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} engines: {node: '>=18'} @@ -2280,6 +2379,9 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} + '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} @@ -2817,6 +2919,15 @@ packages: '@types/http-cache-semantics@4.2.0': resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/jsesc@2.5.1': resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} @@ -2888,6 +2999,12 @@ packages: '@types/verror@1.10.11': resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} + '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -3293,6 +3410,10 @@ packages: resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==} engines: {node: '>=4'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001787: resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} @@ -3315,6 +3436,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} @@ -3336,6 +3461,10 @@ packages: resolution: {integrity: sha512-csJvb+6kEiQaqo1woTdSAuOWdN0WTLIydkKrBnS+V5gZz0oqBrp4kQ35519QgK6TpBThiG3V1vNSHlIkv4AglQ==} engines: {node: '>=22.0.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -3371,6 +3500,14 @@ packages: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} @@ -3413,6 +3550,14 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -4543,6 +4688,10 @@ packages: resolution: {integrity: sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==} engines: {node: '>=4'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-ip@3.1.0: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} @@ -4581,6 +4730,10 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} @@ -4605,6 +4758,14 @@ packages: engines: {node: '>=10'} hasBin: true + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -4616,6 +4777,9 @@ packages: jose@6.2.3: resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + js-sha256@0.10.1: + resolution: {integrity: sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4704,6 +4868,10 @@ packages: lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -4778,6 +4946,10 @@ packages: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + linkifyjs@4.3.3: resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==} @@ -4806,6 +4978,10 @@ packages: lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -5122,6 +5298,9 @@ packages: monaco-editor@0.55.1: resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==} + moo@0.5.3: + resolution: {integrity: sha512-m2fmM2dDm7GZQsY7KK2cme8agi+AAljILjQnof7p1ZMDe6dQ4bdnSMx0cPppudoeNv5hEFQirN6u+O4fDE0IWA==} + motion-dom@12.40.0: resolution: {integrity: sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==} @@ -5206,6 +5385,10 @@ packages: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} @@ -5267,6 +5450,10 @@ packages: onnxruntime-web@1.26.0-dev.20260416-b7804b056c: resolution: {integrity: sha512-MD6Ss4GSpQBo6zqoJzyT9LRbKYs7x/JVN23FT24EcEvlqF4VuzPOeH6X38orZPKHQDbprn7K+SBpu0/mj2CQiw==} + ora@9.4.0: + resolution: {integrity: sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==} + engines: {node: '>=20'} + orderedmap@2.1.1: resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} @@ -5401,6 +5588,10 @@ packages: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} + pofile-ts@4.0.3: + resolution: {integrity: sha512-sz1pnjgEfPyZ+QvaeX3NtCmbYnEvG01LZRLoN/uXoLtPZtxCIH5IctL7yXXc0fFyk/fqV6K8g3hlNfr6IJwupA==} + engines: {node: '>=20'} + points-on-curve@0.2.0: resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} @@ -5450,6 +5641,10 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + proc-log@6.1.0: resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -5525,6 +5720,11 @@ packages: resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} engines: {node: '>=10'} + pseudolocale@2.2.0: + resolution: {integrity: sha512-O+D2eU7fO9wVLqrohvt9V/9fwMadnJQ4jxwiK+LeNEqhMx8JYx4xQHkArDCJFAdPPOp/pQq6z5L37eBvAoc8jw==} + engines: {node: '>=16.0.0'} + hasBin: true + pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} @@ -5593,6 +5793,9 @@ packages: react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-markdown@10.1.0: resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} peerDependencies: @@ -5631,6 +5834,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -5929,6 +6136,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -5952,6 +6163,10 @@ packages: std-env@4.0.0: resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} + streamdown@2.5.0: resolution: {integrity: sha512-/tTnURfIOxZK/pqJAxsfCvETG/XCJHoWnk3jq9xLcuz6CSpnjjuxSRBTTL4PKGhxiZQf0lqPxGhImdpwcZ2XwA==} peerDependencies: @@ -6610,6 +6825,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + zod-to-json-schema@3.25.2: resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: @@ -6944,6 +7163,9 @@ snapshots: '@chevrotain/utils@12.0.0': {} + '@colors/colors@1.5.0': + optional: true + '@csstools/color-helpers@6.0.2': {} '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': @@ -7497,6 +7719,19 @@ snapshots: dependencies: minipass: 7.1.3 + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.10 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 25.9.2 + '@types/yargs': 17.0.35 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7520,6 +7755,93 @@ snapshots: dependencies: jsbi: 4.3.2 + '@lingui/babel-plugin-extract-messages@6.2.0': {} + + '@lingui/babel-plugin-lingui-macro@6.2.0': + dependencies: + '@babel/core': 7.29.7 + '@babel/types': 7.29.0 + '@lingui/conf': 6.2.0 + '@lingui/message-utils': 6.2.0 + transitivePeerDependencies: + - supports-color + + '@lingui/cli@6.2.0': + dependencies: + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.0 + '@lingui/babel-plugin-extract-messages': 6.2.0 + '@lingui/babel-plugin-lingui-macro': 6.2.0 + '@lingui/conf': 6.2.0 + '@lingui/core': 6.2.0 + '@lingui/format-po': 6.2.0 + '@lingui/message-utils': 6.2.0 + chokidar: 5.0.0 + cli-table3: 0.6.5 + commander: 14.0.3 + esbuild: 0.28.1 + jiti: 2.6.1 + micromatch: 4.0.8 + ms: 2.1.3 + normalize-path: 3.0.0 + ora: 9.4.0 + pseudolocale: 2.2.0 + source-map: 0.7.6 + tinypool: 2.1.0 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + '@lingui/conf@6.2.0': + dependencies: + jest-validate: 29.7.0 + jiti: 2.6.1 + lilconfig: 3.1.3 + normalize-path: 3.0.0 + + '@lingui/core@6.2.0': + dependencies: + '@lingui/babel-plugin-lingui-macro': 6.2.0 + '@lingui/message-utils': 6.2.0 + transitivePeerDependencies: + - supports-color + + '@lingui/format-po@6.2.0': + dependencies: + '@lingui/conf': 6.2.0 + '@lingui/message-utils': 6.2.0 + pofile-ts: 4.0.3 + + '@lingui/message-utils@6.2.0': + dependencies: + '@messageformat/date-skeleton': 1.1.0 + '@messageformat/parser': 5.1.1 + js-sha256: 0.10.1 + + '@lingui/react@6.2.0(react@19.2.5)': + dependencies: + '@lingui/babel-plugin-lingui-macro': 6.2.0 + '@lingui/core': 6.2.0 + react: 19.2.5 + transitivePeerDependencies: + - supports-color + + '@lingui/vite-plugin@6.2.0(@babel/core@7.29.7)(@lingui/babel-plugin-lingui-macro@6.2.0)(@rolldown/plugin-babel@0.2.3(@babel/core@7.29.7)(@babel/runtime@7.29.7)(rolldown@1.0.3)(vite@8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0)))(rolldown@1.0.3)(vite@8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0))': + dependencies: + '@lingui/cli': 6.2.0 + '@lingui/conf': 6.2.0 + vite: 8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0) + optionalDependencies: + '@babel/core': 7.29.7 + '@lingui/babel-plugin-lingui-macro': 6.2.0 + '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.7)(@babel/runtime@7.29.7)(rolldown@1.0.3)(vite@8.0.16(@types/node@25.6.0)(esbuild@0.28.1)(jiti@2.6.1)(yaml@2.9.0)) + rolldown: 1.0.3 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + '@malept/cross-spawn-promise@2.0.0': dependencies: cross-spawn: 7.0.6 @@ -7537,6 +7859,12 @@ snapshots: dependencies: langium: 4.2.3 + '@messageformat/date-skeleton@1.1.0': {} + + '@messageformat/parser@5.1.1': + dependencies: + moo: 0.5.3 + '@modelcontextprotocol/sdk@1.29.0(zod@4.4.2)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.25) @@ -8572,6 +8900,8 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@sinclair/typebox@0.27.10': {} + '@sindresorhus/is@4.6.0': {} '@spectrum-icons/ui@3.7.0(@adobe/react-spectrum@3.47.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': @@ -9144,6 +9474,16 @@ snapshots: '@types/http-cache-semantics@4.2.0': {} + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + '@types/jsesc@2.5.1': {} '@types/keyv@3.1.4': @@ -9232,6 +9572,12 @@ snapshots: '@types/verror@1.10.11': optional: true + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.35': + dependencies: + '@types/yargs-parser': 21.0.3 + '@types/yauzl@2.10.3': dependencies: '@types/node': 25.9.1 @@ -9675,6 +10021,8 @@ snapshots: camelcase@4.1.0: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001787: {} ccount@2.0.1: {} @@ -9697,6 +10045,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + character-entities-html4@2.1.0: {} character-entities-legacy@3.0.0: {} @@ -9718,6 +10068,10 @@ snapshots: '@chevrotain/types': 12.0.0 '@chevrotain/utils': 12.0.0 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + chownr@1.1.4: {} chownr@3.0.0: {} @@ -9740,6 +10094,14 @@ snapshots: dependencies: restore-cursor: 5.1.0 + cli-spinners@3.4.0: {} + + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 @@ -9783,6 +10145,10 @@ snapshots: comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} + + commander@14.0.3: {} + commander@5.1.0: {} commander@7.2.0: {} @@ -10978,6 +11344,8 @@ snapshots: global-dirs: 0.1.1 is-path-inside: 1.0.1 + is-interactive@2.0.0: {} + is-ip@3.1.0: dependencies: ip-regex: 4.3.0 @@ -11002,6 +11370,8 @@ snapshots: is-stream@2.0.1: {} + is-unicode-supported@2.1.0: {} + isbinaryfile@4.0.10: {} isbinaryfile@5.0.7: {} @@ -11018,6 +11388,17 @@ snapshots: filelist: 1.0.6 picocolors: 1.1.1 + jest-get-type@29.6.3: {} + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + jiti@2.6.1: {} joi@18.1.2: @@ -11032,6 +11413,8 @@ snapshots: jose@6.2.3: {} + js-sha256@0.10.1: {} + js-tokens@4.0.0: {} js-yaml@4.2.0: @@ -11135,6 +11518,8 @@ snapshots: lazy-val@1.0.5: {} + leven@3.1.0: {} + lightningcss-android-arm64@1.32.0: optional: true @@ -11184,6 +11569,8 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 + lilconfig@3.1.3: {} + linkifyjs@4.3.3: {} lint-staged@17.0.4: @@ -11213,6 +11600,11 @@ snapshots: lodash@4.18.1: {} + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 + log-update@6.1.0: dependencies: ansi-escapes: 7.3.0 @@ -11733,6 +12125,8 @@ snapshots: dompurify: 3.4.10 marked: 14.0.0 + moo@0.5.3: {} + motion-dom@12.40.0: dependencies: motion-utils: 12.39.0 @@ -11819,6 +12213,8 @@ snapshots: dependencies: remove-trailing-separator: 1.1.0 + normalize-path@3.0.0: {} + normalize-url@6.1.0: {} npm-run-path@2.0.2: @@ -11880,6 +12276,17 @@ snapshots: platform: 1.3.6 protobufjs: 7.6.4 + ora@9.4.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.3.2 + string-width: 8.2.1 + orderedmap@2.1.1: {} oxfmt@0.47.0: @@ -12033,6 +12440,8 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 + pofile-ts@4.0.3: {} + points-on-curve@0.2.0: {} points-on-path@0.2.1: @@ -12094,6 +12503,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + proc-log@6.1.0: {} progress@2.0.3: {} @@ -12214,6 +12629,10 @@ snapshots: proxy-from-env@2.1.0: {} + pseudolocale@2.2.0: + dependencies: + commander: 10.0.1 + pseudomap@1.0.2: {} pump@3.0.4: @@ -12332,6 +12751,8 @@ snapshots: react-is@17.0.2: {} + react-is@18.3.1: {} + react-markdown@10.1.0(@types/react@19.2.14)(react@19.2.5): dependencies: '@types/hast': 3.0.4 @@ -12411,6 +12832,8 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@5.0.0: {} + redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -12817,6 +13240,8 @@ snapshots: source-map@0.6.1: {} + source-map@0.7.6: {} + space-separated-tokens@2.0.2: {} sprintf-js@1.1.3: {} @@ -12831,6 +13256,8 @@ snapshots: std-env@4.0.0: {} + stdin-discarder@0.3.2: {} + streamdown@2.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: clsx: 2.1.1 @@ -13452,6 +13879,8 @@ snapshots: yocto-queue@0.1.0: {} + yoctocolors@2.1.2: {} + zod-to-json-schema@3.25.2(zod@4.4.2): dependencies: zod: 4.4.2 diff --git a/src/main/sharedSettingsFile.test.ts b/src/main/sharedSettingsFile.test.ts index ad6567c2..b36f75b1 100644 --- a/src/main/sharedSettingsFile.test.ts +++ b/src/main/sharedSettingsFile.test.ts @@ -35,6 +35,8 @@ describe("sharedSettingsFile", () => { writeSharedSettingsFile(settingsPath, { themeMode: "dark", themePreset: "default", + locale: "system", + gitTextLanguage: "en", terminalPosition: "right", commitGenProvider: "auto", commitGenModel: "", @@ -124,6 +126,8 @@ describe("sharedSettingsFile", () => { expect(readSharedSettingsFile(settingsPath)).toEqual({ themeMode: "dark", themePreset: "default", + locale: "system", + gitTextLanguage: "en", terminalPosition: "right", commitGenProvider: "auto", commitGenModel: "", diff --git a/src/renderer/RendererCrashScreen.tsx b/src/renderer/RendererCrashScreen.tsx index 1891ee51..65a614b9 100644 --- a/src/renderer/RendererCrashScreen.tsx +++ b/src/renderer/RendererCrashScreen.tsx @@ -1,7 +1,10 @@ import { Component, useState, type ErrorInfo, type ReactNode } from "react"; import { Copy, RefreshCw } from "lucide-react"; +import { msg } from "@lingui/core/macro"; +import type { MessageDescriptor } from "@lingui/core"; import { Button } from "./components/common"; import { captureRendererException } from "./diagnostics/sentry"; +import { i18n } from "./i18n/i18n"; export type RendererCrashKind = "bootstrap" | "react" | "uncaught" | "unhandled-rejection"; @@ -117,16 +120,16 @@ export function formatRendererCrashReport(report: RendererCrashReport): string { return lines.filter((line): line is string => line !== null).join("\n"); } -function crashTitle(kind: RendererCrashKind): string { +function crashTitle(kind: RendererCrashKind): MessageDescriptor { switch (kind) { case "bootstrap": - return "Renderer failed during startup"; + return msg`Renderer failed during startup`; case "react": - return "Renderer hit a React error"; + return msg`Renderer hit a React error`; case "unhandled-rejection": - return "Renderer hit an unhandled promise rejection"; + return msg`Renderer hit an unhandled promise rejection`; case "uncaught": - return "Renderer hit an uncaught error"; + return msg`Renderer hit an uncaught error`; } } @@ -153,25 +156,26 @@ export function RendererCrashScreen(props: RendererCrashScreenProps) {
Renderer crashed
-{i18n._(msg`Renderer crashed`)}
+- The normal app shell could not render. The diagnostics below are shown before reload - so the failure can be investigated. + {i18n._( + msg`The normal app shell could not render. The diagnostics below are shown before reload so the failure can be investigated.`, + )}
Loading…
+
+
- Usage
+
{wslDistro - ? `Scanning ${wslDistro} for installed CLIs. This usually takes a couple of seconds.` + ? t`Scanning ${wslDistro} for installed CLIs. This usually takes a couple of seconds.` : scanTargets.length > 1 - ? "Scanning Windows and WSL for installed CLIs. This usually takes a couple of seconds." - : "Scanning your system for installed CLIs. This usually takes a couple of seconds."} + ? t`Scanning Windows and WSL for installed CLIs. This usually takes a couple of seconds.` + : t`Scanning your system for installed CLIs. This usually takes a couple of seconds.`}
{scanTargets.length > 1 ? (No content streams.
+
+
- Opened {request.receivedAt} (#{index + 1})
+
{formatJsonBlock(request.payload)}
@@ -114,6 +119,7 @@ function OpenRequestDebug(props: { index: number; request: OpenRuntimeRequest })
/** Inspector for canonical runtime chat items (payload + streams) for one thread. */
export function ChatRuntimeDebugPanel({ threadId }: ChatRuntimeDebugPanelProps) {
+ const { t } = useLingui();
const itemIds = useAppStore((s) => s.runtimeItemIdsByThread[threadId] ?? EMPTY_IDS);
const itemsById = useAppStore((s) => s.runtimeItemsByIdByThread[threadId] ?? EMPTY_ITEMS_BY_ID);
const requests = useAppStore((s) => s.runtimeRequestsByThread[threadId] ?? EMPTY_REQ);
@@ -144,28 +150,34 @@ export function ChatRuntimeDebugPanel({ threadId }: ChatRuntimeDebugPanelProps)
setQuery(e.target.value)}
/>
{trimmed ? (
- {filteredCount} / {totalCount} matches
+
+ {filteredCount} / {totalCount} matches
+
) : null}
No runtime items yet for this thread.
+
+
No matches for “{query}”.
+
+
- Open requests
+
- This removes later messages and restores files when a checkpoint snapshot is
- available.
+
Subagent not found.
+
+
Working…
+
+
- Run {workflow.runId}
+
- Workflow finished. Child agents ran in a separate process and aren’t streamed here
- yet.
+
- Workflow is running in the background. Child agents run in a separate process and aren’t
- streamed here yet.
+
- {loading ? "Loading…" : emptyHint} + {loading ? t`Loading…` : emptyHint}
) : (
- Select an agent to see its prompt and outcome.
+
- Last tool: {agent.lastToolName}
+
{agent.promptPreview}
@@ -309,7 +315,7 @@ function AgentDetail({ agent, phaseTitle }: { agent: WorkflowAgent | null; phase
{agent.resultPreview ? (
- Outcome
+ Outcome
{agent.resultPreview}
@@ -319,7 +325,7 @@ function AgentDetail({ agent, phaseTitle }: { agent: WorkflowAgent | null; phase
{agent.chat?.length ? (
- Chat
+ Chat
{agent.chat.map((entry, index) => (
@@ -361,7 +367,9 @@ function UnphasedAgents({
}) {
return (
- Unphased:
+
+ Unphased:
+
{agents.map((agent) => (
;
+ return ;
}
if (state === "failed" || state === "cancelled") {
return ;
@@ -392,15 +401,16 @@ function AgentStateIcon({ state }: { state: WorkflowAgentState | undefined }) {
}
function StatusBadge({ status }: { status: WorkflowRunStatus }) {
+ const { t } = useLingui();
const label =
status === "running"
- ? "running"
+ ? t`running`
: status === "completed"
- ? "done"
+ ? t`done`
: status === "failed"
- ? "failed"
+ ? t`failed`
: status === "cancelled"
- ? "cancelled"
+ ? t`cancelled`
: null;
if (!label) return null;
const className =
diff --git a/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.test.tsx b/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.test.tsx
index 473cc463..cdde80f5 100644
--- a/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.test.tsx
+++ b/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.test.tsx
@@ -1,5 +1,6 @@
-import { render, screen } from "@testing-library/react";
+import { screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import { WorkflowResultGroup } from "./WorkflowResultGroup";
function getTopTriggerText(): string {
diff --git a/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx b/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
index b48edb10..f1a08709 100644
--- a/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+++ b/src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
@@ -1,5 +1,6 @@
import { Disclosure, Surface } from "@heroui/react";
import { memo, useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import { GitBranch } from "lucide-react";
import { useChatPaneActions } from "../../chatPaneActionsContext";
import { chatMessageSurfaceClass } from "./chatMessageSurface";
@@ -32,6 +33,7 @@ export const WorkflowResultGroup = memo(function WorkflowResultGroup({
const parsed = tryParseJson(trimmed);
const list = parsed !== undefined ? findResultList(parsed) : null;
+ const { t } = useLingui();
const actions = useChatPaneActions();
const [isExpanded, setIsExpanded] = useState(false);
@@ -46,7 +48,7 @@ export const WorkflowResultGroup = memo(function WorkflowResultGroup({
const countLabel = `${list.items.length} ${list.items.length === 1 ? itemNoun : pluralize(itemNoun)}`;
return (
{
diff --git a/src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts b/src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
index 2fe92a3d..bbe276a3 100644
--- a/src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+++ b/src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
@@ -2,6 +2,8 @@
* Derives a short, human-facing title for verbose shell wrappers (e.g. PowerShell
* `-Command '…'`, leading `cd … &&`, or `-c "…"`), used in chat command rows.
*/
+import { msg } from "@lingui/core/macro";
+import { i18n } from "@/renderer/i18n/i18n";
const MAX_TITLE_LEN = 120;
@@ -127,7 +129,17 @@ export function humanIntentTitle(fullCommandLine: string): string {
export function commandIntentDisplay(fullCommandLine: string): CommandIntentDisplay {
const command = extractShellCommand(fullCommandLine);
const short = finalizeTitle(command);
- return intentFromSummarizedCommand(command) ?? { title: `Run: ${short}`, kind: "command" };
+ return (
+ intentFromSummarizedCommand(command) ?? {
+ title: `${i18n._(msg`Run`)}: ${short}`,
+ kind: "command",
+ }
+ );
+}
+
+/** Localized "View" / "View " display prefix (line range is data). */
+function viewPrefix(lines?: string): string {
+ return lines ? `${i18n._(msg`View`)} ${formatLineRange(lines)}: ` : `${i18n._(msg`View`)}: `;
}
function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
@@ -135,9 +147,7 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const powerShellFileView = parsePowerShellGetContentView(trimmed);
if (powerShellFileView) {
- const prefix = powerShellFileView.lines
- ? `View ${formatLineRange(powerShellFileView.lines)}: `
- : "View: ";
+ const prefix = viewPrefix(powerShellFileView.lines);
const label = powerShellFileView.lines
? powerShellFileView.path
: basenameFromPath(powerShellFileView.path);
@@ -151,7 +161,7 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const typeCmd = /^type\s+(.+)$/i.exec(trimmed);
if (typeCmd) {
const p = typeCmd[1]!.trim().replace(/^['"]|['"]$/g, "");
- const prefix = "View: ";
+ const prefix = viewPrefix();
return {
title: `${prefix}${basenameFromPath(p)}`,
parts: { prefix, path: p, filePath: true },
@@ -161,7 +171,7 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const sedView = parseSedView(trimmed);
if (sedView) {
- const prefix = `View ${formatLineRange(sedView.lines)}: `;
+ const prefix = viewPrefix(sedView.lines);
return {
title: `${prefix}${sedView.path}`,
parts: { prefix, path: sedView.path },
@@ -171,7 +181,7 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const pipedFileView = parsePipedFileView(trimmed);
if (pipedFileView) {
- const prefix = `View ${formatLineRange(pipedFileView.lines)}: `;
+ const prefix = viewPrefix(pipedFileView.lines);
return {
title: `${prefix}${pipedFileView.path}`,
parts: { prefix, path: pipedFileView.path },
@@ -182,7 +192,7 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const grepLike = parseGrepLikeSearch(trimmed);
if (grepLike) {
return {
- title: `Search: "${grepLike.pattern}"`,
+ title: `${i18n._(msg`Search`)}: "${grepLike.pattern}"`,
kind: "search",
};
}
@@ -191,19 +201,19 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
if (findSearch) {
if (findSearch.pattern) {
return {
- title: `Search: "${findSearch.pattern}"`,
+ title: `${i18n._(msg`Search`)}: "${findSearch.pattern}"`,
kind: "search",
};
}
return {
- title: `Search: ${findSearch.scope}`,
+ title: `${i18n._(msg`Search`)}: ${findSearch.scope}`,
kind: "search",
};
}
const listDir = parseListDirectory(trimmed);
if (listDir) {
- return { title: `List: ${listDir}`, kind: "list" };
+ return { title: `${i18n._(msg`List`)}: ${listDir}`, kind: "list" };
}
const run = /^(pnpm|npm|yarn)\s+run\s+(\S+)/i.exec(trimmed);
@@ -211,9 +221,9 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const pm = run[1]!.toLowerCase();
const script = run[2]!.replace(/['",]/g, "");
if (CHECK_SCRIPTS.has(script)) {
- return { title: `Check: ${pm} run ${script}`, kind: "check" };
+ return { title: `${i18n._(msg`Check`)}: ${pm} run ${script}`, kind: "check" };
}
- return { title: `Run: ${pm} run ${script}`, kind: "command" };
+ return { title: `${i18n._(msg`Run`)}: ${pm} run ${script}`, kind: "command" };
}
const packageManager = parsePackageManager(trimmed);
@@ -222,14 +232,16 @@ function intentFromSummarizedCommand(t: string): CommandIntentDisplay | null {
const exec = /^(pnpm|npm)\s+exec\s+(.+)$/i.exec(trimmed);
if (exec) {
const rest = exec[2]!.trim();
- if (/^oxfmt\b/i.test(rest)) return { title: "Format files", kind: "command" };
+ if (/^oxfmt\b/i.test(rest)) return { title: i18n._(msg`Format files`), kind: "command" };
const shortRest = rest.length > 72 ? `${rest.slice(0, 71)}…` : rest;
- return { title: `Run: ${shortRest}`, kind: "command" };
+ return { title: `${i18n._(msg`Run`)}: ${shortRest}`, kind: "command" };
}
if (/^git\s+/i.test(trimmed)) {
+ const gitLabel = i18n._(msg`Git`);
return {
- title: trimmed.length > 72 ? `Git: ${trimmed.slice(0, 71)}…` : `Git: ${trimmed}`,
+ title:
+ trimmed.length > 72 ? `${gitLabel}: ${trimmed.slice(0, 71)}…` : `${gitLabel}: ${trimmed}`,
kind: "git",
};
}
@@ -528,26 +540,27 @@ function parsePackageManager(command: string): CommandIntentDisplay | null {
if (pm !== "pnpm" && pm !== "npm" && pm !== "yarn") return null;
const firstArg = words[1]?.toLowerCase();
if (firstArg === "--version" || firstArg === "-v") {
- return { title: `Package manager: ${pm} ${firstArg}`, kind: "package" };
+ return { title: `${i18n._(msg`Package manager`)}: ${pm} ${firstArg}`, kind: "package" };
}
const sub = words.find((word, index) => index > 0 && !word.startsWith("-"))?.toLowerCase();
if (!sub) return null;
if (sub === "install" || sub === "add") {
- return { title: `Install packages: ${pm} ${sub}`, kind: "install" };
+ return { title: `${i18n._(msg`Install packages`)}: ${pm} ${sub}`, kind: "install" };
}
if (sub === "list" || sub === "ls") {
- return { title: `List packages: ${pm} ${sub}`, kind: "list" };
+ return { title: `${i18n._(msg`List packages`)}: ${pm} ${sub}`, kind: "list" };
}
if (sub === "config") {
const action = words.find((word, index) => index > 1 && !word.startsWith("-")) ?? "";
+ const configLabel = i18n._(msg`Package config`);
return {
- title: action ? `Package config: ${pm} config ${action}` : `Package config: ${pm}`,
+ title: action ? `${configLabel}: ${pm} config ${action}` : `${configLabel}: ${pm}`,
kind: "package",
};
}
if (sub === "version") {
- return { title: `Package manager: ${pm} ${sub}`, kind: "package" };
+ return { title: `${i18n._(msg`Package manager`)}: ${pm} ${sub}`, kind: "package" };
}
return null;
}
diff --git a/src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts b/src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
index 85b448fa..4119d2d6 100644
--- a/src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+++ b/src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
@@ -23,6 +23,9 @@
* memoized per item by the component.
*/
+import { msg } from "@lingui/core/macro";
+import { i18n } from "@/renderer/i18n/i18n";
+
export interface ImageViewSource {
/** Renderable inline image URL: a `data:` URL (base64) or an svg `data:` URL. */
src: string;
@@ -110,8 +113,9 @@ export function resolveImageViewSource(payload: unknown): ImageViewSource | null
if (!src) return null;
const mime = classification.mime;
const extension = EXTENSION_BY_MIME[mime] ?? "png";
- const alt = readPromptText(payload) ?? "Generated image";
- return { src, mime, extension, fileName: buildFileName(alt, extension), alt };
+ const promptText = readPromptText(payload);
+ const alt = promptText ?? i18n._(msg`Generated image`);
+ return { src, mime, extension, fileName: buildFileName(promptText ?? "", extension), alt };
}
function findClassifiedCandidate(
@@ -156,9 +160,10 @@ export function imageViewSourceFromImageBlock(block: {
? block.mimeType
: classification.mime;
const extension = EXTENSION_BY_MIME[mime] ?? "png";
- const alt =
- typeof block.name === "string" && block.name.trim().length > 0 ? block.name.trim() : "Image";
- return { src, mime, extension, fileName: buildFileName(alt, extension), alt };
+ const name =
+ typeof block.name === "string" && block.name.trim().length > 0 ? block.name.trim() : undefined;
+ const alt = name ?? i18n._(msg`Generated image`);
+ return { src, mime, extension, fileName: buildFileName(name ?? "", extension), alt };
}
function collectResultCandidates(result: unknown): string[] {
diff --git a/src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts b/src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
index 8d6354bd..c13b33c7 100644
--- a/src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+++ b/src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
@@ -17,11 +17,43 @@ import {
Wrench,
type LucideIcon,
} from "lucide-react";
+import type { MessageDescriptor } from "@lingui/core";
+import { msg } from "@lingui/core/macro";
import type { ToolCallPayload } from "@/shared/contracts";
import { extractLeadingPath } from "@/shared/extractLeadingPath";
+import { i18n } from "@/renderer/i18n/i18n";
import { extractAcpPatchTargetPath } from "./acpToolPayload";
import { parseWorkflowInfo } from "./workflowDisplay";
+/**
+ * Localize a fixed English verb used as a display prefix (e.g. "View",
+ * "Edit", "Search"). Callers keep the *English* verb as the categorization /
+ * round-trip token (it is compared case-insensitively against provider-supplied
+ * titles) and only localize the rendered label. Unknown verbs pass through
+ * unchanged so dynamically-composed verbs (e.g. "View 1:80") still render.
+ */
+/** Display labels keyed by the stable English verb; resolved at call time via `i18n._`. */
+const verbLabels: Record = {
+ View: msg`View`,
+ List: msg`List`,
+ Fetch: msg`Fetch`,
+ Search: msg`Search`,
+ Edit: msg`Edit`,
+ Delete: msg`Delete`,
+ Move: msg`Move`,
+ Run: msg`Run`,
+ Image: msg`Image`,
+};
+
+function localizeVerb(verb: string): string {
+ const label = verbLabels[verb];
+ if (label) return i18n._(label);
+ // Dynamic verbs such as "View 1:80" keep their English line-range suffix
+ // but localize the leading "View" word.
+ if (verb.startsWith("View ")) return `${i18n._(verbLabels.View!)}${verb.slice("View".length)}`;
+ return verb;
+}
+
export interface ToolDisplay {
title: string;
Icon: LucideIcon;
@@ -77,7 +109,7 @@ export function deriveToolDisplay(payload: ToolCallPayload): ToolDisplay {
if (isSkillTool(payload)) {
const skill = readStr(args, "skill") ?? readStr(args, "name");
- return { title: skill ? `Skill: ${skill}` : payload.name, Icon: Sparkles };
+ return { title: skill ? i18n._(msg`Skill: ${skill}`) : payload.name, Icon: Sparkles };
}
const summary = mapPersistedToolSummary(payload.name);
@@ -85,7 +117,10 @@ export function deriveToolDisplay(payload: ToolCallPayload): ToolDisplay {
if (isWorkflowTool(payload)) {
const { description } = parseWorkflowInfo(payload);
- return { title: description ? `Workflow: ${description}` : "Workflow", Icon: GitBranch };
+ return {
+ title: description ? i18n._(msg`Workflow: ${description}`) : i18n._(msg`Workflow`),
+ Icon: GitBranch,
+ };
}
const claude = mapClaudeRawTool(payload.name, args);
@@ -125,34 +160,40 @@ function mapClaudeRawTool(
case "Agent":
return { title: formatAgentTitle(args), Icon: Bot };
case "BashOutput":
- return { title: titleWithValue("Bash output", args, "bash_id"), Icon: Terminal };
+ return { title: titleWithValue(i18n._(msg`Bash output`), args, "bash_id"), Icon: Terminal };
case "KillBash":
case "KillShell":
- return { title: titleWithValue("Kill bash", args, "shell_id", "bash_id"), Icon: Terminal };
+ return {
+ title: titleWithValue(i18n._(msg`Kill bash`), args, "shell_id", "bash_id"),
+ Icon: Terminal,
+ };
case "ExitPlanMode":
- return { title: "Exit plan mode", Icon: Wrench };
+ return { title: i18n._(msg`Exit plan mode`), Icon: Wrench };
case "EnterPlanMode":
- return { title: "Enter plan mode", Icon: Wrench };
+ return { title: i18n._(msg`Enter plan mode`), Icon: Wrench };
case "WebFetch":
return withPath("Fetch", args, ["url"], Globe);
case "WebSearch":
- return { title: titleWithValue("Web search", args, "query"), Icon: Globe };
+ return { title: titleWithValue(i18n._(msg`Web search`), args, "query"), Icon: Globe };
case "ToolSearch":
- return { title: titleWithValue("Tool search", args, "query"), Icon: SearchCode };
+ return { title: titleWithValue(i18n._(msg`Tool search`), args, "query"), Icon: SearchCode };
case "ScheduleWakeup":
return formatScheduleWakeupDisplay(args);
case "TaskCreate":
- return { title: titleWithValue("Create task", args, "description"), Icon: FilePlus };
+ return {
+ title: titleWithValue(i18n._(msg`Create task`), args, "description"),
+ Icon: FilePlus,
+ };
case "TaskList":
- return { title: "List tasks", Icon: FolderSearch };
+ return { title: i18n._(msg`List tasks`), Icon: FolderSearch };
case "TaskGet":
- return { title: titleWithValue("Get task", args, "id"), Icon: Eye };
+ return { title: titleWithValue(i18n._(msg`Get task`), args, "id"), Icon: Eye };
case "TaskUpdate":
- return { title: titleWithValue("Update task", args, "id"), Icon: Pencil };
+ return { title: titleWithValue(i18n._(msg`Update task`), args, "id"), Icon: Pencil };
case "TaskOutput":
- return { title: titleWithValue("Task output", args, "id"), Icon: Terminal };
+ return { title: titleWithValue(i18n._(msg`Task output`), args, "id"), Icon: Terminal };
case "TaskStop":
- return { title: titleWithValue("Stop task", args, "id"), Icon: Trash2 };
+ return { title: titleWithValue(i18n._(msg`Stop task`), args, "id"), Icon: Trash2 };
case "ViewImage":
case "Image":
return withPath("Image", args, ["path", "file_path", "image_path", "source"], ImageIcon, {
@@ -171,8 +212,9 @@ function withPath(
options?: { filePath?: boolean },
): ToolDisplay {
const path = readStr(args, ...keys);
- if (!path) return { title: verb, Icon };
- const prefix = `${verb}: `;
+ const label = localizeVerb(verb);
+ if (!path) return { title: label, Icon };
+ const prefix = `${label}: `;
const parts: NonNullable = { prefix, path };
if (options?.filePath) parts.filePath = true;
return { title: `${prefix}${path}`, Icon, parts };
@@ -188,7 +230,7 @@ function withReadPath(
function readVerb(args: Record | undefined): string {
const range = readLineRange(args);
- return range ? `View ${range}` : "View";
+ return range ? `${i18n._(msg`View`)} ${range}` : i18n._(msg`View`);
}
function readLineRange(args: Record | undefined): string | undefined {
@@ -259,11 +301,11 @@ function formatScheduleWakeupDisplay(args: Record | undefined):
const reason = readStr(args, "reason");
const interval = seconds !== undefined ? formatDelaySeconds(seconds) : undefined;
if (interval && reason) {
- return { title: `Wake up in ${interval}: ${reason}`, Icon: Clock };
+ return { title: i18n._(msg`Wake up in ${interval}: ${reason}`), Icon: Clock };
}
- if (interval) return { title: `Wake up in ${interval}`, Icon: Clock };
- if (reason) return { title: `Wake up: ${reason}`, Icon: Clock };
- return { title: "Wake up", Icon: Clock };
+ if (interval) return { title: i18n._(msg`Wake up in ${interval}`), Icon: Clock };
+ if (reason) return { title: i18n._(msg`Wake up: ${reason}`), Icon: Clock };
+ return { title: i18n._(msg`Wake up`), Icon: Clock };
}
function formatDelaySeconds(seconds: number): string {
@@ -301,9 +343,11 @@ function formatAgentTitle(
: (argsDescription ?? fallbackDescription);
const subagent = readSubAgentType(args);
if (description) {
- return subagent ? `Agent (${subagent}): ${description}` : `Agent: ${description}`;
+ return subagent
+ ? i18n._(msg`Agent (${subagent}): ${description}`)
+ : i18n._(msg`Agent: ${description}`);
}
- return subagent ? `Agent: ${subagent}` : "Agent";
+ return subagent ? i18n._(msg`Agent: ${subagent}`) : i18n._(msg`Agent`);
}
function readSubAgentType(args: Record | undefined): string | undefined {
@@ -346,10 +390,15 @@ function mapAcpTool(
case "fetch":
return withTarget("Fetch", readStr(args, "url") ?? title, Globe);
case "switch_mode":
- return { title: title ? `Switch mode: ${title}` : "Switch mode", Icon: Wrench };
+ return {
+ title: title ? i18n._(msg`Switch mode: ${title}`) : i18n._(msg`Switch mode`),
+ Icon: Wrench,
+ };
case "execute":
return {
- title: readStr(args, "command") ? titleWithValue("Run", args, "command") : `Run: ${title}`,
+ title: readStr(args, "command")
+ ? titleWithValue(localizeVerb("Run"), args, "command")
+ : `${localizeVerb("Run")}: ${title}`,
Icon: Terminal,
};
case "think":
@@ -419,10 +468,13 @@ function formatAcpPathDisplay(
Icon: LucideIcon,
): ToolDisplay {
if (path) return withTarget(verb, path, Icon, { filePath: true });
- if (title.length === 0) return { title: verb, Icon };
+ const label = localizeVerb(verb);
+ if (title.length === 0) return { title: label, Icon };
+ // Compare against the English `verb` token (titles are provider data) but
+ // render the localized label.
return title.toLowerCase().startsWith(verb.toLowerCase())
? { title, Icon }
- : { title: `${verb}: ${title}`, Icon };
+ : { title: `${label}: ${title}`, Icon };
}
function formatAcpMoveDisplay(
@@ -433,7 +485,7 @@ function formatAcpMoveDisplay(
if (locations.length >= 2) {
const from = locations[0]!.path;
const to = locations[locations.length - 1]!.path;
- return { title: `Move: ${from} -> ${to}`, Icon: Pencil };
+ return { title: `${localizeVerb("Move")}: ${from} -> ${to}`, Icon: Pencil };
}
return formatAcpPathDisplay("Move", path, title, Pencil);
}
@@ -447,11 +499,13 @@ function formatAcpSearchDisplay(
const pattern = readStr(args, "pattern");
const scope = readScope(args) ?? locationPath;
const searchTerm = query ?? pattern;
- if (searchTerm) return { title: `Search: "${searchTerm}"`, Icon: SearchCode };
+ const label = localizeVerb("Search");
+ if (searchTerm) return { title: `${label}: "${searchTerm}"`, Icon: SearchCode };
if (scope) return withTarget("Search", scope, SearchCode);
+ // Compare against the English "search" token (titles are provider data).
return title.toLowerCase().startsWith("search")
? { title, Icon: SearchCode }
- : { title: `Search: ${title}`, Icon: SearchCode };
+ : { title: `${label}: ${title}`, Icon: SearchCode };
}
function pickAcpLocationPath(
@@ -494,8 +548,9 @@ function withTarget(
Icon: LucideIcon,
options?: { filePath?: boolean },
): ToolDisplay {
- if (!target) return { title: verb, Icon };
- const prefix = `${verb}: `;
+ const label = localizeVerb(verb);
+ if (!target) return { title: label, Icon };
+ const prefix = `${label}: `;
const parts: NonNullable = { prefix, path: target };
if (options?.filePath) parts.filePath = true;
return { title: `${prefix}${target}`, Icon, parts };
diff --git a/src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx b/src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
index 5cd2ac21..9b160675 100644
--- a/src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+++ b/src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
@@ -1,4 +1,5 @@
import { useEffect, useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import type { ProjectLocation } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import { resolveAbsolutePath as resolveAbsolutePathForLocation } from "@/renderer/utils/resolveAbsolutePath";
@@ -65,18 +66,19 @@ interface FileContentPlaceholderProps {
}
export function FileContentPlaceholder({ state, reason }: FileContentPlaceholderProps) {
+ const { t } = useLingui();
const message =
state === "loading" || state === "idle"
- ? "Loading file…"
+ ? t`Loading file…`
: state === "missing"
- ? "File no longer exists on disk."
+ ? t`File no longer exists on disk.`
: state === "binary"
- ? "Binary file — preview unavailable."
+ ? t`Binary file — preview unavailable.`
: state === "too_large"
- ? "File is too large to preview."
+ ? t`File is too large to preview.`
: state === "unsupported"
- ? "File uses an unsupported encoding."
- : (reason ?? "Could not read file.");
+ ? t`File uses an unsupported encoding.`
+ : (reason ?? t`Could not read file.`);
return {message};
}
diff --git a/src/renderer/components/thread/ContinueInProviderDialog.tsx b/src/renderer/components/thread/ContinueInProviderDialog.tsx
index 97877c19..f49538d0 100644
--- a/src/renderer/components/thread/ContinueInProviderDialog.tsx
+++ b/src/renderer/components/thread/ContinueInProviderDialog.tsx
@@ -1,6 +1,7 @@
import { useRef, useState } from "react";
import { Paperclip } from "lucide-react";
import { Modal } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type {
AgentCapability,
AgentStatus,
@@ -259,6 +260,7 @@ export function ContinueInProviderDialog(props: {
) => void;
}) {
const { thread, installedAgents, onClose, onContinue } = props;
+ const { t } = useLingui();
const otherAgents = installedAgents.filter((a) => a.kind !== thread.agentKind);
const [selectedKind, setSelectedKind] = useState(otherAgents[0]?.kind ?? "");
@@ -543,6 +545,7 @@ export function ContinueInProviderDialog(props: {
}
const canSubmit = Boolean(selectedKind && targetConfig.model);
+ const targetProviderFallback = t`the target provider`;
return (
<>
@@ -551,7 +554,9 @@ export function ContinueInProviderDialog(props: {
- Continue in another provider
+
+ Continue in another provider
+
@@ -594,7 +599,7 @@ export function ContinueInProviderDialog(props: {
ref={mentionRef}
autoFocus // eslint-disable-line jsx-a11y/no-autofocus -- desktop app, expected UX
compact
- placeholder={`Tell ${selectedAgent?.label ?? "the target provider"} what to do next...`}
+ placeholder={t`Tell ${selectedAgent?.label ?? targetProviderFallback} what to do next...`}
projectLocation={props.projectLocation}
projectId={thread.projectId}
onTextChange={() => undefined}
@@ -606,10 +611,10 @@ export function ContinueInProviderDialog(props: {
}}
/>
}
- placeholder="Tell the target provider what to do next..."
+ placeholder={t`Tell the target provider what to do next...`}
prompt=""
submitDisabled={!canSubmit}
- submitLabel="Fork"
+ submitLabel={t`Fork`}
onPromptChange={() => undefined}
onSubmit={() => {
void handleAction(false);
@@ -617,7 +622,7 @@ export function ContinueInProviderDialog(props: {
afterControls={
- Extracting context from {sourceAgent?.label ?? thread.agentKind}...
+
+ Extracting context from {sourceAgent?.label ?? thread.agentKind}...
+
)}
{phase === "error" && (
- Could not extract context.
+
+ Could not extract context.
+
{errorMessage && (
{errorMessage}
)}
@@ -660,7 +669,7 @@ export function ContinueInProviderDialog(props: {
{phase === "select" && (
<>
- Cancel
+ Cancel
- Fork
+ Fork
- Move
+ Move
>
)}
{phase === "extracting" && (
- Cancel
+ Cancel
)}
{phase === "error" && (
<>
- Cancel
+ Cancel
- Start Without Context
+ Start Without Context
>
)}
diff --git a/src/renderer/components/thread/PresentationModeTabs.tsx b/src/renderer/components/thread/PresentationModeTabs.tsx
index 070b564d..f34d001b 100644
--- a/src/renderer/components/thread/PresentationModeTabs.tsx
+++ b/src/renderer/components/thread/PresentationModeTabs.tsx
@@ -1,4 +1,5 @@
import { MessageSquare, TerminalSquare } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { ThreadPresentationMode } from "@/shared/contracts";
import { LightballTabs, type LightballTab } from "@/renderer/components/common";
@@ -14,17 +15,18 @@ export interface PresentationModeTabsProps {
export function PresentationModeTabs(props: PresentationModeTabsProps) {
const { presentationMode, onChange, supportsTerminal, supportsGui, className } = props;
+ const { t } = useLingui();
const tabs: ReadonlyArray> = [
{
id: "gui",
- label: "Chat",
+ label: t`Chat`,
icon: ,
disabled: !supportsGui,
},
{
id: "terminal",
- label: "CLI",
+ label: t`CLI`,
icon: ,
disabled: !supportsTerminal,
},
@@ -36,7 +38,7 @@ export function PresentationModeTabs(props: PresentationModeTabsProps) {
tabs={tabs}
active={presentationMode}
onChange={onChange}
- ariaLabel="Thread mode"
+ ariaLabel={t`Thread mode`}
className="w-[140px]"
equalWidth
delayActiveText
diff --git a/src/renderer/components/thread/ProjectSwitchMenu.tsx b/src/renderer/components/thread/ProjectSwitchMenu.tsx
index 8f1d67a2..ea6b9d87 100644
--- a/src/renderer/components/thread/ProjectSwitchMenu.tsx
+++ b/src/renderer/components/thread/ProjectSwitchMenu.tsx
@@ -1,6 +1,7 @@
import { startTransition } from "react";
import { ChevronDown, FolderOpen, House, Monitor } from "lucide-react";
import { Dropdown, Label } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { useShallow } from "zustand/shallow";
import type { Project } from "@/shared/contracts";
import { HOME_PROJECT_NAME, isHomeProject, isHomeProjectId } from "@/shared/homeScope";
@@ -30,6 +31,7 @@ export function ProjectSwitchMenu(props: {
paneId?: string;
}) {
const { currentProjectId, variant, paneId } = props;
+ const { t } = useLingui();
// Show every selectable project. Home is intentionally stored with
// `disabled: true` as an internal marker (it's not a user-disabled
// project), so we let it through the filter and only exclude
@@ -42,7 +44,7 @@ export function ProjectSwitchMenu(props: {
const current = projects.find((p) => p.id === currentProjectId);
const isHomeCurrent = isHomeProjectId(currentProjectId);
- const label = isHomeCurrent ? HOME_PROJECT_NAME : (current?.name ?? "Select project");
+ const label = isHomeCurrent ? HOME_PROJECT_NAME : (current?.name ?? t`Select project`);
const triggerIcon = isHomeCurrent ? (
) : current ? (
@@ -63,7 +65,7 @@ export function ProjectSwitchMenu(props: {
const menu = (
handleSelect(String(key))}
@@ -90,7 +92,7 @@ export function ProjectSwitchMenu(props: {
return (
@@ -109,7 +111,7 @@ export function ProjectSwitchMenu(props: {
return (
diff --git a/src/renderer/components/thread/ThreadAgentUpdateDock.tsx b/src/renderer/components/thread/ThreadAgentUpdateDock.tsx
index 42e6f9be..5b224711 100644
--- a/src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+++ b/src/renderer/components/thread/ThreadAgentUpdateDock.tsx
@@ -1,6 +1,7 @@
import { useEffect, useState } from "react";
import { toast } from "@heroui/react";
import { Download } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { AgentStatus } from "@/shared/contracts";
import {
formatUpdateCommandLine,
@@ -38,6 +39,7 @@ export function ThreadAgentUpdateDock(props: {
onUpdatingChange?: (updating: boolean) => void;
}) {
const { agentStatus, onUpdatingChange } = props;
+ const { t } = useLingui();
const [latestVersion, setLatestVersion] = useState<
{ agentKind: string; version: string | undefined } | undefined
>(undefined);
@@ -107,7 +109,7 @@ export function ThreadAgentUpdateDock(props: {
...(scope.wslDistro ? { wslDistro: scope.wslDistro } : {}),
});
if (result.ok) {
- toast.success(`${agentStatus.label} updated to v${resolvedLatest}.`);
+ toast.success(t`${agentStatus.label} updated to v${resolvedLatest}.`);
await readBridge().refreshAgentStatuses(currentWslDistros(), {
agentKinds: [agentStatus.kind],
envs: [scopeEnvForStatus(agentStatus)],
@@ -116,13 +118,13 @@ export function ThreadAgentUpdateDock(props: {
const detail = result.output?.trim();
toast.danger(
detail
- ? `Unable to update ${agentStatus.label}: ${detail.slice(0, 240)}`
- : `Unable to update ${agentStatus.label}.`,
+ ? t`Unable to update ${agentStatus.label}: ${detail.slice(0, 240)}`
+ : t`Unable to update ${agentStatus.label}.`,
);
}
} catch (error) {
toast.danger(
- error instanceof Error ? error.message : `Unable to update ${agentStatus.label}.`,
+ error instanceof Error ? error.message : t`Unable to update ${agentStatus.label}.`,
);
} finally {
setPending(false);
@@ -135,11 +137,11 @@ export function ThreadAgentUpdateDock(props: {
}`;
return (
-
+
void handleUpdate()}
>
{pending ? : }
- Update
+ Update
}
diff --git a/src/renderer/components/thread/ThreadAuthRequiredDock.tsx b/src/renderer/components/thread/ThreadAuthRequiredDock.tsx
index 31206ffd..027a1ca3 100644
--- a/src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+++ b/src/renderer/components/thread/ThreadAuthRequiredDock.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import { toast } from "@heroui/react";
import { KeyRound, LogIn, RefreshCw, Settings } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { AgentStatus, Project } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import { runAgentLoginCommand } from "@/renderer/actions/agentLoginActions";
@@ -39,6 +40,7 @@ function shouldPreferTerminalLogin(status: AgentStatus): boolean {
export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; project?: Project }) {
const { agentStatus, project } = props;
+ const { t } = useLingui();
const [pendingAction, setPendingAction] = useState<"login" | "refresh" | undefined>();
const agentAuthMethod = findAgentAuthMethodForStatus(agentStatus);
const terminalAuthMethod = findTerminalAuthMethodForStatus(agentStatus);
@@ -48,10 +50,10 @@ export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; projec
const preferTerminalLogin = shouldPreferTerminalLogin(agentStatus);
const useTerminalLogin = canUseTerminalLogin && (preferTerminalLogin || !canUseAgentAuth);
const description = useTerminalLogin
- ? `Run ${agentStatus.loginCommand} before this thread can run.`
+ ? t`Run ${agentStatus.loginCommand} before this thread can run.`
: agentAuthMethod
- ? `Complete ${agentAuthMethod.name} sign-in before this thread can run.`
- : "Add credentials before this thread can run.";
+ ? t`Complete ${agentAuthMethod.name} sign-in before this thread can run.`
+ : t`Add credentials before this thread can run.`;
async function handleLogin() {
if (pendingAction) return;
@@ -69,13 +71,13 @@ export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; projec
setPendingAction(undefined);
void refreshAgentStatus(agentStatus)
.then(() => {
- if (exitCode === 0) toast.success(`${agentStatus.label} authenticated.`);
+ if (exitCode === 0) toast.success(t`${agentStatus.label} authenticated.`);
})
.catch((error: unknown) => {
toast.danger(
error instanceof Error
? error.message
- : `Unable to refresh ${agentStatus.label} status.`,
+ : t`Unable to refresh ${agentStatus.label} status.`,
);
});
},
@@ -94,10 +96,10 @@ export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; projec
});
void readBridge().focusWindow();
await refreshAgentStatus(agentStatus);
- toast.success(`${agentStatus.label} authenticated.`);
+ toast.success(t`${agentStatus.label} authenticated.`);
} catch (error) {
toast.danger(
- error instanceof Error ? error.message : `Unable to authenticate ${agentStatus.label}.`,
+ error instanceof Error ? error.message : t`Unable to authenticate ${agentStatus.label}.`,
);
} finally {
setPendingAction(undefined);
@@ -113,7 +115,7 @@ export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; projec
await refreshAgentStatus(agentStatus);
} catch (error) {
toast.danger(
- error instanceof Error ? error.message : `Unable to refresh ${agentStatus.label}.`,
+ error instanceof Error ? error.message : t`Unable to refresh ${agentStatus.label}.`,
);
} finally {
setPendingAction(undefined);
@@ -121,11 +123,15 @@ export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; projec
}
return (
-
+
{hasDirectLogin ? (
@@ -139,7 +145,7 @@ export function ThreadAuthRequiredDock(props: { agentStatus: AgentStatus; projec
onPress={() => void handleLogin()}
>
- Login
+ Login
) : (
- Settings
+ Settings
)}
(null);
useEffect(() => {
@@ -24,7 +26,7 @@ export function ThreadCommandPanel(props: ThreadCommandPanelProps) {
return (
-
+
- {control.label}
+ {toggleLabel}
)}
);
- const tooltipText = gated ? control.disabledReason : hideLabel ? control.label : undefined;
+ const tooltipText = gated ? control.disabledReason : hideLabel ? toggleLabel : undefined;
if (tooltipText) {
return (
@@ -576,7 +589,7 @@ export function ThreadComposer(props: {
- Stop response
+
+ Stop response
+
);
}
@@ -692,7 +707,9 @@ export function ThreadComposer(props: {
>
{variant === "draft" && }
{isAttachmentDropActive ? (
- Drop here to attach
+
+ Drop here to attach
+
) : null}
{fixedContent}
{attachmentBar}
diff --git a/src/renderer/components/thread/ThreadComposerSection.test.tsx b/src/renderer/components/thread/ThreadComposerSection.test.tsx
index 02ef46ca..b4c2cdeb 100644
--- a/src/renderer/components/thread/ThreadComposerSection.test.tsx
+++ b/src/renderer/components/thread/ThreadComposerSection.test.tsx
@@ -1,6 +1,7 @@
-import { act, fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { act, fireEvent, screen, waitFor } from "@testing-library/react";
import type { ReactNode } from "react";
import { beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { AgentStatus, Thread } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
diff --git a/src/renderer/components/thread/ThreadComposerSection.tsx b/src/renderer/components/thread/ThreadComposerSection.tsx
index fd609f10..b8a7fd51 100644
--- a/src/renderer/components/thread/ThreadComposerSection.tsx
+++ b/src/renderer/components/thread/ThreadComposerSection.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef, useState, type RefObject } from "react";
import { Tooltip } from "@heroui/react";
import { ChevronDown, GitFork } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type {
AgentStatus,
ProjectLocation,
@@ -214,6 +215,7 @@ function ThreadComposerSectionInner(props: ThreadComposerSectionProps & { thread
goalDockState,
errorDockStates,
} = props;
+ const { t } = useLingui();
const [prompt, setPrompt] = useState("");
const [hasContent, setHasContent] = useState(false);
const showVoiceInputButton = useSharedSettings((s) => s.audio.showVoiceInputButton);
@@ -368,6 +370,7 @@ function ThreadComposerSectionInner(props: ThreadComposerSectionProps & { thread
const project = useAppStore((s) =>
s.projects.find((candidate) => candidate.id === thread.projectId),
);
+ const agentFallbackLabel = t`the agent`;
useEffect(() => {
if (!showContextIndicator && contextDockOpen) {
@@ -780,10 +783,10 @@ function ThreadComposerSectionInner(props: ThreadComposerSectionProps & { thread
disabled={!(showServerComposer || showTerminalComposer)}
placeholder={
approvalDenyOption
- ? "Deny and tell the agent what to do differently…"
+ ? t`Deny and tell the agent what to do differently…`
: isServerControlled
- ? `Ask ${agentStatus?.label ?? "the agent"} anything about this workspace`
- : "Send a message..."
+ ? t`Ask ${agentStatus?.label ?? agentFallbackLabel} anything about this workspace`
+ : t`Send a message...`
}
projectLocation={projectLocation}
projectId={thread.projectId}
@@ -852,13 +855,13 @@ function ThreadComposerSectionInner(props: ThreadComposerSectionProps & { thread
/>
}
controls={controlsWithOpenSignal}
- placeholder="Send a message..."
+ placeholder={t`Send a message...`}
prompt={prompt}
promptDisabled={!(showServerComposer || showTerminalComposer)}
preserveDisabledControlStyle={isStructuredLaunching}
stopPending={isInterrupting || isStructuredLaunching}
submitDisabled={!(hasContent || attachments.attachments.length > 0) || !canSubmit}
- submitLabel="Send message"
+ submitLabel={t`Send message`}
onStop={
canInterruptStructuredTurn
? handleInterrupt
@@ -976,7 +979,7 @@ function ThreadComposerSectionInner(props: ThreadComposerSectionProps & { thread
setComposerCollapsed(!composerCollapsed)}
>
diff --git a/src/renderer/components/thread/ThreadContent.tsx b/src/renderer/components/thread/ThreadContent.tsx
index da1abcdb..93165c35 100644
--- a/src/renderer/components/thread/ThreadContent.tsx
+++ b/src/renderer/components/thread/ThreadContent.tsx
@@ -1,5 +1,6 @@
import { useEffect, useMemo, useRef, useState, type RefObject } from "react";
import { useShallow } from "zustand/react/shallow";
+import { Trans } from "@lingui/react/macro";
import type {
AgentStatus,
ProjectLocation,
@@ -196,7 +197,9 @@ export function GuiThreadContent(
) : null}
{runtimeDebugOpen ? (
- Runtime debug
+
+ Runtime debug
+
) : null}
diff --git a/src/renderer/components/thread/ThreadContextDock.tsx b/src/renderer/components/thread/ThreadContextDock.tsx
index 235fab5f..6c926f5d 100644
--- a/src/renderer/components/thread/ThreadContextDock.tsx
+++ b/src/renderer/components/thread/ThreadContextDock.tsx
@@ -1,5 +1,6 @@
import { Tooltip } from "@heroui/react";
import { Gauge, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { CSSProperties } from "react";
import { ThreadDockHeader, ThreadDockSection } from "./ThreadDockUI";
import type { ThreadContextUsageSummary } from "./threadContextUsage";
@@ -11,10 +12,11 @@ export function ThreadContextDock({
summary: ThreadContextUsageSummary;
onClose: () => void;
}) {
+ const { t } = useLingui();
const usageStyle = {
"--lc-context-progress": `${summary.percent ?? 0}%`,
} as CSSProperties;
- const countLabel = summary.percent === undefined ? "Usage unknown" : `${summary.percent}% Full`;
+ const countLabel = summary.percent === undefined ? t`Usage unknown` : t`${summary.percent}% Full`;
const tone = resolveContextUsageTone(summary);
const fillClassName =
tone === "danger"
@@ -24,16 +26,16 @@ export function ThreadContextDock({
: "lightcode-context-dock__bar-fill";
return (
-
+
- Close usage details
+
+ Close usage details
+
}
/>
- {summary.usedLabel} used
- {summary.maxLabel} limit
+
+ {summary.usedLabel} used
+
+
+ {summary.maxLabel} limit
+
diff --git a/src/renderer/components/thread/ThreadContextIndicator.test.tsx b/src/renderer/components/thread/ThreadContextIndicator.test.tsx
index 44f548eb..3fbfe360 100644
--- a/src/renderer/components/thread/ThreadContextIndicator.test.tsx
+++ b/src/renderer/components/thread/ThreadContextIndicator.test.tsx
@@ -1,5 +1,6 @@
-import { fireEvent, render, screen } from "@testing-library/react";
+import { fireEvent, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import { ThreadContextDock } from "./ThreadContextDock";
import { ThreadContextIndicator } from "./ThreadContextIndicator";
import type { ThreadContextUsageSummary } from "./threadContextUsage";
diff --git a/src/renderer/components/thread/ThreadContextIndicator.tsx b/src/renderer/components/thread/ThreadContextIndicator.tsx
index e400ddd1..b87799c4 100644
--- a/src/renderer/components/thread/ThreadContextIndicator.tsx
+++ b/src/renderer/components/thread/ThreadContextIndicator.tsx
@@ -1,4 +1,5 @@
import { Tooltip } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type { ThreadContextUsageSummary } from "./threadContextUsage";
export function ThreadContextIndicator({
@@ -10,6 +11,7 @@ export function ThreadContextIndicator({
isOpen: boolean;
onToggle: () => void;
}) {
+ const { t } = useLingui();
const label = `${summary.headline}: ${summary.detail}`;
const tone = resolveContextTone(summary.percent);
const percent = summary.percent;
@@ -23,7 +25,7 @@ export function ThreadContextIndicator({
- New thread
+ New thread
{props.scopeLabel ? (
@@ -44,7 +46,7 @@ export function ThreadDraftCompactHeader(props: {
{props.showCloseButton && props.onClose && (
{
e.stopPropagation();
diff --git a/src/renderer/components/thread/ThreadDraftComposerArea.tsx b/src/renderer/components/thread/ThreadDraftComposerArea.tsx
index 5b161ac2..a4bc4bd9 100644
--- a/src/renderer/components/thread/ThreadDraftComposerArea.tsx
+++ b/src/renderer/components/thread/ThreadDraftComposerArea.tsx
@@ -1,6 +1,7 @@
import { useEffect, useLayoutEffect, useRef, useState } from "react";
import { Tooltip, toast } from "@heroui/react";
import { Download, Webhook, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type {
AgentHookPluginStatus,
AgentStatus,
@@ -69,6 +70,7 @@ function HookInstallProposal(props: {
selectedAgent: AgentStatus;
presentationMode: ThreadPresentationMode;
}) {
+ const { t } = useLingui();
const env = hookEnvForProject(props.project);
const envKey = hookEnvKey(env);
const agentKind = props.selectedAgent.kind;
@@ -122,24 +124,24 @@ function HookInstallProposal(props: {
.installAgentHookPlugin({ agentKind: props.selectedAgent.kind, env })
.then((result) => {
setStatus(result.status);
- toast.success(`${props.selectedAgent.label} hooks installed.`);
+ toast.success(t`${props.selectedAgent.label} hooks installed.`);
})
.catch((error) =>
toast.danger(
error instanceof Error
? error.message
- : `Unable to install ${props.selectedAgent.label} hooks.`,
+ : t`Unable to install ${props.selectedAgent.label} hooks.`,
),
)
.finally(() => setPending(false));
};
return (
-
+
{pending ? : }
- Install
+ Install
dismissHookInstallProposal(proposalKey)}
@@ -164,13 +166,15 @@ function HookInstallProposal(props: {
- Dismiss
+
+ Dismiss
+
}
>
- Better status updates while agents run.
+ Better status updates while agents run.
@@ -195,6 +199,7 @@ export function ThreadDraftComposerArea(props: {
onRememberPresentationMode: () => void;
onStart: (input: DraftStartInput) => void | Promise;
}) {
+ const { t } = useLingui();
const [prompt, setPrompt] = useState("");
const [hasContent, setHasContent] = useState(false);
// Set to true while an agent-binary update is running for this project's env.
@@ -562,7 +567,7 @@ export function ThreadDraftComposerArea(props: {
ref={mentionRef}
autoFocus={(props.paneCount ?? 1) === 1} // eslint-disable-line jsx-a11y/no-autofocus -- desktop app, expected UX
compact={props.compact ?? false}
- placeholder="Send a message..."
+ placeholder={t`Send a message...`}
projectLocation={isHomeScope ? undefined : props.project.location}
{...(!isHomeScope ? { projectId: props.project.id } : {})}
onTextChange={(hasText) => {
@@ -608,7 +613,7 @@ export function ThreadDraftComposerArea(props: {
onSlashCommandChange={setSlashQuery}
/>
}
- placeholder="Send a message..."
+ placeholder={t`Send a message...`}
prompt={prompt}
submitDisabled={
authRequired ||
@@ -617,7 +622,7 @@ export function ThreadDraftComposerArea(props: {
!(hasContent || attachments.attachments.length > 0)
}
submitPending={isSubmitting}
- submitLabel="Launch thread"
+ submitLabel={t`Launch thread`}
onPromptChange={setPrompt}
onAttachFiles={attachments.addFiles}
onSubmit={() => {
diff --git a/src/renderer/components/thread/ThreadDraftView.test.tsx b/src/renderer/components/thread/ThreadDraftView.test.tsx
index 3047a4d7..97c8f1f4 100644
--- a/src/renderer/components/thread/ThreadDraftView.test.tsx
+++ b/src/renderer/components/thread/ThreadDraftView.test.tsx
@@ -1,5 +1,6 @@
-import { act, fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { act, fireEvent, screen, waitFor } from "@testing-library/react";
import { beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { AgentStatus, Project } from "@/shared/contracts";
import { HOME_PROJECT_ID, HOME_PROJECT_NAME } from "@/shared/homeScope";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
diff --git a/src/renderer/components/thread/ThreadDraftView.tsx b/src/renderer/components/thread/ThreadDraftView.tsx
index d0ca82e3..fa886d4d 100644
--- a/src/renderer/components/thread/ThreadDraftView.tsx
+++ b/src/renderer/components/thread/ThreadDraftView.tsx
@@ -1,5 +1,6 @@
import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
import { toast } from "@heroui/react";
+import { Trans } from "@lingui/react/macro";
import type {
AgentStatus,
Project,
@@ -801,15 +802,21 @@ export function ThreadDraftView(props: {
return (
- Detecting agents…
+
+ Detecting agents…
+
);
}
return (
- No supported agents detected
+
+ No supported agents detected
+
- Install {formatAgentList(props.agentStatuses.map((s) => s.label))} to create a thread.
+
+ Install {formatAgentList(props.agentStatuses.map((s) => s.label))} to create a thread.
+
);
diff --git a/src/renderer/components/thread/ThreadErrorDock.tsx b/src/renderer/components/thread/ThreadErrorDock.tsx
index 30ac3cba..2b5c1bb9 100644
--- a/src/renderer/components/thread/ThreadErrorDock.tsx
+++ b/src/renderer/components/thread/ThreadErrorDock.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import { Tooltip } from "@heroui/react";
import { AlertTriangle, ChevronDown, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { ThreadErrorDockState } from "./threadErrorState";
import { ThreadDockHeader, ThreadDockSection } from "./ThreadDockUI";
@@ -11,10 +12,11 @@ interface ThreadErrorDockProps {
export function ThreadErrorDock(props: ThreadErrorDockProps) {
const { state, onDismiss } = props;
+ const { t } = useLingui();
const [collapsed, setCollapsed] = useState(true);
const isMultiline = state.message.includes("\n") || state.message.length > 120;
const canExpand = isMultiline;
- const { title, body } = splitErrorTitle(state.message);
+ const { title, body } = splitErrorTitle(state.message, t`Error`);
return (
@@ -28,7 +30,7 @@ export function ThreadErrorDock(props: ThreadErrorDockProps) {
setCollapsed(!collapsed)}
@@ -38,14 +40,16 @@ export function ThreadErrorDock(props: ThreadErrorDockProps) {
/>
- {collapsed ? "Expand" : "Collapse"}
+
+ {collapsed ? Expand : Collapse }
+
) : null}
{onDismiss ? (
- Dismiss
+
+ Dismiss
+
) : null}
>
@@ -83,13 +89,13 @@ function firstLine(message: string): string {
// If the first line is shaped like ": ", surface the
// category as the dock title (e.g. "Invalid request", "Network error", "Auth
-// failed") instead of the generic "Error". Falls back to "Error" when the
-// message has no useful prefix.
-function splitErrorTitle(message: string): { title: string; body: string } {
+// failed") instead of the generic "Error". Falls back to `fallbackTitle` when
+// the message has no useful prefix.
+function splitErrorTitle(message: string, fallbackTitle: string): { title: string; body: string } {
const head = firstLine(message).trim();
const match = /^([A-Z][^:\n]{1,48}):\s+(\S.*)$/.exec(head);
if (match) {
return { title: match[1]!, body: match[2]! };
}
- return { title: "Error", body: head };
+ return { title: fallbackTitle, body: head };
}
diff --git a/src/renderer/components/thread/ThreadGoalDock.tsx b/src/renderer/components/thread/ThreadGoalDock.tsx
index 3f9778d1..a9a62f69 100644
--- a/src/renderer/components/thread/ThreadGoalDock.tsx
+++ b/src/renderer/components/thread/ThreadGoalDock.tsx
@@ -1,7 +1,10 @@
import { useEffect, useRef, useState } from "react";
import { Tooltip } from "@heroui/react";
import { CircleCheckBig, Target, X } from "lucide-react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { ThreadGoalDockState } from "./threadGoalState";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
import { ThreadDockSection } from "./ThreadDockUI";
import { formatElapsed } from "./ChatPane/formatElapsed";
import { formatTokenCount } from "./formatTokenCount";
@@ -17,6 +20,7 @@ const localGoalTimingByItemId = new Map<
>();
export function ThreadGoalDock({ state, onDismiss }: ThreadGoalDockProps) {
+ const { t } = useLingui();
const [localAnchorSeconds, setLocalAnchorSeconds] = useState(() =>
resolveLocalGoalAnchorSeconds(state, Date.now() / 1000),
);
@@ -37,7 +41,7 @@ export function ThreadGoalDock({ state, onDismiss }: ThreadGoalDockProps) {
}, [isActive]);
const elapsedSeconds = resolveGoalElapsedSeconds(state, nowSeconds, localAnchorSeconds);
- const meta = goalMeta(state);
+ const meta = goalMeta(state, t);
const elapsedLabel = elapsedSeconds > 0 ? formatElapsed(elapsedSeconds) : null;
const hasMeta = meta.length > 0;
const StatusIcon = isComplete ? CircleCheckBig : Target;
@@ -48,7 +52,7 @@ export function ThreadGoalDock({ state, onDismiss }: ThreadGoalDockProps) {
: "text-foreground-muted";
return (
-
+
{isActive ? (
@@ -128,29 +136,30 @@ function GoalObjectiveText({ objective }: { objective: string }) {
);
}
-function goalMeta(state: ThreadGoalDockState): string[] {
+function goalMeta(state: ThreadGoalDockState, t: TranslateFn): string[] {
const details: string[] = [];
- if (state.status !== "active") details.push(goalStatusLabel(state.status));
+ if (state.status !== "active") details.push(goalStatusLabel(state.status, t));
if (state.tokenBudget != null) {
- details.push(
- `${formatTokenCount(state.tokensUsed ?? 0)}/${formatTokenCount(state.tokenBudget)} tokens`,
- );
+ const used = formatTokenCount(state.tokensUsed ?? 0);
+ const budget = formatTokenCount(state.tokenBudget);
+ details.push(t(msg`${used}/${budget} tokens`));
} else if (state.tokensUsed !== undefined && state.tokensUsed > 0) {
- details.push(`${formatTokenCount(state.tokensUsed)} tokens`);
+ const used = formatTokenCount(state.tokensUsed);
+ details.push(t(msg`${used} tokens`));
}
return details;
}
-function goalStatusLabel(status: ThreadGoalDockState["status"]): string {
+function goalStatusLabel(status: ThreadGoalDockState["status"], t: TranslateFn): string {
switch (status) {
case "active":
- return "Active";
+ return t(msg`Active`);
case "paused":
- return "Paused";
+ return t(msg`Paused`);
case "budget_limited":
- return "Budget limit reached";
+ return t(msg`Budget limit reached`);
case "complete":
- return "Complete";
+ return t(msg`Complete`);
}
}
diff --git a/src/renderer/components/thread/ThreadHeaderStatus.tsx b/src/renderer/components/thread/ThreadHeaderStatus.tsx
index 78226c9f..5cf59752 100644
--- a/src/renderer/components/thread/ThreadHeaderStatus.tsx
+++ b/src/renderer/components/thread/ThreadHeaderStatus.tsx
@@ -1,63 +1,72 @@
import { Tooltip } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { Thread, ThreadStatusSource } from "@/shared/contracts";
import { ProviderIcon, getStatusTone } from "@/renderer/components/providers";
import { useThread } from "@/renderer/state/useThread";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
-export function threadRuntimeStatusLabel(thread: Thread): string {
+export function threadRuntimeStatusLabel(thread: Thread, t: TranslateFn): string {
const { status, attention } = thread;
- if (status === "launching") return "Launching…";
- if (status === "inactive") return "Inactive";
- if (status === "error") return "Error";
- if (status === "finished") return "Finished";
- if (status === "needs_approval" || attention === "needs_approval") return "Needs approval";
- if (status === "needs_reply" || attention === "needs_reply") return "Needs reply";
- if (status === "working" || attention === "working") return "Working";
- if (status === "idle") return "Idle";
+ if (status === "launching") return t(msg`Launching…`);
+ if (status === "inactive") return t(msg`Inactive`);
+ if (status === "error") return t(msg`Error`);
+ if (status === "finished") return t(msg`Finished`);
+ if (status === "needs_approval" || attention === "needs_approval") return t(msg`Needs approval`);
+ if (status === "needs_reply" || attention === "needs_reply") return t(msg`Needs reply`);
+ if (status === "working" || attention === "working") return t(msg`Working`);
+ if (status === "idle") return t(msg`Idle`);
return status;
}
-function activeSupportLabel(source: ThreadStatusSource | undefined): string {
+function activeSupportLabel(source: ThreadStatusSource | undefined, t: TranslateFn): string {
switch (source) {
case "cli_hook":
- return "Enhanced (Hooks)";
+ return t(msg`Enhanced (Hooks)`);
case "terminal_parse":
- return "Basic (CLI)";
+ return t(msg`Basic (CLI)`);
case "server":
- return "ACP";
+ return t(msg`ACP`);
default:
- return "Basic (CLI)";
+ return t(msg`Basic (CLI)`);
}
}
-function threadStatusSupportDetail(source: ThreadStatusSource | undefined): string {
+function supportSourceDotClass(source: ThreadStatusSource | undefined): string {
switch (source) {
case "cli_hook":
- return "Status updates come from the CLI hook plugin.";
+ return "bg-[oklch(0.72_0.12_145)]";
case "terminal_parse":
- return "Status is inferred from terminal output (L2). Install the hook plugin in settings for structured updates.";
+ return "bg-[oklch(0.72_0.11_75)]";
case "server":
- return "Status is provided by the agent control protocol (ACP).";
+ return "bg-[oklch(0.68_0.12_265)]";
default:
- return "Support mode appears once the session connects.";
+ return "bg-muted/70";
}
}
-function supportSourceDotClass(source: ThreadStatusSource | undefined): string {
+function ThreadStatusSupportDetail({ source }: { source: ThreadStatusSource | undefined }) {
switch (source) {
case "cli_hook":
- return "bg-[oklch(0.72_0.12_145)]";
+ return Status updates come from the CLI hook plugin. ;
case "terminal_parse":
- return "bg-[oklch(0.72_0.11_75)]";
+ return (
+
+ Status is inferred from terminal output (L2). Install the hook plugin in settings for
+ structured updates.
+
+ );
case "server":
- return "bg-[oklch(0.68_0.12_265)]";
+ return Status is provided by the agent control protocol (ACP). ;
default:
- return "bg-muted/70";
+ return Support mode appears once the session connects. ;
}
}
export function ThreadHeaderStatusTooltipBody(props: { thread: Thread }) {
const { thread } = props;
- const runtime = threadRuntimeStatusLabel(thread);
+ const { t } = useLingui();
+ const runtime = threadRuntimeStatusLabel(thread, t);
const source = thread.threadStatusSource;
const isServer = source === "server";
const errorMessage = thread.status === "error" ? thread.errorMessage?.trim() : undefined;
@@ -66,17 +75,21 @@ export function ThreadHeaderStatusTooltipBody(props: { thread: Thread }) {
- Status:
+
+ Status: {" "}
+
{runtime}
{!isServer && (
- Support:
+
+ Support:
+
- {activeSupportLabel(source)}
+ {activeSupportLabel(source, t)}
)}
@@ -86,7 +99,7 @@ export function ThreadHeaderStatusTooltipBody(props: { thread: Thread }) {
) : (
- {threadStatusSupportDetail(source)}
+
)}
@@ -100,7 +113,10 @@ export function ThreadHeaderStatusButton(props: {
agentLabel?: string | undefined;
agentIcon?: string | undefined;
}) {
+ const { t } = useLingui();
const thread = useThread(props.threadId) ?? props.fallbackThread;
+ const agentLabel = props.agentLabel ?? props.fallbackAgentKind;
+ const statusLabel = threadRuntimeStatusLabel(thread, t);
return (
@@ -108,7 +124,7 @@ export function ThreadHeaderStatusButton(props: {
{
e.stopPropagation();
}}
diff --git a/src/renderer/components/thread/ThreadPendingSteerStrip.tsx b/src/renderer/components/thread/ThreadPendingSteerStrip.tsx
index a5b7296d..48d49f9f 100644
--- a/src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+++ b/src/renderer/components/thread/ThreadPendingSteerStrip.tsx
@@ -1,5 +1,6 @@
import { Tooltip } from "@heroui/react";
import { Loader2, Send, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { PendingSteerState } from "@/shared/contracts";
import { ThreadDockHeader, ThreadDockList, ThreadDockRow, ThreadDockSection } from "./ThreadDockUI";
@@ -16,23 +17,24 @@ interface ThreadPendingSteerStripProps {
*/
export function ThreadPendingSteerStrip(props: ThreadPendingSteerStripProps) {
const { pending, onCancel } = props;
+ const { t } = useLingui();
const preview = pending.prompt.trim();
return (
- waiting for agent to stop
+ waiting for agent to stop
>
}
actions={
- Cancel pending steer
+
+ Cancel pending steer
+
}
/>
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
index cec7583e..2c2de4da 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
@@ -1,5 +1,6 @@
import { useId, useState } from "react";
import { Button } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { FileText, HelpCircle, ListChecks, Plug, ShieldAlert } from "lucide-react";
import {
asPermissionRequestDetails,
@@ -11,8 +12,8 @@ import type { OpenRuntimeRequest } from "@/renderer/state/slices/runtimeEventSli
import { ThreadDockSection } from "../ThreadDockUI";
import {
asOpenCodePermissionDetails,
- DEFAULT_APPROVAL_OPTIONS,
formatRawDetails,
+ getDefaultApprovalOptions,
isPlanApprovalRequest,
outcomeForSelection,
readInputString,
@@ -55,6 +56,7 @@ interface ThreadRuntimeRequestPanelProps {
*/
export function ThreadRuntimeRequestPanel(props: ThreadRuntimeRequestPanelProps) {
const { threadId, request, agentLabel, onResolve, onPlanApproved, onOpenPlanFile } = props;
+ const { t } = useLingui();
const [resolving, setResolving] = useState(false);
const formId = useId();
@@ -99,7 +101,7 @@ export function ThreadRuntimeRequestPanel(props: ThreadRuntimeRequestPanelProps)
const userInputForm = !structuredElicitation
? asUserInputFormDetails(request.payload.details)
: undefined;
- const options = request.payload.options ?? DEFAULT_APPROVAL_OPTIONS;
+ const options = request.payload.options ?? getDefaultApprovalOptions();
const isQuestion = request.requestType === "tool_user_input" && !isPlanApproval;
const isCustomForm = !!(structuredElicitation || userInputForm);
const Icon = isPlanApproval
@@ -218,7 +220,7 @@ export function ThreadRuntimeRequestPanel(props: ThreadRuntimeRequestPanelProps)
{requestDetails || planFilePath ? (
{requestDetails}
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts b/src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
index 4e7772d8..e0827285 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
@@ -1,15 +1,26 @@
+import { msg } from "@lingui/core/macro";
import {
asPermissionRequestDetails,
type CanonicalRequestType,
type RequestOutcome,
type UserInputOption,
} from "@/shared/contracts";
+import { i18n } from "@/renderer/i18n/i18n";
import type { OpenRuntimeRequest } from "@/renderer/state/slices/runtimeEventSlice";
-export const DEFAULT_APPROVAL_OPTIONS: UserInputOption[] = [
- { optionId: "allow", label: "Allow" },
- { optionId: "deny", label: "Deny" },
-];
+/**
+ * Default approve/deny options used when the request carries none. The
+ * `optionId`s are the stable identifiers that drive selection + the
+ * negative-option detection (`isNegativeOption` matches on `optionId`), so only
+ * the display `label` is localized — and built fresh per call so it tracks the
+ * active locale.
+ */
+export function getDefaultApprovalOptions(): UserInputOption[] {
+ return [
+ { optionId: "allow", label: i18n._(msg`Allow`) },
+ { optionId: "deny", label: i18n._(msg`Deny`) },
+ ];
+}
export const NEGATIVE_OPTION_PATTERN = /(deny|denied|decline|reject|abort|cancel)/i;
@@ -36,7 +47,7 @@ const APPROVAL_REQUEST_TYPES = new Set([
export function getApprovalDenyOption(request: OpenRuntimeRequest): UserInputOption | undefined {
if (!APPROVAL_REQUEST_TYPES.has(request.requestType)) return undefined;
if (isPlanApprovalRequest(request)) return undefined;
- const options = request.payload.options ?? DEFAULT_APPROVAL_OPTIONS;
+ const options = request.payload.options ?? getDefaultApprovalOptions();
return options.find(isNegativeOption);
}
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
index 2b068b73..f38df6f6 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
@@ -1,6 +1,7 @@
import type { ReactNode } from "react";
import { Button, Dropdown, Label } from "@heroui/react";
import { ChevronDown } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { CanonicalRequestType, UserInputOption } from "@/shared/contracts";
import { isNegativeOption } from "../helpers";
@@ -14,6 +15,7 @@ export function ApprovalActions(props: {
onSelect: (optionId: string) => void;
}) {
const { options, isDisabled, leadingAction, showAllOptions, stackOnNarrow, onSelect } = props;
+ const { t } = useLingui();
const negatives = options.filter(isNegativeOption);
const positives = options.filter((o) => !isNegativeOption(o));
const primary = positives[0];
@@ -72,7 +74,7 @@ export function ApprovalActions(props: {
size="sm"
variant="tertiary"
isIconOnly
- aria-label="More approval options"
+ aria-label={t`More approval options`}
isDisabled={isDisabled}
>
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
index 316783bf..5871cf62 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
@@ -1,3 +1,4 @@
+import { Plural, Trans } from "@lingui/react/macro";
import type { PermissionRequestDetails } from "@/shared/contracts";
import { PathDisplay } from "@/renderer/components/common/PathDisplay";
import { formatInputSubject, type OpenCodePermissionDetails } from "../helpers";
@@ -9,13 +10,15 @@ export function OpenCodePermissionDetailsLine({ details }: { details: OpenCodePe
return (
- permission
+
+ permission
+
{details.permission}
{details.patterns.length > 0 ? (
- {details.patterns.length === 1 ? "target" : "targets"}
+
{details.patterns.join(", ")}
@@ -48,7 +51,7 @@ export function PermissionDetailsLine({ details }: { details: PermissionRequestD
) : null}
{details.blockedPath ? (
- blocked: {details.blockedPath}
+ blocked: {details.blockedPath}
) : null}
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
index 5506a7a2..5842d77b 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
@@ -1,5 +1,6 @@
import { useState } from "react";
import { Button } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { UserInputOption } from "@/shared/contracts";
import { QuestionOptionRow } from "./QuestionOptionRow";
@@ -10,10 +11,11 @@ export function QuestionRows(props: {
multiSelect: boolean;
}) {
const { options, isDisabled, onSubmit, multiSelect } = props;
+ const { t } = useLingui();
const [selected, setSelected] = useState>(() => new Set());
if (!multiSelect) {
return (
-
+
{options.map((option, index) => (
@@ -65,7 +67,7 @@ export function QuestionRows(props: {
className="text-white"
onPress={() => onSubmit(selectedIds)}
>
- Submit
+ Submit
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
index af84aea9..5ec10944 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
@@ -1,4 +1,5 @@
import { Check } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { UserInputFormAnswer, UserInputFormQuestion } from "../userInputForm";
import { questionHasAnswer } from "../userInputForm";
@@ -11,9 +12,14 @@ export function QuestionSwitcher(props: {
onSelect: (index: number) => void;
}) {
const { questions, answers, customAnswers, activeIndex, isDisabled, onSelect } = props;
+ const { t } = useLingui();
if (questions.length <= 1) return null;
return (
-
+
{questions.map((question, index) => {
const isActive = index === activeIndex;
const hasAnswer = questionHasAnswer(question, answers, customAnswers);
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
index 21065258..53d234cd 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
@@ -1,5 +1,6 @@
import { useState } from "react";
import { Button } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { RequestOutcome } from "@/shared/contracts";
type StructuredElicitationSchemaProperty =
@@ -188,6 +189,7 @@ export function StructuredElicitationForm(props: {
onSubmit: (response: unknown, outcome: RequestOutcome) => void;
}) {
const { params, isDisabled, onSubmit } = props;
+ const { t } = useLingui();
const [formValues, setFormValues] = useState>(() =>
params.mode === "form" ? getInitialStructuredFormValues(params.requestedSchema) : {},
);
@@ -215,7 +217,7 @@ export function StructuredElicitationForm(props: {
rel="noreferrer"
target="_blank"
>
- Open required URL
+ Open required URL
) : (
@@ -333,7 +335,7 @@ export function StructuredElicitationForm(props: {
className="text-muted"
onPress={() => onSubmit({ action: "cancel" }, "cancelled")}
>
- Cancel
+ Cancel
onSubmit({ action: "decline" }, "declined")}
>
- Decline
+ Decline
- {params.mode === "url" ? "Continue" : "Submit"}
+ {params.mode === "url" ? t`Continue` : t`Submit`}
diff --git a/src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx b/src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
index 123f5bba..2d4f879a 100644
--- a/src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+++ b/src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
@@ -1,4 +1,5 @@
import { useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import type { RequestOutcome } from "@/shared/contracts";
import { QuestionOptionRow } from "./parts/QuestionOptionRow";
@@ -232,6 +233,7 @@ export function UserInputForm(props: {
onSubmit: (response: unknown, outcome: RequestOutcome) => void;
}) {
const { formId, controller, isDisabled, onSubmit } = props;
+ const { t } = useLingui();
const activeQuestion = controller.questions[controller.activeIndex] ?? controller.questions[0];
if (!activeQuestion) return null;
const customAnswer = controller.customAnswers[activeQuestion.id] ?? "";
@@ -290,7 +292,7 @@ export function UserInputForm(props: {
disabled={isDisabled}
value={customAnswer}
onChange={(e) => controller.setCustomAnswer(activeQuestion.id, e.target.value)}
- placeholder="Or write a custom answer"
+ placeholder={t`Or write a custom answer`}
className="w-full rounded border border-[color:var(--border)] bg-[var(--composer-surface)] px-2 py-1 text-[11px] text-foreground outline-none"
/>
diff --git a/src/renderer/components/thread/ThreadTodoDock.tsx b/src/renderer/components/thread/ThreadTodoDock.tsx
index 3e888ee0..c9ebe970 100644
--- a/src/renderer/components/thread/ThreadTodoDock.tsx
+++ b/src/renderer/components/thread/ThreadTodoDock.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef } from "react";
import { Tooltip } from "@heroui/react";
import { ArrowRightLeft, Check, ChevronDown, Hourglass, ListChecks, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { ThreadTodoDockPlacement } from "@/renderer/state/threadTodoDockStore";
import { PixelLoader } from "@/renderer/components/common/PixelLoader";
import type { ThreadTodoDockState, ThreadTodoStepStatus } from "./threadTodoState";
@@ -17,6 +18,7 @@ interface ThreadTodoDockProps {
export function ThreadTodoDock(props: ThreadTodoDockProps) {
const { state, placement, collapsed, onPlacementChange, onCollapsedChange, onRetire } = props;
+ const { t } = useLingui();
const activeRowRef = useRef(null);
useEffect(() => {
@@ -39,7 +41,7 @@ export function ThreadTodoDock(props: ThreadTodoDockProps) {
if (displayedStepIndices.length === 0) return null;
const moveLabel =
- placement === "composer" ? "Move todo dock to right panel" : "Attach todo dock to composer";
+ placement === "composer" ? t`Move todo dock to right panel` : t`Attach todo dock to composer`;
const completedCount = state.steps.reduce(
(count, step) => (step.status === "completed" ? count + 1 : count),
0,
@@ -47,10 +49,10 @@ export function ThreadTodoDock(props: ThreadTodoDockProps) {
const countLabel = `${completedCount}/${state.steps.length}`;
return (
-
+
@@ -70,7 +72,7 @@ export function ThreadTodoDock(props: ThreadTodoDockProps) {
onCollapsedChange(!collapsed)}
@@ -80,12 +82,14 @@ export function ThreadTodoDock(props: ThreadTodoDockProps) {
/>
- {collapsed ? "Expand" : "Collapse"}
+
+ {collapsed ? Expand : Collapse }
+
- Close plan
+
+ Close plan
+
>
}
@@ -128,9 +134,12 @@ export function ThreadTodoDock(props: ThreadTodoDockProps) {
}
function StatusIcon({ status }: { status: ThreadTodoStepStatus }) {
+ const { t } = useLingui();
switch (status) {
case "completed":
- return ;
+ return (
+
+ );
case "in_progress":
return (
@@ -139,7 +148,7 @@ function StatusIcon({ status }: { status: ThreadTodoStepStatus }) {
);
default:
return (
-
+
);
}
}
diff --git a/src/renderer/components/thread/ThreadView.tsx b/src/renderer/components/thread/ThreadView.tsx
index 73ff5b02..eb969e2e 100644
--- a/src/renderer/components/thread/ThreadView.tsx
+++ b/src/renderer/components/thread/ThreadView.tsx
@@ -1,6 +1,7 @@
import { memo, useEffect, useRef, useState } from "react";
import { Tooltip } from "@heroui/react";
import { ArrowRightLeft, Bug, CircleCheck, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type {
AgentStatus,
ProjectLocation,
@@ -39,7 +40,7 @@ function stripIpcInvokeFraming(message: string): string {
return message.replace(/^Error invoking remote method '[^']+':\s*(?:Error:\s*)?/, "");
}
-function formatLaunchError(error: unknown): string {
+function formatLaunchError(error: unknown, fallbackMessage: string): string {
if (error instanceof Error && error.message.trim().length > 0) {
return stripIpcInvokeFraming(error.message);
}
@@ -55,7 +56,7 @@ function formatLaunchError(error: unknown): string {
) {
return stripIpcInvokeFraming(error.message);
}
- return "Thread failed to start.";
+ return fallbackMessage;
}
function areThreadViewPropsEqual(prev: ThreadViewProps, next: ThreadViewProps): boolean {
@@ -175,6 +176,7 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
onResolveServerRequest,
onSubmitInput,
} = props;
+ const { t } = useLingui();
const terminalPaneRef = useRef(null);
const [terminalSize, setTerminalSize] = useState(null);
const [continueDialogOpen, setContinueDialogOpen] = useState(false);
@@ -316,9 +318,10 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
);
})().catch((error) => {
launchRequestRef.current = null;
- onLaunchFailed?.(formatLaunchError(error));
+ onLaunchFailed?.(formatLaunchError(error, t`Thread failed to start.`));
});
}, [
+ t,
onLaunchConsumed,
onLaunchFailed,
pendingLaunchPrompt,
@@ -394,7 +397,7 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
) : null}
@@ -413,7 +416,7 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
{
e.stopPropagation();
@@ -423,7 +426,9 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
- Continue in another provider
+
+ Continue in another provider
+
) : null}
{!usesTerminalPresentation ? (
@@ -432,7 +437,9 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
- {runtimeDebugOpen
- ? "Hide canonical runtime item inspector"
- : "Inspect canonical runtime items"}
+ {runtimeDebugOpen ? (
+ Hide canonical runtime item inspector
+ ) : (
+ Inspect canonical runtime items
+ )}
) : null}
{onMarkDone ? (
{
e.stopPropagation();
@@ -467,7 +476,7 @@ export const ThreadView = memo(function ThreadView(props: ThreadViewProps) {
{showCloseButton ? (
{
e.stopPropagation();
diff --git a/src/renderer/components/thread/WorktreeModeSelect.tsx b/src/renderer/components/thread/WorktreeModeSelect.tsx
index 5a80c7b6..72f71fba 100644
--- a/src/renderer/components/thread/WorktreeModeSelect.tsx
+++ b/src/renderer/components/thread/WorktreeModeSelect.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import { Check, ChevronDown, GitBranch, GitFork } from "lucide-react";
import { Label, ListBox, Popover } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { Button } from "@/renderer/components/common";
export type WorktreeMode = "none" | "new" | "new-with-changes";
@@ -21,28 +22,29 @@ export function WorktreeModeSelect(props: {
/** Render a shorter trigger for secondary control rows. */
compact?: boolean;
}) {
+ const { t } = useLingui();
const [isOpen, setIsOpen] = useState(false);
const iconSize = props.compact ? "size-3" : "size-3.5";
const options: WorktreeModeOption[] = [
{
id: "none",
- label: "No worktree",
- description: "Work in the current checkout",
+ label: t`No worktree`,
+ description: t`Work in the current checkout`,
icon: GitBranch,
},
{
id: "new",
- label: "Worktree",
- description: "Run in a separate worktree",
+ label: t`Worktree`,
+ description: t`Run in a separate worktree`,
icon: GitFork,
},
...(props.canBringChanges
? [
{
id: "new-with-changes" as const,
- label: "Worktree + changes",
- description: "Copy uncommitted changes here (keeps them on this branch)",
+ label: t`Worktree + changes`,
+ description: t`Copy uncommitted changes here (keeps them on this branch)`,
icon: GitFork,
},
]
@@ -56,7 +58,7 @@ export function WorktreeModeSelect(props: {
{
diff --git a/src/renderer/components/thread/buildModelPickerControls.tsx b/src/renderer/components/thread/buildModelPickerControls.tsx
index f2e283e3..4418ce7f 100644
--- a/src/renderer/components/thread/buildModelPickerControls.tsx
+++ b/src/renderer/components/thread/buildModelPickerControls.tsx
@@ -1,4 +1,5 @@
import { Zap } from "lucide-react";
+import { msg } from "@lingui/core/macro";
import type {
AgentCapability,
AgentStatus,
@@ -230,6 +231,7 @@ export function buildModelPickerControls(input: BuildModelPickerControlsInput):
controls.push({
kind: "toggle",
label: "Fast",
+ displayLabel: msg`Fast`,
icon: ,
iconOnly: true,
fillIconOnSelect: true,
diff --git a/src/renderer/components/thread/threadContextUsage.ts b/src/renderer/components/thread/threadContextUsage.ts
index e55762ab..5e26d17b 100644
--- a/src/renderer/components/thread/threadContextUsage.ts
+++ b/src/renderer/components/thread/threadContextUsage.ts
@@ -1,3 +1,4 @@
+import { msg } from "@lingui/core/macro";
import type {
AgentCapability,
AgentStatus,
@@ -5,6 +6,7 @@ import type {
Thread,
ThreadContextUsage,
} from "@/shared/contracts";
+import { i18n } from "@/renderer/i18n/i18n";
import { capabilitiesForPresentation } from "./threadComposerOptions";
import { formatTokenCount } from "./formatTokenCount";
@@ -53,25 +55,25 @@ export function resolveThreadContextUsageSummary(input: {
reportedUsage?.breakdown && reportedUsage.breakdown.length > 0
? reportedUsage.breakdown
: usedTokens !== undefined
- ? [{ id: "used", label: "Used", tokens: usedTokens }]
+ ? [{ id: "used", label: i18n._(msg`Used`), tokens: usedTokens }]
: [];
- const usedLabel = usedTokens === undefined ? "Unknown" : formatTokenCount(usedTokens);
- const maxLabel = maxTokens === undefined ? "Unknown" : formatTokenCount(maxTokens);
+ const usedLabel = usedTokens === undefined ? i18n._(msg`Unknown`) : formatTokenCount(usedTokens);
+ const maxLabel = maxTokens === undefined ? i18n._(msg`Unknown`) : formatTokenCount(maxTokens);
const remainingLabel =
- remainingTokens === undefined ? "Unknown" : formatTokenCount(remainingTokens);
- const percentLabel = percent === undefined ? "Context" : `${percent}%`;
+ remainingTokens === undefined ? i18n._(msg`Unknown`) : formatTokenCount(remainingTokens);
+ const percentLabel = percent === undefined ? i18n._(msg`Context`) : `${percent}%`;
const headline =
percent === undefined
? maxTokens === undefined
- ? "Context usage"
- : `${maxLabel} context`
- : `${percent}% full`;
+ ? i18n._(msg`Context usage`)
+ : i18n._(msg`${maxLabel} context`)
+ : i18n._(msg`${percent}% full`);
const detail =
usedTokens === undefined && maxTokens === undefined
- ? "Provider has not reported token usage."
+ ? i18n._(msg`Provider has not reported token usage.`)
: maxTokens === undefined
- ? `${usedLabel} tokens`
- : `${usedLabel} / ${maxLabel} tokens`;
+ ? i18n._(msg`${usedLabel} tokens`)
+ : i18n._(msg`${usedLabel} / ${maxLabel} tokens`);
return {
...(usedTokens !== undefined ? { usedTokens } : {}),
diff --git a/src/renderer/components/thread/threadDraftViewHelpers.ts b/src/renderer/components/thread/threadDraftViewHelpers.ts
index 9c2c7dc7..79ee5fc6 100644
--- a/src/renderer/components/thread/threadDraftViewHelpers.ts
+++ b/src/renderer/components/thread/threadDraftViewHelpers.ts
@@ -1,3 +1,4 @@
+import { msg } from "@lingui/core/macro";
import type {
AgentCapability,
AgentStatus,
@@ -6,6 +7,7 @@ import type {
ThreadPresentationMode,
} from "@/shared/contracts";
import { migrateCursorBaseId, parseCursorModelId } from "@/shared/cursorModelId";
+import { i18n } from "@/renderer/i18n/i18n";
import { capabilitiesForPresentation } from "./threadComposerOptions";
export function resolvePreferredAgentKind(
@@ -97,7 +99,7 @@ export function resolveModeValue(agent: AgentStatus, preferred?: string): string
}
export function formatEffortLabel(id: string): string {
- if (id === "xhigh" || id === "xHigh") return "Extra High";
+ if (id === "xhigh" || id === "xHigh") return i18n._(msg`Extra High`);
if (id === "ultracode") return "Ultracode";
return id.charAt(0).toUpperCase() + id.slice(1);
}
@@ -204,7 +206,9 @@ export function agentWithCapabilities(
}
export function formatAgentList(names: string[]): string {
- if (names.length === 0) return "a supported coding agent";
+ if (names.length === 0) return i18n._(msg`a supported coding agent`);
if (names.length === 1) return names[0]!;
- return `${names.slice(0, -1).join(", ")}, or ${names.at(-1)}`;
+ const head = names.slice(0, -1).join(", ");
+ const tail = names.at(-1)!;
+ return i18n._(msg`${head}, or ${tail}`);
}
diff --git a/src/renderer/components/ui/provider.tsx b/src/renderer/components/ui/provider.tsx
index 60a6efc9..f09fb0e2 100644
--- a/src/renderer/components/ui/provider.tsx
+++ b/src/renderer/components/ui/provider.tsx
@@ -7,6 +7,7 @@ import {
type ReactNode,
} from "react";
import { Toast, toast as heroToast } from "@heroui/react";
+import { I18nProvider } from "@lingui/react";
import { Copy } from "lucide-react";
import { resolveThemeMode } from "@/shared/themeMode";
import { applyAppTheme, persistThemeBoot, systemPrefersDark } from "@/renderer/theme/applyAppTheme";
@@ -14,6 +15,8 @@ import { applySidebarGlassTint } from "@/renderer/theme/sidebarGlass";
import { readBridge } from "@/renderer/bridge";
import { captureRendererException } from "@/renderer/diagnostics/sentry";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
+import { i18n, dynamicActivate } from "@/renderer/i18n/i18n";
+import { detectOSLocale, resolveLocale } from "@/renderer/i18n/locales";
import { getToastActionLabel, normalizeToastContent } from "./toastContent";
function systemPrefersReducedTransparency(): boolean {
@@ -77,6 +80,7 @@ export function AppProvider(props: { children: ReactNode; contentReady?: boolean
const { children, contentReady = false } = props;
const themeMode = useSharedSettings((state) => state.themeMode);
const themePreset = useSharedSettings((state) => state.themePreset);
+ const locale = useSharedSettings((state) => state.locale);
const [prefersDark, setPrefersDark] = useState(systemPrefersDark);
const syncSystemPreference = useEffectEvent((matches: boolean) => {
setPrefersDark(matches);
@@ -105,6 +109,14 @@ export function AppProvider(props: { children: ReactNode; contentReady?: boolean
};
}, []);
+ useEffect(() => {
+ const resolved = resolveLocale(locale, detectOSLocale());
+ void dynamicActivate(resolved).catch((error: unknown) => {
+ captureRendererException(error, { featureArea: "i18n" });
+ // Keep the app usable in the source locale if a catalog fails to load.
+ });
+ }, [locale]);
+
useEffect(() => {
if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
return;
@@ -183,93 +195,99 @@ export function AppProvider(props: { children: ReactNode; contentReady?: boolean
}, [appearance, glassEnabled, contentReady, sidebarGlassTint]);
return (
-
-
- {({ toast: toastItem }) => {
- const content = toastItem.content;
- const isObject = typeof content === "object" && content !== null;
- const rawTitle = isObject ? (content as any).title : content;
- const rawDescription = isObject ? (content as any).description : undefined;
- const variant = isObject ? (content as any).variant : "default";
- const { title, description } = normalizeToastContent(variant, rawTitle, rawDescription);
- const onPress = isObject ? (content as any).onPress : undefined;
- const hasOnPress = typeof onPress === "function";
- const rawActionProps = isObject ? (content as any).actionProps : undefined;
- const actionProps = rawActionProps
- ? {
- ...rawActionProps,
- onPress: (event: unknown) => {
- try {
- rawActionProps.onPress?.(event);
- } finally {
- heroToast.close(toastItem.key);
- }
- },
- }
- : undefined;
- const isToastPressable = hasOnPress && !actionProps;
- const actionLabel = getToastActionLabel(actionProps);
- const isCopyAction = actionLabel?.toLowerCase().startsWith("copy") ?? false;
-
- return (
-
- {isToastPressable ? (
- {
- if (event.key === "Enter" || event.key === " ") {
- event.preventDefault();
- onPress();
+
+
+
+ {({ toast: toastItem }) => {
+ const content = toastItem.content;
+ const isObject = typeof content === "object" && content !== null;
+ const rawTitle = isObject ? (content as any).title : content;
+ const rawDescription = isObject ? (content as any).description : undefined;
+ const variant = isObject ? (content as any).variant : "default";
+ const { title, description } = normalizeToastContent(variant, rawTitle, rawDescription);
+ const onPress = isObject ? (content as any).onPress : undefined;
+ const hasOnPress = typeof onPress === "function";
+ const rawActionProps = isObject ? (content as any).actionProps : undefined;
+ const actionProps = rawActionProps
+ ? {
+ ...rawActionProps,
+ onPress: (event: unknown) => {
+ try {
+ rawActionProps.onPress?.(event);
+ } finally {
+ heroToast.close(toastItem.key);
}
- }}
- role="button"
- tabIndex={0}
- >
-
-
-
- {title && {title} }
- {description && (
-
- {description}
-
- )}
-
+ },
+ }
+ : undefined;
+ const isToastPressable = hasOnPress && !actionProps;
+ const actionLabel = getToastActionLabel(actionProps);
+ const isCopyAction = actionLabel?.toLowerCase().startsWith("copy") ?? false;
+
+ return (
+
+ {isToastPressable ? (
+ {
+ if (event.key === "Enter" || event.key === " ") {
+ event.preventDefault();
+ onPress();
+ }
+ }}
+ role="button"
+ tabIndex={0}
+ >
+
+
+
+ {title && (
+ {title}
+ )}
+ {description && (
+
+ {description}
+
+ )}
+
+
-
- ) : (
-
-
-
-
- {title && {title} }
- {description && (
-
- {description}
-
- )}
-
+ ) : (
+
+
+
+
+ {title && (
+ {title}
+ )}
+ {description && (
+
+ {description}
+
+ )}
+
+
+
-
-
- )}
-
-
- );
- }}
-
- {children}
-
+ )}
+
+
+ );
+ }}
+
+ {children}
+
+
);
}
diff --git a/src/renderer/components/ui/toastContent.ts b/src/renderer/components/ui/toastContent.ts
index efc377a4..d8b18460 100644
--- a/src/renderer/components/ui/toastContent.ts
+++ b/src/renderer/components/ui/toastContent.ts
@@ -1,4 +1,6 @@
import type { ReactNode } from "react";
+import { msg } from "@lingui/core/macro";
+import { i18n } from "@/renderer/i18n/i18n";
const LONG_ERROR_TITLE_CHARS = 160;
const LONG_ERROR_TITLE_LINES = 4;
@@ -30,7 +32,7 @@ function deriveLongErrorTitle(text: string): string {
.find((line) => line.trim().length > 0)
?.trim();
if (!firstLine) {
- return "Error";
+ return i18n._(msg`Error`);
}
const prefixMatch = firstLine.match(/^([^:\n]{1,80}):\s+/);
diff --git a/src/renderer/hooks/usePrWriteActions.ts b/src/renderer/hooks/usePrWriteActions.ts
index 77677405..5662b5e3 100644
--- a/src/renderer/hooks/usePrWriteActions.ts
+++ b/src/renderer/hooks/usePrWriteActions.ts
@@ -1,8 +1,10 @@
import { useState } from "react";
import { toast } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
import type { ProjectLocation } from "@/shared/contracts";
import { friendlyError } from "@/shared/messages";
import { readBridge } from "@/renderer/bridge";
+import { i18n } from "@/renderer/i18n/i18n";
import { useGitStore } from "@/renderer/state/gitStore";
import { refreshSinglePr } from "@/renderer/state/gitRefresh";
@@ -97,9 +99,9 @@ export function usePrWriteActions(args: UsePrWriteActionsArgs): UsePrWriteAction
const canBypass = !admin && ADMIN_BYPASS_RX.test(message);
if (canBypass) {
toast.danger(message, {
- description: "Branch protection rules blocked this merge.",
+ description: i18n._(msg`Branch protection rules blocked this merge.`),
actionProps: {
- children: "Retry with admin",
+ children: i18n._(msg`Retry with admin`),
onPress: () => void handleMergePr(method, true),
},
timeout: 0,
diff --git a/src/renderer/i18n/i18n.test.ts b/src/renderer/i18n/i18n.test.ts
new file mode 100644
index 00000000..8bce863f
--- /dev/null
+++ b/src/renderer/i18n/i18n.test.ts
@@ -0,0 +1,39 @@
+import { afterEach, beforeEach, describe, expect, it } from "vitest";
+import { bootstrapAppLocaleFromCache, i18n } from "./i18n";
+
+const CACHE_KEY = "lightcode-shared-settings";
+
+describe("bootstrapAppLocaleFromCache", () => {
+ beforeEach(() => {
+ localStorage.clear();
+ });
+
+ afterEach(() => {
+ localStorage.clear();
+ // Restore the source locale so sibling tests render in English.
+ i18n.activate("en");
+ });
+
+ it("activates the explicit cached locale before mount", async () => {
+ localStorage.setItem(CACHE_KEY, JSON.stringify({ locale: "es" }));
+ await bootstrapAppLocaleFromCache();
+ expect(i18n.locale).toBe("es");
+ });
+
+ it("falls back to the source locale when no cache exists", async () => {
+ await bootstrapAppLocaleFromCache();
+ expect(i18n.locale).toBe("en");
+ });
+
+ it("resolves a non-string locale value to the source locale", async () => {
+ localStorage.setItem(CACHE_KEY, JSON.stringify({ locale: 123 }));
+ await bootstrapAppLocaleFromCache();
+ expect(i18n.locale).toBe("en");
+ });
+
+ it("ignores a malformed cache without throwing", async () => {
+ localStorage.setItem(CACHE_KEY, "{not json");
+ await expect(bootstrapAppLocaleFromCache()).resolves.toBeUndefined();
+ expect(i18n.locale).toBe("en");
+ });
+});
diff --git a/src/renderer/i18n/i18n.ts b/src/renderer/i18n/i18n.ts
new file mode 100644
index 00000000..8b4835e9
--- /dev/null
+++ b/src/renderer/i18n/i18n.ts
@@ -0,0 +1,77 @@
+import { i18n } from "@lingui/core";
+import type { useLingui } from "@lingui/react/macro";
+import { SOURCE_LOCALE, type LocaleSetting, type SupportedLocale } from "@/shared/locale";
+import { messages as sourceMessages } from "../locales/en/messages.po";
+import { detectOSLocale, resolveLocale } from "./locales";
+// Side-effect import: installs the locale-aware resolver for the shared
+// `@/shared/messages` catalog (which stays macro-free for the supervisor).
+import "./sharedMessages";
+
+// Load + activate the source locale synchronously at module load so macros
+// resolve on the very first render — no flash of empty UI before a catalog
+// loads. Other locales are imported on demand by `dynamicActivate`.
+i18n.load(SOURCE_LOCALE, sourceMessages);
+i18n.activate(SOURCE_LOCALE);
+
+const loaded = new Set([SOURCE_LOCALE]);
+
+/**
+ * Load (once) and activate a locale's compiled catalog. The Vite plugin turns
+ * the `.po` import into a runtime message module. Safe to call repeatedly and
+ * with the already-active locale.
+ */
+export async function dynamicActivate(locale: SupportedLocale): Promise {
+ if (!loaded.has(locale)) {
+ const { messages } = await import(`../locales/${locale}/messages.po`);
+ i18n.load(locale, messages);
+ loaded.add(locale);
+ }
+ i18n.activate(locale);
+}
+
+// Mirrors the localStorage key in sharedSettingsStore. Read directly here so the
+// pre-mount bootstrap doesn't have to import (and eagerly hydrate) the store —
+// the same approach `bootstrapAppThemeFromCache` takes for the theme.
+const SHARED_SETTINGS_CACHE_KEY = "lightcode-shared-settings";
+
+// Ceiling on how long the pre-mount catalog load may delay first paint. A local
+// bundled chunk loads in single-digit ms; this only bounds the pathological case
+// where the chunk fetch hangs (vs. errors, which the catch handles), so a wedged
+// load can never block the app from mounting. On timeout we paint in the source
+// locale and the provider effect finishes activating the real catalog post-mount.
+const CATALOG_BOOT_TIMEOUT_MS = 1500;
+
+/**
+ * Resolve the cached `locale` setting and activate its catalog *before* React
+ * mounts, so a non-English user's first paint is already translated instead of
+ * flashing the source ("en") locale while the provider effect loads the catalog
+ * asynchronously. The locale analog of `bootstrapAppThemeFromCache`: the
+ * provider effect re-resolves from the authoritative settings and wins if the
+ * cache was stale. Defensive — never rejects and is time-bounded, so neither a
+ * failed nor a hung catalog load can wedge boot; the app stays usable in the
+ * source locale either way.
+ *
+ * Unlike the theme, this can't run in the index.html pre-paint script: non-`en`
+ * catalogs are async chunks, so the earliest seam that can await one is here.
+ */
+export async function bootstrapAppLocaleFromCache(): Promise {
+ try {
+ const raw =
+ typeof localStorage === "undefined" ? null : localStorage.getItem(SHARED_SETTINGS_CACHE_KEY);
+ const cached = raw ? (JSON.parse(raw) as { locale?: unknown }) : null;
+ const setting: LocaleSetting =
+ typeof cached?.locale === "string" ? (cached.locale as LocaleSetting) : "system";
+ await Promise.race([
+ dynamicActivate(resolveLocale(setting, detectOSLocale())),
+ new Promise((resolve) => setTimeout(resolve, CATALOG_BOOT_TIMEOUT_MS)),
+ ]);
+ } catch {
+ // Non-fatal; the source locale stays active and the provider effect
+ // re-resolves the real setting after mount.
+ }
+}
+
+/** The `t` translator returned by `useLingui()`; thread through helpers to stay locale-reactive. */
+export type TranslateFn = ReturnType["t"];
+
+export { i18n };
diff --git a/src/renderer/i18n/locales.ts b/src/renderer/i18n/locales.ts
new file mode 100644
index 00000000..aa4896ae
--- /dev/null
+++ b/src/renderer/i18n/locales.ts
@@ -0,0 +1,84 @@
+import { msg } from "@lingui/core/macro";
+import type { MessageDescriptor } from "@lingui/core";
+import {
+ AI_LANGUAGE_VALUES,
+ LOCALE_SETTING_VALUES,
+ SUPPORTED_LOCALES,
+ type AiContentLanguage,
+ type LocaleSetting,
+} from "@/shared/locale";
+
+export {
+ AI_LANGUAGE_VALUES,
+ LOCALE_SETTING_VALUES,
+ SUPPORTED_LOCALES,
+ SOURCE_LOCALE,
+ isSupportedLocale,
+ resolveLocale,
+ resolveAiLanguageName,
+ type AiContentLanguage,
+ type LocaleSetting,
+ type SupportedLocale,
+} from "@/shared/locale";
+
+/**
+ * Display label for each locale-setting value. Native names are intentionally
+ * left untranslated (a language is best shown in its own language); only the
+ * "System" label is translatable since it describes a behavior, not a language.
+ */
+const LOCALE_SETTING_LABELS: Record = {
+ system: msg`System`,
+ en: "English",
+ es: "Español",
+ ru: "Русский",
+ uk: "Українська",
+ "zh-CN": "简体中文",
+ ja: "日本語",
+ "pt-BR": "Português (Brasil)",
+ de: "Deutsch",
+ fr: "Français",
+ ko: "한국어",
+ pl: "Polski",
+ vi: "Tiếng Việt",
+ tr: "Türkçe",
+};
+
+/**
+ * Options for the language `Select`. `label` may be a lazy `MessageDescriptor`
+ * (for "System") or a plain native string; resolve descriptors at render time
+ * with `useLingui()._(...)` — see GeneralSettings.
+ */
+export const localeOptions: ReadonlyArray<{
+ id: LocaleSetting;
+ label: string | MessageDescriptor;
+}> = LOCALE_SETTING_VALUES.map((id) => ({ id, label: LOCALE_SETTING_LABELS[id] }));
+
+/**
+ * Defined at module level (not inline in the `.map` below) so the Lingui macro
+ * can statically extract it.
+ */
+const MATCH_APP_LABEL = msg`Match app language`;
+
+/**
+ * Options for the AI-content language `Select` (commit/PR text). `"match-app"`
+ * follows the UI language; the rest reuse the native locale labels. Resolve
+ * descriptors at render time like {@link localeOptions}.
+ */
+export const aiLanguageOptions: ReadonlyArray<{
+ id: AiContentLanguage;
+ label: string | MessageDescriptor;
+}> = AI_LANGUAGE_VALUES.map((id) => ({
+ id,
+ label: id === "match-app" ? MATCH_APP_LABEL : LOCALE_SETTING_LABELS[id],
+}));
+
+/** Preferred languages from the browser/Electron renderer, newest API first. */
+export function detectOSLocale(): readonly string[] {
+ if (typeof navigator === "undefined") {
+ return [];
+ }
+ if (Array.isArray(navigator.languages) && navigator.languages.length > 0) {
+ return navigator.languages;
+ }
+ return navigator.language ? [navigator.language] : [];
+}
diff --git a/src/renderer/i18n/po.d.ts b/src/renderer/i18n/po.d.ts
new file mode 100644
index 00000000..104f85f7
--- /dev/null
+++ b/src/renderer/i18n/po.d.ts
@@ -0,0 +1,7 @@
+// The Lingui Vite plugin compiles `.po` catalog imports into runtime message
+// modules. Declare the module shape so `tsgo`/`tsc` accept the imports.
+declare module "*.po" {
+ import type { Messages } from "@lingui/core";
+
+ export const messages: Messages;
+}
diff --git a/src/renderer/i18n/sharedMessages.test.ts b/src/renderer/i18n/sharedMessages.test.ts
new file mode 100644
index 00000000..af41bafc
--- /dev/null
+++ b/src/renderer/i18n/sharedMessages.test.ts
@@ -0,0 +1,50 @@
+import { afterAll, beforeEach, describe, expect, it } from "vitest";
+import { friendlyError, msg } from "@/shared/messages";
+// Importing the i18n runtime installs the shared-message resolver as a side
+// effect (via `./sharedMessages`), so `msg()` becomes locale-aware here.
+import { dynamicActivate } from "@/renderer/i18n/i18n";
+
+describe("shared message i18n integration", () => {
+ beforeEach(async () => {
+ await dynamicActivate("en");
+ });
+
+ afterAll(async () => {
+ // Restore the source locale for any later test sharing this worker.
+ await dynamicActivate("en");
+ });
+
+ it("returns the English source when the source locale is active", () => {
+ expect(msg("git.commit.failed", { detail: "boom" })).toBe("Commit failed: boom");
+ expect(msg("git.worktree.cleanupFailed", { original: "ORIG", cleanup: "CLN" })).toBe(
+ "ORIG\nWorktree cleanup also failed: CLN",
+ );
+ });
+
+ it("returns translated text once a non-source locale is active", async () => {
+ await dynamicActivate("es");
+ const translated = msg("git.commit.failed", { detail: "boom" });
+ // Differs from the English source (so a translation was applied) and still
+ // interpolates the `{detail}` value.
+ expect(translated).not.toBe("Commit failed: boom");
+ expect(translated).toContain("boom");
+ });
+
+ it("preserves a leading placeholder + newline through translation", async () => {
+ await dynamicActivate("es");
+ const translated = msg("git.worktree.cleanupFailed", { original: "ORIG", cleanup: "CLN" });
+ // Both placeholders and the newline survive (regression guard for the PO
+ // multiline handling of `{original}\n…`).
+ expect(translated.startsWith("ORIG\n")).toBe(true);
+ expect(translated).toContain("CLN");
+ expect(translated).not.toContain("{original}");
+ expect(translated).not.toContain("{cleanup}");
+ });
+
+ it("translates pattern-matched friendly errors", async () => {
+ await dynamicActivate("es");
+ const summary = friendlyError(new Error("CONFLICT (content): Merge conflict in src/x.ts"));
+ expect(summary).not.toBe("Merge has conflicts");
+ expect(summary.length).toBeGreaterThan(0);
+ });
+});
diff --git a/src/renderer/i18n/sharedMessages.ts b/src/renderer/i18n/sharedMessages.ts
new file mode 100644
index 00000000..f4642472
--- /dev/null
+++ b/src/renderer/i18n/sharedMessages.ts
@@ -0,0 +1,75 @@
+import { msg } from "@lingui/core/macro";
+import type { MessageDescriptor } from "@lingui/core";
+import { setMessageResolver, type MessageKey } from "@/shared/messages";
+import { i18n } from "./i18n";
+
+/**
+ * Lingui descriptors mirroring the shared `messages` catalog in
+ * `@/shared/messages`. That module stays macro-free so it can be imported by
+ * the supervisor process too; the renderer installs these translations at
+ * runtime via {@link setMessageResolver}. `{param}` placeholders are ICU
+ * arguments resolved with the values passed to `msg()`.
+ */
+const SHARED_MESSAGE_DESCRIPTORS: Record = {
+ "git.commandFailed": msg({ message: "Git {command} failed: {detail}" }),
+ "git.switch.dirtyWorktree": msg({
+ message: "Cannot switch branches — commit or stash your changes first",
+ }),
+ "git.commit.failed": msg({ message: "Commit failed: {detail}" }),
+ "git.commit.hookFailed": msg({ message: "Pre-commit hook failed" }),
+ "git.hook.failed": msg({ message: "{hook} hook failed" }),
+ "git.push.failed": msg({ message: "Push failed: {detail}" }),
+ "git.sync.failed": msg({ message: "Sync failed: {detail}" }),
+ "git.merge.failed": msg({ message: "Merge failed" }),
+ "git.merge.conflicts": msg({ message: "Merge has conflicts" }),
+ "git.merge.conflictsDetail": msg({ message: "Merge has conflicts:\n{files}" }),
+ "git.merge.finishFailed": msg({ message: "Could not complete the merge" }),
+ "git.merge.abortFailed": msg({ message: "Could not abort the merge: {detail}" }),
+ "git.pull.failed": msg({ message: "Pull failed: {detail}" }),
+ "git.pull.localChanges": msg({
+ message: "Local changes need to be stashed before pulling from {branch}",
+ }),
+ "git.pull.reapplyConflicts": msg({ message: "Re-applying local changes has conflicts" }),
+ "git.pull.stashPreserved": msg({
+ message: "Pull did not complete. Your local changes remain in a Lightcode stash.",
+ }),
+ "git.worktree.noBranch": msg({
+ message: "Cannot create a default worktree path without a branch name",
+ }),
+ "git.worktree.dirtySource": msg({
+ message:
+ "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash them before merging",
+ }),
+ // NOTE: `lingui extract`'s PO writer mangles a translated `msgstr` that
+ // leads with a placeholder immediately followed by a newline (`{original}\n…`),
+ // dropping that leading segment on rewrite. The es/ru/uk `msgstr` for this key
+ // is hand-maintained in the catalogs; if you re-run extract, re-apply it. The
+ // `sharedMessages.test.ts` regression guard fails if it gets dropped.
+ "git.worktree.cleanupFailed": msg({
+ message: "{original}\nWorktree cleanup also failed: {cleanup}",
+ }),
+ "git.wsl.homeNotFound": msg({
+ message: 'Unable to resolve home directory for WSL distro "{distro}"',
+ }),
+ "git.wsl.mkdirFailed": msg({ message: 'Unable to create WSL worktree directory "{path}"' }),
+ "git.pr.createFailed": msg({ message: "Failed to create pull request: {detail}" }),
+ "git.pr.mergeFailed": msg({ message: "Failed to merge pull request: {detail}" }),
+ "git.pr.closeFailed": msg({ message: "Failed to close pull request: {detail}" }),
+ "git.generateMessage.failed": msg({ message: "Could not generate commit message: {detail}" }),
+ "supervisor.restarted": msg({ message: "Background process restarted" }),
+ "supervisor.exited": msg({ message: "Background process exited unexpectedly" }),
+ "supervisor.notRunning": msg({ message: "Background process is not running" }),
+ "update.error": msg({ message: "Update error: {detail}" }),
+};
+
+/**
+ * Install the renderer's locale-aware resolver for `@/shared/messages`. Imported
+ * for its side effect by the i18n runtime, so it is active as soon as i18n
+ * loads (including in tests, which import the runtime via `testSetup`).
+ */
+setMessageResolver((key, params) => {
+ const descriptor = SHARED_MESSAGE_DESCRIPTORS[key];
+ // The catalog keys messages by their source text, so the descriptor's id
+ // (or message) is the lookup key; `i18n._` interpolates the `{param}` values.
+ return i18n._(descriptor.id ?? descriptor.message ?? key, params);
+});
diff --git a/src/renderer/locales/de/messages.po b/src/renderer/locales/de/messages.po
new file mode 100644
index 00000000..8551f918
--- /dev/null
+++ b/src/renderer/locales/de/messages.po
@@ -0,0 +1,6096 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: de\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Entwurf)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(keine Nachricht)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# Datei} other {# Dateien}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# Anbieter bereit} other {# Anbieter bereit}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {Ziel} other {Ziele}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# andere Chats verwenden denselben Baum. Die "
+"Dateiwiederherstellung könnte ihre Änderungen überschreiben.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} – Composer"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} – Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) ist bereits aktuell."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) auf v{newVersion} aktualisiert."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) aktualisiert."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} authentifiziert."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "{0}-Anmeldeinformationen entfernt."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0}-Anmeldeinformationen gespeichert."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} Geräte"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{0}-Hooks für {envName} installiert."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0}-Hooks installiert."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{0}-Hooks für {envName} entfernt."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} Installationsziele"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} ist bereits aktuell."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0}-Grenze"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} hat sich abgemeldet."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} benötigt eine Authentifizierung."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} Prompt - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} Prompts - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} Ausführung"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} Ausführungen"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0}-Token"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} Tokens - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} auf Version {1} aktualisiert."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} auf Version {latestRegistryVersion} aktualisiert."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} auf Version {newVersion} aktualisiert."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} auf Version {resolvedLatest} aktualisiert."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} aktualisiert."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} verwendet"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% voll"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "vor {0} Mon."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Für Statusdetails den Mauszeiger darüber "
+"bewegen."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} Tag"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} Tage"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "vor {days} d"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} benötigt eine Authentifizierung."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} Übereinstimmungen"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} oder {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "{heading}-Modus"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "{hook}-Hook ist fehlgeschlagen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "vor {hours} Std."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# Agent bereit} other {# Agenten bereit}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label}-Nutzung – Nutzungsbereich öffnen"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel}{0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel}{0}{env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel}{env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel} Kontext"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "vor {minutes} min"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} benötigt eine Authentifizierung."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Die Bereinigung des Arbeitsbaums ist ebenfalls fehlgeschlagen: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% voll"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (deaktiviert)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "{projectName}-Einstellungen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# offen} other {# offen}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# Ergebnis} other {# Ergebnisse}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "vor {seconds}s"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} Token"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} Token"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} Token"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} Token"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} von {totalCount} sichtbar"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Alle Rechte vorbehalten."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> von {0} Prüfungen bestanden"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · geschätzt"
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% bis zum Reset"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "ein unterstützter Codierungsagent"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Zusammenführung abbrechen"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "Über"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Beide Änderungen übernehmen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Aktuelle Änderung übernehmen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Eingehende Änderung übernehmen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Konto"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Kontooptionen"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Konten"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "ACP-Agenten"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Aktionsbefehl"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Aktion für die Schaltfläche zum schnellen Entfernen in "
+"Seitenleisten-Threads."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Aktionsname"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Aktionen"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Aktiv"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Aktivität"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Aktivitätseinblicke"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Aktivitätsmetrik"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Fügen Sie ein Projekt hinzu, bevor Sie einen Agenten installieren."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Fügen Sie ein Projekt hinzu, bevor Sie sich anmelden."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Fügen Sie zum Starten ein Projekt hinzu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Eine Aufgabe hinzufügen…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Aktion hinzufügen"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Anhang oder Fähigkeit hinzufügen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Claude-Profil hinzufügen"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Fügen Sie Anmeldeinformationen hinzu, bevor dieser Thread ausgeführt "
+"werden kann."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Modell hinzufügen"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Muster hinzufügen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Profil hinzufügen"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Projekt hinzufügen"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Projekt hinzufügen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Projektoptionen hinzufügen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Remote hinzufügen"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Zum Composer hinzufügen"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Zu Favoriten hinzufügen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Agent ({subagent}):{description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Agenten-Chat (ACP / Markdown). Befehlszeilen verwenden diese Größe "
+"minus 1 px; Werkzeug- und Planzeilen minus 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Der Agent hat einen Fehler festgestellt."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Der Agent ist aktiv und bereit"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Der Agent ist derzeit deaktiviert"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Agent nicht gefunden"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Agentenregister"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Schriftgröße des Agententerminals"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Agent-Update verfügbar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Agent:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Agent:{subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Agenten"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Agenten · Allgemein"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "KI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "KI-Agenten-Orchestrator – Codierungsagenten über Terminal und natives "
+"ACP verwalten."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "KI-Git-Aktionen"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Alle Konten"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Alle Geräte"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Alle Stufen"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Alle Dateien"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Erlauben"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Erlauben Sie Agenten, Cookies und Speicher zu lesen/schreiben"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Auswertung zulassen"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Immer"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Immer ausgeschlossen"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Ein anderer Chat verwendet denselben Baum. Die Dateiwiederherstellung "
+"könnte die Änderungen dieses Chats überschreiben."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "App-Browser"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Aussehen"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Erscheinungsmodus"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Anbieter-Voreinstellung anwenden"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Zustimmung oder Antwort Ihrerseits erforderlich."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Genehmigen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "genehmigt"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Genehmigt"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Archiv"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "{0} archivieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Alle archivieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Thread archivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Archivierte Threads"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Sind Sie sicher, dass Sie <0>{0}0> wiederherstellen möchten? Dies "
+"kann nicht rückgängig gemacht werden."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Sind Sie sicher, dass Sie <0>{path}0> wiederherstellen möchten? Dies "
+"kann nicht rückgängig gemacht werden."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Sind Sie sicher, dass Sie alle nicht bereitgestellten Änderungen "
+"rückgängig machen möchten? Dies kann nicht rückgängig gemacht werden."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Fragen Sie {0} etwas zu diesem Arbeitsbereich"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Fragen Sie jedes Mal"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Frage stellen"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Anhängen"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Dateien anhängen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "An Thread anhängen"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "To-do-Dock an Composer anhängen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Browserauswahl angehängt."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Audio"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Authentifizierung"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Authentifizierung erforderlich"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Automatisch"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Automatisch genehmigen"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Fertige Threads danach automatisch archivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Erledigte Threads nach (Tagen) automatisch archivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Automatisch generieren"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Automatische Aktualisierung (Minuten)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Automatisches Aktualisierungsintervall in Minuten, 0 zum Ausschalten"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Automatische Überprüfung"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Terminal-Panel automatisch anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Zeigt das Terminal-Panel automatisch an, wenn Befehle ausgeführt oder "
+"Arbeitsbäume erstellt werden."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "verfügbar"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Verfügbare ACP-Agenten"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Avatar-Farbe"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Avatar-Farbe {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Zurück"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Der Hintergrundprozess wurde unerwartet beendet"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Der Hintergrundprozess wird nicht ausgeführt"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Hintergrundprozess neu gestartet"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Hintergrundaufgaben"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Der Basiszweig liegt vorn – der Zweig muss zuerst aktualisiert werden."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Basisschriftgröße für Agententerminals. Automatische Verkleinerung in "
+"schmalen oder kurzen Fenstern."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Basisschriftgröße für das Terminalpanel. Automatische Verkleinerung in "
+"schmalen oder kurzen Fenstern."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Bash-Ausgabe"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Basic (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Besser (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Bessere Statusaktualisierungen während der Agentenausführung."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Binär"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Binärdatei – Vorschau nicht verfügbar."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Binärdatei oder kein Diff verfügbar"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Binärdateien können hier nicht bearbeitet werden."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "blockiert:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Fett"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Unten"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "Der Zweig „{branch}“ enthält nicht festgeschriebene Änderungen in "
+"„{path}“ – schreiben Sie sie fest oder speichern Sie sie vor dem "
+"Zusammenführen"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "Branch <0>{0}0> weist nicht zusammengeführte Änderungen auf:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Branch nicht vollständig zusammengeführt"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Branch-Schutzregeln haben diese Zusammenführung blockiert."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Branches"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Übergeordneten Ordner auswählen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Durchsuchen Sie Ihre GitHub-Repositorys oder fügen Sie eine Klon-URL "
+"ein."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Browser"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Browser-MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Browser-MCP für OpenCode aktiviert"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Browser-MCP für diesen Thread aktiviert"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Browser-Menü"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Browser-Auswahlziel (CLI-Threads)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Browser-Auswahlziel für CLI-Threads"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Budgetgrenze erreicht"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Diff wird erstellt…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "von <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "nach Prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "nach Tokens"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Branch-Schutzregeln umgehen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Branch-Schutzregeln umgehen (Admin-Zusammenführung)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Neues Claude-Profil abbrechen"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Ausstehende Lenkungsanweisung abbrechen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Auswahl abbrechen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "abgebrochen"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Ohne Branch-Namen kann kein Standard-Worktree-Pfad erstellt werden"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Branch kann nicht gewechselt werden – committen oder stashen Sie zuerst "
+"Ihre Änderungen"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Benutzer ändern"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Änderungsprotokoll"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Änderungen"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Änderungen ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Änderungen im PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Änderungen angefordert"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Kanal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Chat"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Chat-Befehle"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Überprüfen"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Suchen Sie nach Updates"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Überprüfen Sie den Live-Eingangspegel des ausgewählten Geräts."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Wird überprüft…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Prüfungen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Wählen Sie einen Ordner…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Wählen Sie aus, wie Sie sich für {env} anmelden möchten."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Wählen Sie aus, wie Sie sich anmelden möchten."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Wählen Sie die Anzeigesprache für die Benutzeroberfläche von Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Thread zum Anhängen auswählen"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Wählen Sie, ob Links von Lightcode und Browser-Popups in Lightcode "
+"bleiben oder extern geöffnet werden sollen."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Claude-{0}-Profil gespeichert."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Claude-{displayName}-Profil hinzugefügt."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Claude-Profilkonfigurationsverzeichnis"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Claude-Profilname"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Claude-Profil entfernt."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Bereinigungsskript"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Browserverlauf löschen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Cache leeren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Cookies löschen"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Suche löschen"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "CLI-Hooks"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Klonen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Repository klonen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "Klon-URL"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "{cloneTarget} wird geklont"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Klonen…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Schließen"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "{purposeNoun}-Terminal schließen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Browser schließen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Editor schließen"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Editor-Tab schließen"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Ziel schließen"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Gruppe schließen"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Bereich schließen"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Bereich schließen"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Plan schließen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "PR schließen"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Vorschau schließen"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Suche schließen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Split schließen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Subagent schließen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Subagenten schließen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Schließen Sie den Subagentenbereich"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Tab schließen"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "In den Infobereich minimieren"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Nutzungsdetails schließen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Geschlossen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Code kopiert."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Einklappen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "{label} einklappen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Alles einklappen"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Alles einklappen"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Alle Ordner einklappen"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Composer einklappen"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Fehler einklappen"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Terminal-Composer einklappen"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Aufgaben-Dock einklappen"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Befehl"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Befehl (z. B. npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Befehle"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Kommentar"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Kommentar gepostet"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "kommentiert"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Committen & PR erstellen"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Commit- & PR-Sprache"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Commit & Push"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Commit fehlgeschlagen: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Commit-Nachricht"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Commit-Nachricht (Strg+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Commit-Nachrichtengenerierung"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Commit-Optionen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commits"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Kontext verdichten"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Abgeschlossen"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Schließen Sie die {0}-Anmeldung ab, bevor dieser Thread ausgeführt "
+"werden kann."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Schließen Sie die {0}-Anmeldung für {env} ab."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Schließen Sie die {0}-Anmeldung ab oder speichern Sie die "
+"{1}-Anmeldeinformationen."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Schließen Sie die {0}-Anmeldung ab."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Füllen Sie die Eingabeaufforderungen in diesem Terminal aus. Wird "
+"geschlossen, wenn es fertig ist."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "abgeschlossen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Konfigurationsverzeichnis"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Konfliktlöser"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Konflikte"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Konsole"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Kontext"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Kontext verdichtet"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Kontext aus {before} Tokens komprimiert"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Kontext komprimiert: {before} → {after} Tokens"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Kontextextraktion ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Kontext manuell aus {before} Tokens komprimiert"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Kontext manuell komprimiert: {before} → {after} Tokens"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Kontext an {targetLabel} übertragen"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Kontextverwendung"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Weiter"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "In einem anderen Anbieter fortfahren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Weiter in..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Steuern Sie, welche Dateien in der @file-Erwähnungssuche angezeigt "
+"werden. Projektspezifische Überschreibungen sind in den Einstellungen "
+"jedes Projekts verfügbar."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Gespräch"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Kopiert"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "In die Zwischenablage kopiert"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Kopieren"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "{0} Gerätecode {1} kopieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Aktuelle URL kopieren"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Details kopieren"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Diagnose kopieren"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Kopieren fehlgeschlagen"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Ignorierte Dateien kopieren"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Bild kopieren"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Nachricht kopieren"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Pfad kopieren"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Relativen Pfad kopieren"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Kopieren Sie nicht festgeschriebene Änderungen hierher (behalten Sie "
+"sie in diesem Zweig)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Die Zusammenführung konnte nicht abgebrochen werden: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Die Zusammenführung konnte nicht abgeschlossen werden"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Der Kontext konnte nicht extrahiert werden."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Commit-Nachricht konnte nicht generiert werden: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Datei konnte nicht gelesen werden."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Das Repository konnte nicht geklont werden."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Ihre nicht festgeschriebenen Änderungen konnten nicht in den neuen "
+"Arbeitsbaum kopiert werden – sie verbleiben im aktuellen Zweig."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Das Projekt konnte nicht erstellt werden."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Repositorys konnten nicht aufgelistet werden."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Ihre Profilstatistiken konnten nicht geladen werden."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "PR-Entwurf erstellen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Datei erstellen"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Neuen Branch erstellen"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Neuen Branch erstellen..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "PR erstellen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "PR erstellen (automatisch)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "„PR erstellen“-Aktion"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "PR erstellen…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Projekt erstellen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Pull Request erstellen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Aufgabe erstellen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Erstellen:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Es wurde ein Arbeitsbaum für „{newBranch}“ erstellt, aber die "
+"Änderungen widersprachen und verbleiben in einem Git-Stash – lösen Sie "
+"sie im Arbeitsbaum auf."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Anmeldeinformationen sind konfiguriert."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Credits"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "aktuelle Serie"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Aktuelle Serie"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Benutzerdefiniert"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Benutzerdefinierte Befehle, die im Projektkontextmenü verfügbar sind "
+"(Rechtsklick)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Dunkel"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Ablehnen"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Standard"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Standardmäßige „PR erstellen“-Aktion"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Standardmäßiger neuer Thread"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Standardberechtigungen"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Standardmäßiges Entfernen von Threads"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Löschen"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "{0} löschen"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Zweig löschen?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Datei löschen"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Dauerhaft löschen"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Thread löschen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Thread löschen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Thread löschen?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "To-do löschen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Worktree löschen"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Worktree {0} löschen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Löschen:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Löschen"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Ablehnen"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Lehnen Sie ab und sagen Sie dem Agenten, was er anders machen soll ..."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Beschreibung"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Beschreibung (optional)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Erkannt <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "<0>(lokal)0> erkannt"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "<0>{0}0> erkannt"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Agenten werden erkannt…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Entwickler"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Überschreibungen nur für die Entwicklung. Nur im LIGHTCODE DEV-Build "
+"sichtbar."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Von der Composer-Spracheingabetaste verwendetes Gerät."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Deaktivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Stufe {tierLabel} deaktivieren"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Browser-MCP deaktivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "CLI-Hook-Plugin deaktivieren (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Projekt deaktivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Stufen deaktivieren, die ein externer Anbieter zusammenfasst (z. B. nur "
+"High und Max behalten)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Nicht gespeicherte Änderungen in {path} verwerfen?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Nicht gespeicherte Editoränderungen verwerfen?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Codierungsagenten entdecken…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Schließen"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Fehler verwerfen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "Überprüfung abgewiesen"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Anzeigename in der Seitenleiste."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Doku"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Fragen Sie nicht noch einmal"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Hook-Installationsvorschlag nicht anzeigen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "erledigt"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Fertig"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Fertig · Warten auf Ihre Eingabe"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Bild herunterladen"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Herunterladen in „{0}“. Bei großen Repositories kann dies einen Moment "
+"dauern."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Sprachmodell wird heruntergeladen {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Sprachmodell wird heruntergeladen..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Herunterladen{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Herunterladen{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Entwurf"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Ziehen Sie, um die Anzeige der Anbieter in der Modellauswahl neu "
+"anzuordnen."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Zum Neuanordnen ziehen; Doppelklicken Sie zum Bearbeiten"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Zum Anhängen hier ablegen"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Lässt eingehende Hook-Umschläge auf dem Supervisor fallen, sodass "
+"Agenten auf L2 (OSC 9;4-Fortschritt) zurückgreifen, ohne Installations- "
+"oder iTerm2-Benachrichtigungen zu berühren. Wird beim nächsten "
+"Hook-Ereignis wirksam – kein Neustart erforderlich."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "z.B. Arbeit"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Datei bearbeiten"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Profil bearbeiten"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Bearbeiten:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Editor"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "Editor-LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Editor-Registerkarten"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Aufwand und Kontext"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Stufen"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Aktivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Stufe {tierLabel} aktivieren"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Aktivieren Sie die Sprachserverunterstützung für Typprüfung, "
+"Vervollständigungen und Diagnose. Erfordert die Installation eines "
+"Sprachservers."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Aktivieren Sie den Mikrofonzugriff in Ihren Systemeinstellungen und "
+"versuchen Sie es dann erneut."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Benachrichtigungen aktivieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Projekt aktivieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Aktivieren Sie Anbieter in den Einstellungen"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Aktiviert"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Aktiviert <0>Cookies0> und <1>Speicher1>. Cookies können "
+"Sitzungstoken enthalten und der Speicher enthält oft den "
+"Authentifizierungsstatus – aktivieren Sie sie nur, wenn Sie sowohl dem "
+"Agenten als auch den von ihm besuchten Websites vertrauen."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Verbessert (Hooks)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Geben Sie eine Repository-URL ein."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Wechseln Sie in den Planmodus"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Umgebung"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Name der Umgebungsvariable"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Wert der Umgebungsvariable"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Umgebungsvariablen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "Fehler"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Fehler"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Fehler · Der Agent hat einen Fehler festgestellt"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Muster ausschließen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Verlassen Sie den Planmodus"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Beendet mit Code {0}. Schließen, um erneut zu versuchen."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Erweitern"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Erweitern Sie {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Alles erweitern"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Fehler erweitern"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Erweitern Sie das Aufgaben-Dock"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Extern"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Externer Anbieter"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Extra hoch"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Kontext aus {0} extrahieren ..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "fehlgeschlagen"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Pull-Anfrage konnte nicht geschlossen werden: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Pull-Anfrage konnte nicht erstellt werden: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Profilstatistiken konnten nicht geladen werden."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Pull-Anfrage konnte nicht zusammengeführt werden: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Schnell"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Schnellmodus"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Am schnellsten (Whisper Tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "„Am schnellsten“ verwendet Whisper Tiny; „Besser“ verwendet Whisper "
+"Base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Favoriten"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Abrufen"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Datei"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Dateiänderungen werden hier angezeigt."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Die Datei ist zu groß für die Vorschau."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Die Datei ist nicht mehr auf der Festplatte vorhanden."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Datei zu groß zum Anzeigen ({0, plural, one {# Zeile geändert} other {# "
+"Zeilen geändert}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Die Datei verwendet eine nicht unterstützte Codierung."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Dateien"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Dateien für {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Dateien, die mit diesen Globs übereinstimmen, werden bei der "
+"@file-Erwähnungssuche ausgeblendet."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Review abschließen"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Fertig"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Fertig · Warten auf Ihre Eingabe"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Erstklassige Antigravity-CLI-Integration mithilfe der nativen Laufzeit "
+"von Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Erstklassige Claude Code-Integration mithilfe der nativen "
+"SDK-Laufzeitumgebung von Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Erstklassige Codex-CLI-Integration mithilfe der nativen "
+"App-Server-Laufzeitumgebung von Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Erstklassige Command Code CLI-Integration mithilfe der nativen Laufzeit "
+"von Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Erstklassige Grok Build CLI-Integration mit der nativen Laufzeit von "
+"Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Erstklassige OpenCode-Integration mithilfe der nativen "
+"SDK-Laufzeitumgebung von Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Im Agenten beheben"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Ordnername"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Löschen erzwingen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Löschen erzwingen? Nicht zusammengeführte Änderungen gehen verloren."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Dateien formatieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Vorwärts"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Es wurde eine angemeldete {0}-Sitzung gefunden."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Die Seitenleiste mit dem Unschärfe-Material des Systems (Vibrancy) "
+"mattieren, angelehnt an aktuelle macOS-Versionen. Wo nicht unterstützt, "
+"wird auf eine durchscheinende Tönung zurückgegriffen."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Mattierung der Seitenleiste im {appearance}-Modus über der "
+"System-Unschärfe. Höher hält die Designfarbe; niedriger zeigt mehr vom "
+"Hintergrund."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Voller Zugriff"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Vollbild-Overlay"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Allgemein"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Commit-Nachricht generieren"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "PR-Zusammenfassung erstellen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Mit KI generieren"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Generiertes Bild"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Generiert Commit-Nachrichten aus bereitgestellten Änderungen."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Erzeugt Kurztitel für neue Threads."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Aufgabe abrufen"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} fehlgeschlagen: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Git-Review"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Git-Überprüfungsmodus"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Git-Status für {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Git-Status für {0}: kein Git-Repository"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "GitHub-Repository"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Gitignorierte Dateien zum Kopieren aus dem Hauptprojekt in jeden neuen "
+"Arbeitsbaum. Muster im Gitignore-Stil, eines pro Zeile (z. B. "
+"<0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (optionale Beschriftung)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Ziel"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Gesetzte Ziele"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Gruppe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Offene Threads gruppieren"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Schriftgröße des GUI-Chats"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "handle"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Handle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Hart neu laden"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Versteckte fortsetzbare Threads werden alle 5 Minuten durchsucht und "
+"nach diesem Leerlaufalter entladen."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Verstecken"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Alles ausblenden"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Browser ausblenden"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Den kanonischen Laufzeit-Elementinspektor ausblenden"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Details zur Kontextverwendung ausblenden"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Blenden Sie Modelle, die Sie nicht verwenden, bei allen Anbietern in "
+"der Modellauswahl aus."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Panel ausblenden"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Laufzeit-Debug-Panel ausblenden"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Seitenleiste ausblenden"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Terminal ausblenden"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Start"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Home-Bereich"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Leerlauf"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Bild"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Bildvorschau"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Inaktiv"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "geerbt"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Übernahme der globalen Einstellung (derzeit {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Repository initialisieren"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Eingangspegel"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Überprüfen Sie kanonische Laufzeitelemente"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "installieren"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Installieren"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Installieren Sie {0} für {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Installieren Sie {0}, um einen Thread zu erstellen."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Installieren Sie {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Installieren Sie {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Installieren Sie CLI-Hooks"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "In WSL installieren: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Installieren Sie zuerst native Anbieter; Verwenden Sie ACP für "
+"zusätzliche Protokollagenten."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Unter Windows installieren"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Pakete installieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Update installieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "v{updateVersion} installieren"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "v{version} installieren"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Installiert"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Installieren"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Installation in diesem Terminal. Wird nach Abschluss geschlossen."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Unterbrochen: Agentensitzung wurde vorzeitig beendet."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Kursiv"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "gerade eben"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Zweig behalten"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Halten Sie das System wach, während ein Thread aktiv arbeitet."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Bash beenden"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Sprache"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Sprache für KI-generierte Commit-Nachrichten und PR-Zusammenfassungen. "
+"Thread-Titel folgen immer der App-Sprache."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Sprache, die das Sprachmodell beim Transkribieren des Diktats im "
+"Eingabefeld erwarten sollte."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Letztes Werkzeug: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Thread starten"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Starten…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Kommentar hinterlassen"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Weniger"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Ermöglicht Agenten den Aufruf von <0>eval0>, um beliebiges JavaScript "
+"innerhalb der eingebetteten Seite auszuführen. Standardmäßig "
+"deaktiviert – nur aktivieren, wenn Sie den geladenen Websites und dem "
+"Agenten vertrauen."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Lizenz"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "Tokens insgesamt"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Tokens insgesamt"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Hell"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Liste"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Pakete auflisten"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Aufgaben auflisten"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Laden"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Konten werden geladen…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Unterschiede werden geladen..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Editor wird geladen…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Datei wird geladen…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Notizen werden geladen…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "PR wird geladen…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Registry wird geladen..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Laden…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "lokal"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Lokal"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Lokale Änderungen müssen vor dem Pull von {branch} gestasht werden"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Standort"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Anmelden"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Abmelden"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "Login"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Login"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Anmelden {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Anmeldung erforderlich"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Abmelden"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Abmelden {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "längste Serie"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Längste Serie"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Längste Aufgabe"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Die Seitenleiste durchscheinend machen — das Unschärfe-Material des "
+"Systems unter Windows 11, sonst eine durchscheinende Tönung."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Manuelle Reihenfolge"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Alle als erledigt markieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Als erledigt markieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Als nicht erledigt markieren"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Als erledigt markieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Als erledigt markieren"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "An App-Sprache anpassen"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Passen Sie es an Ihr System an oder erzwingen Sie hell oder dunkel."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Maximieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Browser maximieren"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "MCP-Server"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Zusammenführen und entfernen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Zusammenführungskonflikte müssen gelöst werden."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Zusammenführung fehlgeschlagen"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "Beim Zusammenführen gibt es Konflikte"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "Beim Zusammenführen gibt es Konflikte:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Lokal zusammenführen und Arbeitsbaum entfernen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Merge-Methode"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Merge-Optionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "PR zusammenführen: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "PR zusammenführen: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "PR zusammenführen: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "In Quelle zusammenführen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Arbeitsbaum zusammenführen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Zusammengeführt"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Das Zusammenführen ist blockiert"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Gesendete Nachrichten"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Mikrofon"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Mikrofon {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Der Mikrofonzugriff ist deaktiviert."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Mikrofoneingangspegel"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Der Mikrofonzugriff wurde verweigert."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Mikrofontests sind in dieser Umgebung nicht verfügbar."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Browser auf rechtes Panel minimieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Auf Panel minimieren"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Modus"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "Modell-ID"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Modellbeschriftung"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Modellreihenfolge"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Modellnutzung"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Modelle"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Modi"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Mehr"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Weitere Genehmigungsmöglichkeiten"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Weitere Commit-Optionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Weitere PR-Aktionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Mehr PR-Optionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Weitere Pull-Request-Optionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Weitere Synchronisierungsoptionen"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Aktivste Stunde"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Meistgenutzte Plugins"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Meistgenutzter Anbieter"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Meistgenutzte Reasoning-Stufe"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Bewegen"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Änderungen in einen neuen Arbeitsbaum verschieben"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Verschieben Sie das ToDo-Dock in den rechten Bereich"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Ihre Änderungen wurden in einen neuen Arbeitsbaum unter „{newBranch}“ "
+"verschoben. „{currentBranch}“ ist jetzt sauber."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Änderungen werden verschoben…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Name"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Benennen Sie Ihr Projekt und wählen Sie aus, wo es erstellt werden "
+"soll."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Nativ"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Native Anbieter"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Native Unterstützung"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Braucht Genehmigung"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Braucht Aufmerksamkeit"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Benötigt Aufmerksamkeit · Genehmigung erforderlich"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Benötigt Aufmerksamkeit · Antwort erforderlich"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Benötigt eine Antwort"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Neuer Aktionsbefehl"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Neuer Aktionsname"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Neuer Branchname..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Neues Claude-Profilkonfigurationsverzeichnis"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Neuer Claude-Profilname"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Neue Datei"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Neuer Ordner"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Neues Projekt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Neuer Tab"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Neuer Thread"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Neuer Thread"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Neuer Thread — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Neuer Thread (Entwurf)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Neuer Thread von dieser Aufgabe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Neuer Thread im Arbeitsbaum"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Neuer Arbeitsbaum"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Nächstes Bild"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Kein aktiver Browser-Tab"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Keine aktive Sitzung"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Noch keine Aktivität."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Keine zusätzlichen Claude-Profile."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Kein Agent verfügbar, um eine PR-Zusammenfassung zu erstellen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "Keine Agenten in dieser Phase."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Es sind noch keine Agenten installiert"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Keine Agenten installiert."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Noch keine KI-Commits, PRs oder Konfliktlösungen erfasst."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Keine archivierten Threads."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Keine Branches gefunden"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Kein Browser-Tab geöffnet"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Keine Änderungen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Keine Änderungen anzuzeigen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Für diese PR wurden keine Checks gemeldet."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Keine Befehle gefunden"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Keine Commits gefunden."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Keine Content-Streams."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Noch keine Unterhaltung. Schreiben Sie den ersten Kommentar."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Noch keine Daten"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Noch keine Daten."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Keine Beschreibung"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Für {0} ist kein Unterschied verfügbar."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Kein Unterschied für {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Für diese Nachricht ist kein Dateiprüfpunkt hinterlegt."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Keine Dateien stimmen mit „{0}“ überein."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Keine GitHub-CLI-Konten gefunden. Melden Sie sich mit <0>gh auth "
+"login0> an oder <1>fügen Sie eine Klon-URL ein1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Keine Übereinstimmungen für „{query}“."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Keine Übereinstimmungen."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Keine passenden Agenten."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Keine passenden Threads"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Noch keine MCP-Tools verwendet."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Noch keine Nachrichten"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Kein Mikrofon gefunden."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Keine Modelle gefunden"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Keine anderen Agenten installiert"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Keine Muster."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Noch keine Phasen."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Keine Prompts"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Es werden keine Anbieter getrackt."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Noch kein Anbieter bereit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Kein Remote konfiguriert. Fügen Sie ein Remote hinzu, um Push und Pull "
+"zu ermöglichen."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Keine Repositorys gefunden."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Für diesen Thread gibt es noch keine Laufzeitelemente."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Noch keine Skills verwendet."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Keine Sprache erkannt."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Keine bereitgestellten Änderungen"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Noch keine Subagents verwendet."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Keine unterstützten Agenten erkannt"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Keine Threads"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Noch keine Threads."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Keine Fenster gemeldet"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Kein Arbeitsbaum"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Kein Umbruch"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Keine"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Kein Git-Repository"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Kein Git-Repository"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Nicht installiert"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Läuft nicht"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Nicht angemeldet"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Nicht unterstützt"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Notizen"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Noch nichts erfasst. Es erscheint hier, sobald Sie es nutzen."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Benachrichtigungen"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Bei L2-CLI-Threads benachrichtigen"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Benachrichtigen über"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "aus"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Älter"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "auf"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Nur wenn nicht fokussiert"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Offen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "{label} öffnen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Öffnen Sie ein Terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Öffnen Sie zunächst einen Thread, um ihn anzuhängen."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Alle öffnen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Alle in der Gruppe öffnen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Als Seite öffnen"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Als Panel öffnen"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Browser öffnen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Offene Prüfung"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Öffnen Sie die Befehlspalette"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Öffnen Sie das Commit auf GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Öffnen Sie den Konfliktlöser in"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Dialog öffnen"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Datei öffnen"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Dateien öffnen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Vollbild öffnen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Öffnen Sie das Git-Panel"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Öffnen Sie Git Review"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Öffnen Sie Git Review als rechten Bereich oder als ganze Seite."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Bildvorschau öffnen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Im Editor öffnen"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Links öffnen in"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Neuen Tab öffnen"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Öffnen Sie neue Threads als ganze Seite oder nebeneinander."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "PR #{0} öffnen"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Öffnen Sie PR auf GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Vorschau öffnen"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Öffnen Sie die Projekteinstellungen"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Offene Anfragen"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Öffnen Sie die erforderliche URL"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Einstellungen öffnen"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Öffnen Sie Einstellungen"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Subagent öffnen: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Aufwandsauswahl öffnen"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Modellauswahl öffnen"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "{0} geöffnet (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Optionale Status-Hooks. Installierte Hooks werden automatisch "
+"aktualisiert; fehlende Hooks werden nie automatisch installiert."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Optionen"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Oder schreiben Sie eine individuelle Antwort"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Ergebnis"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Zu schnelles Tempo – läuft früh aus"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Claude-Standardwerte überschreiben — z. B. ANTHROPIC_BASE_URL und "
+"ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Überschreiben der globalen Einstellung für dieses Projekt."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Paketkonfiguration"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Paketmanager"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Seite"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Panel"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Einfügen"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Fügen Sie hier <0>{0}0> ein. Zum Kopieren klicken."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "In Eingabefeld einfügen"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Angehalten"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "Spitzentag"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Spitzentag"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "ausstehend"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "noch ausstehende Überprüfung"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Ausstehende Lenkung"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "Berechtigung"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Element auswählen"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Symbol auswählen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Auswahl fehlgeschlagen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Die Auswahl hat keinen Anhang zurückgegeben"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Oben anheften"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Angepinnt"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Spielen Sie einen Ton ab, wenn eine Benachrichtigung angezeigt wird."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Benachrichtigungston abspielen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Dieses Profil auf einen Anbieter außerhalb von Anthropic (z.ai, …) "
+"ausrichten — mit eigenen Umgebungsvariablen, Modellnamen und "
+"Reasoning-Stufen."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Beliebte Editor-Themes, an Lightcode angepasst. Jedes folgt dem oben "
+"gewählten Hell- oder Dunkelmodus."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "PR-Aktionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "PR-Optionen"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "PR-Review"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "PR-Bereiche"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "PR-Titel (leer lassen, um automatisch zu generieren)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Pre-Commit-Hook ist fehlgeschlagen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Voreinstellungen"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Ruhezustand während der Arbeit verhindern"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Vorschau {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Vorheriges Bild"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Profil"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Profile"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Projekt"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Projektname"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Projektnotizen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Projekteinstellungen"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Projektspezifische Überschreibungen zusätzlich zu den globalen "
+"Sucheinstellungen."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompts"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Vorgeschlagener Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "Anbieter"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Anbieter"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Der Anbieter hat keine Token-Nutzung gemeldet."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Anbieter-Voreinstellungen"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "Anbieter"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Anbieter"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Pull ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Pull ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Der Pull-Vorgang wurde nicht abgeschlossen. Ihre lokalen Änderungen "
+"bleiben in einem Lightcode-Stash."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Pull fehlgeschlagen: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Von {0} pullen?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Von {sourceBranch} ({sourceAhead}) pullen"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Aus Quelle ziehen ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull Rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Pull-Request-Optionen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Push fehlgeschlagen: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Fragen"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Kontingent erreicht"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Aufgebraucht"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Aufgebraucht · wird in {resets} zurückgesetzt"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Ratenbegrenzt"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Rate-Limit erreicht. Versuchen Sie es in Kürze noch einmal."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "Das erneute Anwenden lokaler Änderungen führt zu Konflikten"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Erneut anmelden"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Bereit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Bereit zur Überprüfung"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Begründung"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Zuletzt"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Aktuelle Threads"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Rekonstruiert aus lokalen Protokollen zu öffentlichen API-Tarifen – es "
+"spiegelt nicht Ihre tatsächliche Rechnung für Abonnementpläne wider. "
+"Wird nur im Nutzungsbereich angezeigt."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Aktualisieren"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "{0}-Authentifizierung aktualisieren"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Erkannte Agenten aktualisieren"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Registry aktualisieren"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Aktualisieren Sie die Nutzung alle N Minuten im Hintergrund. Zum "
+"Ausschalten auf 0 stellen (nur manuell). Die 2-Minuten-Untergrenze "
+"respektiert die Tarifbeschränkungen der Anbieter."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Der {0}-Authentifizierungsstatus wird aktualisiert."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Der {env}-{0}-Authentifizierungsstatus wird aktualisiert."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Neu laden"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Remote"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Remote-Name"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "Remote-URL"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Entfernen"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "{0} entfernen"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "{0} aus dem Panel entfernen"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "{pattern} entfernen"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Aktion entfernen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Claude-Profil entfernen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Umgebungsvariable entfernen"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Aus Favoriten entfernen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Aus der Gruppe entfernen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Aus dem Panel entfernen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Modell entfernen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Projekt entfernen"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Worktree entfernen?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Gruppe umbenennen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Thread umbenennen"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Der Renderer ist abgestürzt"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Der Renderer ist beim Start fehlgeschlagen"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Beim Renderer ist ein React-Fehler aufgetreten"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Beim Renderer ist ein nicht erfasster Fehler aufgetreten"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Im Renderer trat eine unbehandelte Promise-Ablehnung auf"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "{0} neu anordnen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "{label} neu anordnen"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Melden Sie ein Problem"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "Repository"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Repository"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Der Pre-Receive-Hook des Repositorys blockiert die Zusammenführung."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "Repository-URL"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Fordern Sie Änderungen an"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Details anfordern"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "angeforderte Änderungen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Erforderliche Bewertungen, Gespräche oder Statusprüfungen wurden nicht "
+"erfüllt."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "zurückgesetzt"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Modellreihenfolge zurücksetzen"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Mattierung der Seitenleiste auf Standard zurücksetzen"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Auf Standard zurücksetzen"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Größe der Browser-Schublade ändern"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Größe der Spalte ändern"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Größe des Git-Panels ändern"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Ändern Sie die Größe von Notizen und Aufgaben"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Größe der Zeile ändern"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Größe der Seitenleiste ändern"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Größe der Teilung ändern"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Größe des Terminal-Panels ändern"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Löst Zusammenführungskonflikte während des Rebasierens oder "
+"Zusammenführens."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Wiederherstellen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Browser wiederherstellen"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Thread wiederherstellen"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Versuchen Sie es noch einmal mit dem Administrator"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Zurück zur App"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Im Datei-Explorer anzeigen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Im Dateibaum anzeigen"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Zurücksetzen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Alles zurücksetzen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Alle Änderungen rückgängig machen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Änderungen rückgängig machen"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Zum Kontrollpunkt zurückkehren?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Zu diesem Kontrollpunkt zurückkehren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Änderungen überprüfen"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Review-Kommentar"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Überprüfungsentscheidung"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Review auf Anfrage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "PR überprüfen"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "PR #{prNumber} für {0} überprüfen"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Rechts"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Rechtes Panel"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Ausführen"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "{0} ausführen"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Führen Sie {0} aus, bevor dieser Thread ausgeführt werden kann."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Führen Sie {loginCommand} aus, um sich anzumelden."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Befehl ausführen"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "In einem separaten Worktree ausführen"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Lokale Transkription auf der GPU ausführen, sofern verfügbar."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Terminalbefehl ausführen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "läuft"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Wird ausgeführt, bevor ein Arbeitsbaum entfernt wird (z. B. <0>rm -rf "
+"node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Wird in einem Terminal ausgeführt, nachdem ein neuer Arbeitsbaum "
+"erstellt wurde (z. B. <0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Läuft früh aus"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Läuft in {runOut} aus"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Laufzeit"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Laufzeit-Debug"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Laufzeitoptionen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Speichern"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "{0}-Anmeldeinformationen speichern."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Claude-Profil speichern"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Datei speichern"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Gespeicherte Anmeldeinformationen werden in allen Umgebungen gemeinsam "
+"genutzt."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Durchsuchen von {wslDistro} nach installierten CLIs. Dies dauert "
+"normalerweise ein paar Sekunden."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Durchsuchen von Windows und WSL nach installierten CLIs. Dies dauert "
+"normalerweise ein paar Sekunden."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "System wird nach installierten CLIs durchsucht. Dies dauert "
+"normalerweise ein paar Sekunden."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Skripte"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Scrollgeschwindigkeitsmultiplikator für den Terminal-Scrollback-Puffer."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Nach unten scrollen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Suchen"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Agenten suchen"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Agenten suchen..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Branches durchsuchen..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Dateien durchsuchen"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Modelle suchen"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Modelle suchen..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Adresse suchen oder eingeben"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Repositories durchsuchen"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Repositories durchsuchen…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Laufzeitelemente durchsuchen…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Threads durchsuchen"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Threads durchsuchen"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Suchen…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Suche..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Suche..."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Mehr anzeigen"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Auswählen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Datei aus der Baumstruktur auswählen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Wählen Sie eine Datei aus, um mit der Bearbeitung zu beginnen."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Wählen Sie ein Repository aus."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Konto auswählen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Wählen Sie einen Agenten aus, um dessen Eingabeaufforderung und "
+"Ergebnis anzuzeigen."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Zweig auswählen"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Gerät auswählen"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Modell auswählen"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Projekt auswählen"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Senden Sie eine Nachricht..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Nachricht senden"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Auswahl an Terminal gesendet."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Claude Code-Konten nach Konfigurationsverzeichnis trennen oder ein "
+"Profil auf einen externen Anbieter (z.ai, …) ausrichten. Öffnen Sie ein "
+"Profil, um dessen Umgebungsvariablen, Modelle und Reasoning-Stufe zu "
+"konfigurieren."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Legen Sie ein experimentelles Ziel fest oder zeigen Sie es an"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Setup-Skript"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Teilen"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Teilen Sie Ihre Aktivität"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Zeigen Sie in der Seitenleiste einen kompakten Nutzungsring pro "
+"Anbieter an."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Zeigen Sie einen projektlosen Home-Bereich für Agentensitzungen auf "
+"Betriebssystemebene an."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Alle anzeigen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Lesezeichenleiste anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Kreise in der Seitenleiste anzeigen"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Composer anzeigen"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Details zur Kontextverwendung anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Geschätzte Kosten anzeigen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Im Datei-Explorer anzeigen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Weniger anzeigen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Mehr anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Benachrichtigungen anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Benachrichtigungen anzeigen, wenn sich der Thread-Status ändert."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Geöffnete Links anzeigen in"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Vorschau anzeigen"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Laufzeit-Debug-Panel anzeigen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Seitenleiste anzeigen"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Quelle anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Zeigen Sie die Mikrofonschaltfläche im Composer an."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Schaltfläche zur Spracheingabe anzeigen"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Mattierung der Seitenleiste"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Anmelden"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Anmeldung erforderlich"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Anmeldung erforderlich"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Mit der Agent-CLI anmelden."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "{label} abmelden"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Angemeldet"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Anmelden"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Anmelden…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "{env} wird abgemeldet. Erkannte Agenten werden aktualisiert, wenn der "
+"Vorgang abgeschlossen ist."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Wird abgemeldet. Erkannte Agenten werden aktualisiert, wenn der Vorgang "
+"abgeschlossen ist."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Fähigkeit: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Skills"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Erkundete Skills"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Einige Prüfungen schlagen fehl oder stehen noch aus."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Nach Erstellungsdatum sortieren"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Nach letzter Aktualisierung sortieren"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Threads sortieren"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Geteiltes Terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Geteilte Ansicht"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Stagen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Alles stagen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "gestaged"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Gestaged"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Gestaged ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Starten"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "{appName} starten, um die Nutzung zu sehen"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Neuen Thread aus dem ausgewählten Text starten"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Starten Sie mit dieser Aufgabe einen neuen Thread"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Fangen Sie bei Null an"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Starten Sie den Composer zusammengeklappt in terminal-nativen Threads. "
+"Ein minimierter Composer leitet Browser-Elementauswahlen direkt an das "
+"Terminal weiter."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Spracheingabe starten"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Ohne Kontext starten"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Thread {targetLabel} gestartet"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Wird gestartet"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Spracheingabe wird gestartet"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "beginnend…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Stash & Pull"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Der Status wird aus der Terminalausgabe (L2) abgeleitet. Installieren "
+"Sie das Hook-Plugin in den Einstellungen, um strukturierte Updates zu "
+"erhalten."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Der Status wird durch das Agent Control Protocol (ACP) bereitgestellt."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Statusaktualisierungen erfolgen über das CLI-Hook-Plugin."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Status:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Stopp"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Antwort stoppen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Aufgabe stoppen"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Spracheingabe stoppen"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Als Klartext speichern"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Als Geheimnis speichern (verschlüsselt gespeichert)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Subagent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Subagent nicht gefunden."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Subagent-Ergebnis"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Subagenten"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Senden"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Geben Sie Feedback ab und genehmigen Sie die Zusammenführung dieser "
+"Änderungen."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Geben Sie Feedback ab, das vor der Zusammenführung berücksichtigt "
+"werden muss."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Geben Sie Feedback ohne ausdrückliche Genehmigung ab."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Bewertung abgeben"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Beaufsichtigt"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Der Support-Modus wird angezeigt, sobald die Sitzung verbunden ist."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Unterstützung:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Notizen und Aufgaben tauschen"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Zweig wechseln"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Modus wechseln"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Modus wechseln: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Projekt wechseln"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Diesen Chat in den Agentenmodus schalten"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Diesen Chat in den Planmodus schalten"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Synchronisieren"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Synchronisieren (Rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Synchronisieren ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Synchronisierung fehlgeschlagen: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Synchronisierungsoptionen"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Synchronisiert mit Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "System"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Systembrowser"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Systemstandard"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Screenshot aufnehmen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Zielzweig"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Zielanbieter"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Aufgabenausgabe"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Sagen Sie {0}, was als nächstes zu tun ist ..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Sagen Sie dem Zielanbieter, was als nächstes zu tun ist ..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Terminal für {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Terminaleingabe"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Terminal nicht bereit – Auswahl zum Composer hinzugefügt."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Schriftgröße des Terminalpanels"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Terminalposition"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Scrollgeschwindigkeit des Terminals"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Terminal-Registerkarten"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Mikrofon testen"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "der Agent"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "die App"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "den gewählten Ordner"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Die normale App-Shell konnte nicht gerendert werden. Die folgenden "
+"Diagnosen werden vor dem Neuladen angezeigt, damit der Fehler "
+"untersucht werden kann."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "der Zielanbieter"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Theme"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Denkt …"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Dieser Agent ist nicht installiert."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "dieser Umgebung"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Diese Datei ist zu groß für den integrierten Editor."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Diese Datei verwendet eine nicht unterstützte Kodierung."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Dadurch wird der Branch „{0}“ dauerhaft von seinem Remote gelöscht."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Dadurch wird der Branch „{0}“ dauerhaft gelöscht."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Dadurch werden spätere Nachrichten entfernt und Dateien "
+"wiederhergestellt, wenn ein Prüfpunkt-Snapshot verfügbar ist."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Dadurch wird der Worktree auf „{0}“ entfernt und {1, plural, one {# "
+"verknüpfter Thread} other {# verknüpfte Threads}} geschlossen, dann "
+"wird der Branch gelöscht."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Dadurch wird der Worktree auf „{0}“ entfernt und anschließend der "
+"Branch gelöscht."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Dieser Thread verwendet den Worktree <0>{0}0>. Auch das "
+"Worktree-Verzeichnis entfernen?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "Dieser Worktree weist lokale Änderungen auf. Lightcode kann sie "
+"vorübergehend stashen, von {0} pullen und Ihre Änderungen dann erneut "
+"anwenden."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Gedanke"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Thread"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Thread + Worktree"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Verwendung des Thread-Kontexts"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Thread-Dock"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Der Thread konnte nicht gestartet werden."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Der Thread ist beendet oder wartet auf Ihre Eingabe."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Thread-Zieldock"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Thread ist bereits entladen."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Thread-Modus"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Nur Thread"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Sortierreihenfolge der Threads"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Thread-Aufgaben-Dock"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Threads"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Als erledigt markierte Threads, die so viele Tage lang nicht bearbeitet "
+"wurden, werden beim Start der App automatisch archiviert. Zum "
+"Deaktivieren auf 0 setzen."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Titelgenerierung"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Aufgaben"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Schnellmodus umschalten"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Schalten Sie Modelle aus, um sie aus der Auswahl auszublenden."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Terminal umschalten"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokens"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokens von {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Werkzeugsuche"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Prompts insgesamt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Verwendete Skills insgesamt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Threads insgesamt"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Verfolgen Sie die Nutzung von {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Verfolgen Sie die Nutzung pro Anbieter (Sitzung, wöchentlich, "
+"monatlich). Die Zeitfenster werden von jedem Anbieter gemeldet; die "
+"geschätzten Kosten werden aus lokalen Protokollen rekonstruiert."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Verfolgung aus"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Stimme wird transkribiert"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Durchscheinende Seitenleiste"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Schalten Sie die Nachverfolgung pro Anbieter ein oder aus. Deaktivierte "
+"Anbieter werden von der automatischen Aktualisierung übersprungen."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Geben Sie einen Befehl ein"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "{0} konnte nicht authentifiziert werden."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Das WSL-Worktree-Verzeichnis „{path}“ kann nicht erstellt werden."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "{0}-Hooks können nicht installiert werden."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "{0} konnte nicht installiert werden."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Abmelden von {0} nicht möglich."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "{0}-Login kann nicht geöffnet werden."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Datei kann nicht geöffnet werden"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Der Status „{0}“ konnte nicht aktualisiert werden."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "{0} konnte nicht aktualisiert werden."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Claude-Profile können nicht aktualisiert werden."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "{0}-Anmeldeinformationen können nicht entfernt werden."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Worktree konnte nicht entfernt werden."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Das Home-Verzeichnis für die WSL-Distribution „{distro}“ kann nicht "
+"aufgelöst werden."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "{0}-Anmeldeinformationen können nicht gespeichert werden."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Claude-Profil {displayLabel} konnte nicht gespeichert werden."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "{label} kann nicht gestartet werden."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "{0} ({envName}) kann nicht aktualisiert werden: {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "{0} ({envName}) kann nicht aktualisiert werden."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "{0}-Hooks können nicht aktualisiert werden."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "{0} kann nicht aktualisiert werden: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "{0} kann nicht aktualisiert werden: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "{0} kann nicht aktualisiert werden."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Gruppierung aller aufheben"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Einheitliche Ansicht"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Deinstallieren"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Unbekanntes Projekt"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Unbegrenzt"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Inaktive Threads entladen nach"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Inaktive Threads entladen nach (Minuten)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Thread entladen"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Markierung „Fertig“ aufheben"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Markierung „Fertig“ aufheben"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Ohne Phase:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Lösen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Aus Staging entfernen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Alles aus dem Staging entfernen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "nicht bereitgestellt"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Nicht unterstützt"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Aktualisieren"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Aktualisieren Sie {0} auf {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Update verfügbar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Branch aktualisieren"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Update-Fehler: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Update-Methode"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Aufgabe aktualisieren"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Update auf {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Update auf {updateLabel} für {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Update auf {updateLabel} für {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Update auf v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Update auf v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Update mit Merge-Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Update mit Rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "{0} aktualisiert"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Wird aktualisiert …"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "{0} wird aktualisiert"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Aktualisieren von {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Nutzung"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Verwendung nicht unterstützt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Nutzungseinstellungen"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Verwendung unbekannt"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Verwenden Sie einen vorhandenen Ordner"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Konfiguration verwenden"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Erkannte Sitzung verwenden?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Ignore-Dateien verwenden"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Sitzung verwenden"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Verwenden Sie dieses Konto zur Nutzungsverfolgung oder ändern Sie die "
+"Benutzer im Browser, bevor Sie fortfahren."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Nutzen Sie die WebGPU-Beschleunigung"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Verbraucht"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Die integrierte Claude-Modellliste wird verwendet."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} verfügbar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "Wert"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Version"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "über {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Ansicht"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Sichtbare {0}-Modelle"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Sichtbare Modelle"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Eine Spracheingabe ist in dieser Umgebung nicht verfügbar."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Spracheingabesprache"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Spracheingabemodell"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Warten Sie, bis der Thread gestartet ist."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Warten auf {authEnv}-{authMethodName}-Authentifizierung. Erkannte "
+"Agenten werden aktualisiert, wenn der Vorgang abgeschlossen ist."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Warten auf {authMethodName}-Authentifizierung. Erkannte Agenten werden "
+"aktualisiert, wenn der Vorgang abgeschlossen ist."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Warten auf {env}-{methodName}-Authentifizierung. Erkannte Agenten "
+"werden aktualisiert, wenn der Vorgang abgeschlossen ist."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Warten auf {methodName}-Authentifizierung. Erkannte Agenten werden "
+"aktualisiert, wenn der Vorgang abgeschlossen ist."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "Warten darauf, dass der Agent stoppt"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Warten, bis der Workflow Agenten erzeugt …"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Aufwachen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Aufwachen in {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Aufwachen in {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Aufwachen: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Shell-Umgebung wird aufgewärmt …"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Aufwärmen von Shell-Umgebungen..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Aufwärmen der WSL-Shell-Umgebung…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Websuche"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Website"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Was die Schaltfläche „PR erstellen“ standardmäßig bewirkt: Öffnen Sie "
+"ein Dialogfeld, um zuerst den Titel und die Beschreibung zu bearbeiten, "
+"oder generieren Sie sie automatisch und erstellen Sie die PR mit einem "
+"Klick. Sie können dies auch über das Menü der Schaltfläche ändern."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Wenn diese Option aktiviert ist, berücksichtigt die Suche "
+"<0>.gitignore0>-Einträge."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Wenn Links in einem Lightcode-Browser-Tab geöffnet werden, wählen Sie "
+"aus, wo der Browser angezeigt wird."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Wenn diese Option deaktiviert ist, werden Benachrichtigungen von "
+"Terminal-Threads unterdrückt, deren Status vom OSC-Fallback stammt "
+"(kein CLI-Hook-Plugin)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Wann In-App-Toasts für sichtbare Threads angezeigt werden sollen."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Wenn Sie das Fenster schließen, läuft Lightcode weiterhin in der "
+"Taskleiste. Deaktivieren Sie das Beenden beim Schließen."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Wohin eine Browser-Element-Auswahl in terminal-nativen Threads geht. "
+"Ein ausgeblendeter Composer leitet immer an das Terminal weiter."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Wo möchten Sie beginnen?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Wo das Terminal-Panel erscheint."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Wird in {0} ausgeführt:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows wird noch nicht unterstützt. Installieren Sie innerhalb der WSL "
+"oder unter macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Arbeit"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Im aktuellen Checkout arbeiten"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Gearbeitet für {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Workflow"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Workflow beendet. Untergeordnete Agenten wurden in einem separaten "
+"Prozess ausgeführt und werden hier noch nicht gestreamt."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Der Workflow läuft im Hintergrund. Untergeordnete Agenten werden in "
+"einem separaten Prozess ausgeführt und hier noch nicht gestreamt."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Workflow-Phasen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Workflow-Ergebnisse"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Workflow: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Workflows"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Arbeiten"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Arbeitet seit {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Arbeitsverzeichnis sauber"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Arbeiten…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Worktree"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Worktree + Änderungen"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Worktree-Modus"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Worktree: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Worktrees"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Zeilen umbrechen"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Schreiben Sie einen Kommentar"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Schreiben Sie einen Kommentar …"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Schreiben Sie Notizen für dieses Projekt ..."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Ihr Name"
diff --git a/src/renderer/locales/en/messages.po b/src/renderer/locales/en/messages.po
new file mode 100644
index 00000000..2077d3ad
--- /dev/null
+++ b/src/renderer/locales/en/messages.po
@@ -0,0 +1,6034 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-15 03:02-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: en\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Draft)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(no message)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# file} other {# files}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# provider ready} other {# providers ready}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {target} other {targets}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Composer"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) is already up to date."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) updated to v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) updated."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} authenticated."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "{0} credentials removed."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0} credentials saved."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} devices"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{0} hooks installed for {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0} hooks installed."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{0} hooks removed for {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} install targets"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} is already up to date."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0} limit"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} logged out."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} needs authentication."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} prompt - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} prompts - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} run"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} runs"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} tokens"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} tokens - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} updated to v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} updated to v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} updated to v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} updated to v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} updated."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} used"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% Full"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0}mo ago"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Hover for status details."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} day"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} days"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days}d ago"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} needs authentication."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} matches"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head}, or {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "{heading} mode"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "{hook} hook failed"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours}h ago"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label} usage — open usage panel"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel} context"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes}m ago"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} needs authentication."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% full"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (disabled)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "{projectName} Settings"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# open} other {# open}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# result} other {# results}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds}s ago"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} tokens"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} tokens"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} tokens"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} tokens"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} of {totalCount} visible"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. All rights reserved."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> of {0} checks passed"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · est."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% by reset"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "a supported coding agent"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Abort Merge"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "About"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Accept Both Changes"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Accept Current Change"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Accept Incoming Change"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Account"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Account options"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Accounts"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "ACP Agents"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Action command"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Action for the quick-remove button on sidebar threads."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Action name"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Actions"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Active"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Activity"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Activity insights"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Activity metric"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Add"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Add a project before installing an agent."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Add a project before signing in."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Add a project to start"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Add a to-do…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Add action"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Add attachment or capability"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Add Claude profile"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Add credentials before this thread can run."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Add model"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Add pattern"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Add profile"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Add project"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Add Project"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Add project options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Add Remote"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Add to composer"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Add to favorites"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Agent ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Agent chat (ACP / markdown). Command rows use this size minus 1 px; "
+"tool and plan lines minus 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Agent encountered an error."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Agent is active and ready"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Agent is currently disabled"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Agent not found"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Agent Registry"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Agent terminal font size"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Agent update available"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Agent: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Agent: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Agents"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Agents · General"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "AI git actions"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "All accounts"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "All devices"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "All efforts"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "All files"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Allow"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Allow agents to read/write cookies and storage"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Allow eval"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Always"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Always excluded"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "App Browser"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Appearance"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Appearance mode"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Apply provider preset"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Approval or reply required from you."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Approve"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "approved"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Approved"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Archive"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Archive {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Archive All"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Archive Thread"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Archived Threads"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Ask {0} anything about this workspace"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Ask each time"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Ask Question"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Attach"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Attach files"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Attach to thread"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Attach todo dock to composer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Attached browser selection."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Audio"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Authentication"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Authentication required"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Auto"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Auto Approve"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Auto-archive done threads after"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Auto-archive done threads after (days)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Auto-generate"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Auto-refresh (minutes)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Auto-refresh interval in minutes, 0 to turn off"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Auto-review"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Auto-show terminal panel"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "available"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Available ACP Agents"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Avatar color"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Avatar color {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Back"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Background process exited unexpectedly"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Background process is not running"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Background process restarted"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Background tasks"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Base branch is ahead — branch must be updated first."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Bash output"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Basic (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Better (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Better status updates while agents run."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Binary"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Binary file — preview unavailable."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Binary file or no diff available"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Binary files can't be edited here."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "blocked:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Bold"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Bottom"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "Branch <0>{0}0> has unmerged changes:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Branch not fully merged"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Branch protection rules blocked this merge."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Branches"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Browse for parent folder"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Browse your GitHub repositories or paste a clone URL."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Browser"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Browser MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Browser MCP enabled for OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Browser MCP enabled for this thread"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Browser menu"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Browser pick target (CLI threads)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Browser pick target for CLI threads"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Budget limit reached"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Building diff…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "by <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "by prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "by tokens"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Bypass branch protection rules"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Bypass branch protection rules (admin merge)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Cancel"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Cancel new Claude profile"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Cancel pending steer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Cancel picker"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "cancelled"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Cannot create a default worktree path without a branch name"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Cannot switch branches — commit or stash your changes first"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Change User"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Changelog"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Changes"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Changes ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Changes in PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Changes requested"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Channel"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Chat"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Chat Commands"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Check"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Check for updates"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Check the live input level from the selected device."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Checking…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Checks"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Choose a folder…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Choose how to sign in for {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Choose how to sign in."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Choose the display language for Lightcode's interface."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Choose thread to attach to"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Choose whether links from Lightcode and browser popups stay in "
+"Lightcode or open externally."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Claude {0} profile saved."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Claude {displayName} profile added."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Claude profile config directory"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Claude profile name"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Claude profile removed."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Cleanup script"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Clear Browsing History"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Clear Cache"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Clear Cookies"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Clear search"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "CLI hooks"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Clone"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Clone a repository"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "Clone URL"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Cloning {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Cloning…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Close"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Close {purposeNoun} terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Close browser"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Close editor"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Close Editor Tab"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Close goal"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Close group"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Close pane"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Close Pane"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Close plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Close PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Close preview"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Close search"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Close Split"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Close subagent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Close subagents"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Close subagents panel"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Close tab"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Close to tray"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Close usage details"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Closed"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Code copied. "
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Collapse"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Collapse {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Collapse all"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Collapse All"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Collapse all folders"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Collapse composer"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Collapse error"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Collapse terminal composer"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Collapse todo dock"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Command"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Command (e.g., npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Commands"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Comment"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Comment posted"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "commented"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Commit & Create PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Commit & PR language"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Commit & Push"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Commit failed: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Commit message"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Commit message (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Commit Message Generation"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Commit options"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commits"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Compacting context"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Complete"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Complete {0} sign-in before this thread can run."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Complete {0} sign-in for {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Complete {0} sign-in or save {1} credentials."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Complete {0} sign-in."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Complete the prompts in this terminal. Closes when finished."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "completed"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Config directory"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Conflict Resolver"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Conflicts"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Console"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Context"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Context compacted"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Context compacted from {before} tokens"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Context compacted: {before} → {after} tokens"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Context extraction ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Context manually compacted from {before} tokens"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Context manually compacted: {before} → {after} tokens"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Context transferred to {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Context usage"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Continue"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Continue in another provider"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Continue in..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Conversation"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Copied"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Copied to clipboard"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Copy"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Copy {0} device code {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Copy Current URL"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Copy details"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Copy diagnostics"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Copy failed"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Copy ignored files"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Copy image"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Copy message"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Copy Path"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Copy Relative Path"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Copy uncommitted changes here (keeps them on this branch)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Could not abort the merge: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Could not complete the merge"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Could not extract context."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Could not generate commit message: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Could not read file."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Couldn't clone the repository."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Couldn't create the project."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Couldn't list repositories."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Couldn't load your profile stats."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Create Draft PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Create file"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Create new branch"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Create new branch..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Create PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Create PR (Auto)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Create PR action"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Create PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Create project"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Create Pull Request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Create task"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Create:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Credentials are configured."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Credits"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "current streak"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Current streak"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Custom"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Custom commands available from the project context menu (right-click)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Dark"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Decline"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Default"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Default Create PR action"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Default new thread"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Default permissions"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Default thread removal"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Delete"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Delete {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Delete branch?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Delete file"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Delete permanently"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Delete thread"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Delete Thread"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Delete thread?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Delete to-do"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Delete Worktree"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Delete worktree {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Delete:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Deleting"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Deny"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Deny and tell the agent what to do differently…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Description"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Description (optional)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Detected <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Detected <0>(local)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Detected <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Detecting agents…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Dev"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Device used by the composer voice input button."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Disable"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Disable {tierLabel} effort"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Disable Browser MCP"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Disable CLI hook plugin (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Disable Project"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Disabled"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Discard unsaved changes in {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Discard unsaved editor changes?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Discovering coding agents…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Dismiss"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Dismiss error"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "dismissed review"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Display name in the sidebar."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Docs"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Don't ask again"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Don't show hook install proposal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "done"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Done"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Done · Waiting for your input"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Download image"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Downloading into “{0}”. This can take a moment for large repositories."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Downloading voice model {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Downloading voice model..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Downloading{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Downloading{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Draft"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Drag to reorder how providers appear in the model picker."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Drag to reorder; double-click to edit"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Drop here to attach"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "e.g. Work"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Edit"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Edit file"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Edit profile"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Edit:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Editor"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "Editor LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Editor tabs"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Effort and context"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Effort levels"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Enable"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Enable {tierLabel} effort"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Enable microphone access in your system settings, then try again."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Enable notifications"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Enable Project"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Enable providers in settings"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Enabled"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Enhanced (Hooks)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Enter a repository URL."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Enter plan mode"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Environment"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Environment variable name"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Environment variable value"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Environment variables"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "error"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Error"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Error · Agent encountered an error"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Exclude patterns"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Exit plan mode"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Exited with code {0}. Close to retry."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Expand"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Expand {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Expand all"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Expand error"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Expand todo dock"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "External"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "External provider"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Extra High"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Extracting context from {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "failed"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Failed to close pull request: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Failed to create pull request: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Failed to load profile stats."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Failed to merge pull request: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Fast"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Fast mode"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Fastest (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "Fastest uses Whisper tiny; Better uses Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Favorites"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Fetch"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "File"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "File changes will appear here."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "File is too large to preview."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "File no longer exists on disk."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "File uses an unsupported encoding."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Files"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Files for {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Files matching these globs are hidden from the @file mention search."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Finish your review"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Finished"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Finished · Waiting for your input"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "First-class Grok Build CLI integration using Lightcode's native "
+"runtime."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "First-class OpenCode integration using Lightcode's native SDK runtime."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Fix in Agent"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Folder name"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Force Delete"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Force delete? Unmerged changes will be lost."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Format files"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Forward"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Found a signed-in {0} session."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Full access"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Fullscreen overlay"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "General"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Generate commit message"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Generate PR summary"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Generate with AI"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Generated image"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Generates commit messages from staged changes."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Generates short titles for new threads."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Get task"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} failed: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Git Review"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Git review mode"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Git status for {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Git status for {0}: not a Git repository"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "GitHub Repository"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (optional label)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Goal"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Goals set"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Group"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Group open threads"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "GUI chat font size"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "handle"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Handle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Hard Reload"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Hide"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Hide all"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Hide browser"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Hide canonical runtime item inspector"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Hide context usage details"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Hide models you don't use from the model picker across every provider."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Hide panel"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Hide runtime debug panel"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Hide sidebar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Hide terminal"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Home"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Home scope"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Idle"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Image"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Image preview"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Inactive"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "inherited"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Inheriting the global setting (currently {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Initialize Repository"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Input level"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Inspect canonical runtime items"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "install"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Install"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Install {0} for {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Install {0} to create a thread."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Install {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Install {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Install CLI hooks"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Install in WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Install native providers first; use ACP for additional protocol agents."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Install on Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Install packages"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Install update"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Install v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Install v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Installed"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Installing"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Installing in this terminal. Closes when finished."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Interrupted: agent session ended before completion."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Italic"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "just now"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Keep Branch"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Keep the system awake while any thread is actively working."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Kill bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Language"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Language the speech model should expect when transcribing composer "
+"dictation."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Last tool: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Launch thread"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Launching…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Leave a comment"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Less"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "License"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "lifetime tokens"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Lifetime tokens"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Light"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "List"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "List packages"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "List tasks"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Loading"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Loading accounts…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Loading diff..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Loading editor…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Loading file…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Loading notes…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Loading PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Loading registry..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Loading…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "local"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Local"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Local changes need to be stashed before pulling from {branch}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Location"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Logging in"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Logging out"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "login"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Login"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Login {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Login required"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Logout"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Logout {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "longest streak"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Longest streak"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Longest task"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Make the sidebar translucent — the system blur material on Windows 11, "
+"a translucent tint elsewhere."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Manual order"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Mark All Done"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Mark as done"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Mark as not done"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Mark done"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Mark Done"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Match app language"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Match your system, or force light or dark."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Maximize"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Maximize browser"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "MCP servers"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Merge & Remove"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Merge conflicts must be resolved."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Merge failed"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "Merge has conflicts"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "Merge has conflicts:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Merge Locally & Remove Worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Merge method"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Merge options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Merge PR: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Merge PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Merge PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Merge to Source"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Merge Worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Merged"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Merging is blocked"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Messages sent"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Microphone"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Microphone {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Microphone access is off."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Microphone input level"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Microphone permission was denied."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Microphone testing is not available in this environment."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Minimize browser to right panel"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Minimize to panel"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Mode"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "Model id"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Model label"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Model order"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Model usage"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Models"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Modes"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "More"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "More approval options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "More commit options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "More PR actions"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "More PR options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "More pull request options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "More sync options"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Most active hour"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Most used plugins"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Most used provider"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Most used reasoning"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Move"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Move changes to a new worktree"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Move todo dock to right panel"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Moving changes…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Name"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Name your project and choose where to create it."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Native"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Native Providers"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Native support"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Needs approval"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Needs Attention"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Needs Attention · Approval required"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Needs Attention · Reply required"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Needs reply"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "New action command"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "New action name"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "New branch name..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "New Claude profile config directory"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "New Claude profile name"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "New File"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "New Folder"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "New project"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "New tab"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "New thread"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "New Thread"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "New thread — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "New thread (draft)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "New thread from this to-do"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "New Thread in Worktree"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "New worktree"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Next image"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "No active browser tab"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "No active session"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "No activity yet."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "No additional Claude profiles."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "No agent available to generate PR summary"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "No agents in this phase."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "No agents installed yet"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "No agents installed."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "No AI commits, PRs, or conflict resolutions tracked yet."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "No archived threads."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "No branches found"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "No browser tab open"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "No changes"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "No changes to display"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "No checks reported for this PR."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "No commands found"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "No commits found."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "No content streams."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "No conversation yet. Be the first to comment."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "No data yet"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "No data yet."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "No description"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "No diff available for {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "No diff for {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "No file checkpoint is stored for this message."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "No files match \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "No matches for “{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "No matches."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "No matching agents."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "No matching threads"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "No MCP tools used yet."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "No messages yet"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "No microphone found."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "No models found"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "No other agents installed"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "No patterns."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "No phases yet."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "No prompts"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "No providers are being tracked."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "No providers ready yet"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "No remote configured. Add a remote to enable push and pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "No repositories found."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "No runtime items yet for this thread."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "No skills used yet."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "No speech detected."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "No staged changes"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "No subagents used yet."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "No supported agents detected"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "No threads"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "No threads yet."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "No windows reported"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "No worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "No wrap"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "None"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Not a git repository"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Not a Git repository"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Not found"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Not installed"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Not running"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Not signed in"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Not supported"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Notes"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Nothing tracked yet. It'll appear here as you use it."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Notifications"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Notify for L2 CLI threads"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Notify me about"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "off"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Older"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "on"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Only when unfocused"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Open"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Open {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Open a terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Open a thread first to attach to it."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Open All"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Open all in group"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Open as page"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Open as Panel"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Open browser"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Open check"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Open Command Palette"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Open commit on GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Open conflict resolver in"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Open dialog"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Open File"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Open Files"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Open fullscreen"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Open Git panel"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Open Git Review"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Open git review as a right-side panel or a full page."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Open image preview"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Open in editor"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Open links in"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Open new tab"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Open new threads as a full page or a side-by-side panel."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Open PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Open PR on GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Open preview"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Open Project Settings"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Open requests"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Open required URL"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Open settings"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Open Settings"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Open subagent: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Open the effort picker"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Open the model picker"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Opened {0} (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Options"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Or write a custom answer"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Outcome"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Over pace — runs out early"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Overriding the global setting for this project."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Package config"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Package manager"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Page"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Panel"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Paste"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Paste <0>{0}0> here. Click to copy."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Paste in input"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Paused"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "peak day"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Peak day"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "pending"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "pending review"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Pending steer"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "permission"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Pick element"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Pick icon"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Picker failed"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Picker returned no attachment"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Pin to top"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Pinned"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Play a sound when a notification is shown."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Play notification sound"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Point this profile at a non-Anthropic provider (z.ai, …) with custom "
+"env vars, model names, and effort levels."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "PR actions"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "PR options"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "PR Review"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "PR sections"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "PR title (leave empty to auto-generate)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Pre-commit hook failed"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Presets"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Prevent sleep while working"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Preview {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Previous image"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Profile"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Profiles"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Project"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Project name"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Project notes"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Project Settings"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Project-specific overrides on top of the global search settings."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompts"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Proposed plan"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "provider"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Provider"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Provider has not reported token usage."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Provider presets"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "providers"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Providers"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Pull ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Pull ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Pull did not complete. Your local changes remain in a Lightcode stash."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Pull failed: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Pull from {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Pull from {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Pull from Source ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull Rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Pull request options"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Push failed: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Questions"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Quota reached"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Ran out"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Ran out · resets in {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Rate limited"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Rate limited. Try again shortly."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "Re-applying local changes has conflicts"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Re-login"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Ready"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Ready for Review"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Reasoning"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Recent"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Recent threads"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Refresh"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Refresh {0} authentication"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Refresh detected agents"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Refresh registry"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Refreshing {0} authentication status."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Refreshing {env} {0} authentication status."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Reload"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Remote"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Remote name"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "Remote URL"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Remove"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Remove {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Remove {0} from panel"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Remove {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Remove action"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Remove Claude profile"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Remove environment variable"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Remove from favorites"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Remove from group"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Remove from panel"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Remove model"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Remove Project"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Remove worktree?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Rename"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Rename Group"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Rename thread"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Renderer crashed"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Renderer failed during startup"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Renderer hit a React error"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Renderer hit an uncaught error"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Renderer hit an unhandled promise rejection"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Reorder {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Reorder {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Report an Issue"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "repository"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Repository"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Repository pre-receive hook is blocking the merge."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "Repository URL"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Request changes"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Request details"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "requested changes"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Required reviews, conversations, or status checks not met."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "reset"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Reset model order"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Reset sidebar frosting to default"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Reset to default"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Resize browser drawer"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Resize column"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Resize git panel"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Resize notes and to-dos"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Resize row"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Resize sidebar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Resize split"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Resize terminal panel"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Resolves merge conflicts during rebase or merge."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Restore"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Restore browser"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Restore thread"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Retry with admin"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Return to app"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Reveal in File Explorer"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Reveal in file tree"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Revert"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Revert all"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Revert all changes"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Revert changes"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Revert to checkpoint?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Revert to this checkpoint"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Review Changes"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Review comment"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Review decision"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Review on request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Review PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Review PR #{prNumber} for {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Right"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Right panel"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Run"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Run {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Run {0} before this thread can run."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Run {loginCommand} to sign in."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Run command"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Run in a separate worktree"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Run local transcription on the GPU when available."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Run Terminal Command"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "running"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Runs out early"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Runs out in {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Runtime"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Runtime debug"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Runtime options"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Save"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Save {0} credentials."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Save Claude profile"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Save File"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Saved credentials are shared across all environments."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Scanning Windows and WSL for installed CLIs. This usually takes a "
+"couple of seconds."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Scripts"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Scroll speed multiplier for the terminal scrollback buffer."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Scroll to bottom"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Search"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Search agents"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Search agents..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Search branches..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Search files"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Search models"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Search models..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Search or enter address"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Search repositories"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Search repositories…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Search runtime items…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Search threads"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Search Threads"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Search…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Searching..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Searching…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "See more"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Select"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Select a file from the tree"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Select a file to start editing."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Select a repository."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Select account"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Select an agent to see its prompt and outcome."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Select branch"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Select device"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Select model"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Select project"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Send a message..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Send message"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Sent selection to terminal."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Separate Claude Code accounts by config directory, or point a profile "
+"at an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Set or view an experimental goal"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Settings"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Setup script"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Share"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Share your activity"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Show a compact per-provider usage ring in the sidebar."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Show a projectless Home scope for OS-level agent sessions."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Show all"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Show Bookmark Bar"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Show circles in sidebar"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Show composer"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Show context usage details"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Show estimated cost"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Show in file explorer"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Show less"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Show more"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Show notifications"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Show notifications when thread status changes."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Show opened links in"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Show preview"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Show runtime debug panel"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Show sidebar"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Show source"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Show the microphone button in the composer."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Show voice input button"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Sidebar frosting"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Sign in"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Sign in needed"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Sign in required"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Sign in with the agent CLI."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Sign out {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Signed in"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Signing in"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Signing in…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Signing out {env}. Detected agents will refresh when it finishes."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Signing out. Detected agents will refresh when it finishes."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Skill: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Skills"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Skills explored"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Some checks are failing or pending."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Sort by created"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Sort by last updated"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Sort threads"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Split Terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Split view"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Stage all"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "staged"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Staged"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Staged ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Start"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Start {appName} to see usage"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Start a new thread from the selected text"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Start a new thread from this to-do"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Start from scratch"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Start voice input"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Start Without Context"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Started {targetLabel} thread"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Starting"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Starting voice input"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "starting…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Stash & Pull"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Status is inferred from terminal output (L2). Install the hook plugin "
+"in settings for structured updates."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Status is provided by the agent control protocol (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Status updates come from the CLI hook plugin."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Status:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Stop"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Stop response"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Stop task"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Stop voice input"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Store as plain text"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Store as secret (encrypted at rest)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Subagent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Subagent not found."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Subagent Result"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Subagents"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Submit"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Submit feedback and approve merging these changes."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Submit feedback that must be addressed before merging."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Submit feedback without explicit approval."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Submit review"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Supervised"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Support mode appears once the session connects."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Support:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Swap notes and to-dos"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Switch branch"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Switch mode"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Switch mode: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Switch project"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Switch this chat to agent mode"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Switch this chat to plan mode"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Sync"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Sync (Rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Sync ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Sync failed: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Sync options"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Syncs with Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "System"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "System Browser"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "System default"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Take Screenshot"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Target branch"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Target provider"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Task output"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Tell {0} what to do next..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Tell the target provider what to do next..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Terminal for {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Terminal input"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Terminal not ready — added selection to composer."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Terminal panel font size"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Terminal position"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Terminal scroll speed"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Terminal tabs"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Test microphone"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "the agent"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "the app"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "the chosen folder"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "the target provider"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Theme"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Thinking"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "This agent is not installed."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "this environment"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "This file is too large for the built-in editor."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "This file uses an unsupported encoding."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "This permanently deletes the branch \"{0}\" from its remote."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "This permanently deletes the branch \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "This removes the worktree on \"{0}\", then deletes the branch."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Thought"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Thread"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Thread + Worktree"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Thread context usage"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Thread dock"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Thread failed to start."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Thread finished or waiting for your input."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Thread goal dock"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Thread is already unloaded."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Thread mode"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Thread Only"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Thread sort order"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Thread todo dock"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Threads"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Title Generation"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "To-dos"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Toggle Fast mode"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Toggle models off to hide them from the selector."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Toggle Terminal"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokens"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokens from {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Tool search"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Total prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Total skills used"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Total threads"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Track {label} usage"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Tracking off"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Transcribing voice"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Translucent sidebar"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Type a command"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Unable to authenticate {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Unable to create WSL worktree directory \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Unable to install {0} hooks."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Unable to install {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Unable to log out {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Unable to open {0} login."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Unable to open file"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Unable to refresh {0} status."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Unable to refresh {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Unable to refresh Claude profiles."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Unable to remove {0} credentials."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Unable to remove worktree."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Unable to resolve home directory for WSL distro \"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Unable to save {0} credentials."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Unable to save Claude {displayLabel} profile."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Unable to start {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Unable to update {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Unable to update {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Unable to update {0} hooks."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Unable to update {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Unable to update {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Unable to update {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Ungroup All"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Unified view"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Uninstall"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Unknown"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Unknown project"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Unlimited"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Unload idle threads after"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Unload idle threads after (minutes)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Unload Thread"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Unmark done"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Unmark Done"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Unphased:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Unpin"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Unstage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Unstage all"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "unstaged"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Unsupported"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Update"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Update {0} to {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Update available"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Update branch"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Update error: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Update method"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Update task"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Update to {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Update to {updateLabel} for {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Update to {updateLabel} for {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Update to v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Update to v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Update with merge commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Update with rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Updated {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Updating"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Updating {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Updating {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Usage"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Usage not supported"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Usage settings"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Usage unknown"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Use an existing folder"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Use config"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Use detected session?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Use ignore files"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Use Session"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Use WebGPU acceleration"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Used"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Using the built-in Claude model list."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} available"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "value"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Version"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "via {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "View"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Visible {0} models"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Visible models"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Voice input is not available in this environment."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Voice input language"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Voice input model"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Wait for the thread to finish starting."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "waiting for agent to stop"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Waiting for workflow to spawn agents…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Wake up"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Wake up in {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Wake up in {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Wake up: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Warming up shell environment…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Warming up shell environments..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Warming up WSL shell environment…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Web search"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Website"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "When enabled, search respects <0>.gitignore0> entries."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "When to display in-app toasts for visible threads."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Where do you want to begin?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Where the terminal panel appears."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Will run in {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Work"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Work in the current checkout"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Worked for {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Workflow"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Workflow phases"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Workflow results"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Workflow: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Workflows"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Working"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Working for {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Working tree clean"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Working…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Worktree"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Worktree + changes"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Worktree mode"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Worktree: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Worktrees"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Wrap lines"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Write a comment"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Write a comment…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Write notes for this project…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Your name"
diff --git a/src/renderer/locales/es/messages.po b/src/renderer/locales/es/messages.po
new file mode 100644
index 00000000..c8b0613e
--- /dev/null
+++ b/src/renderer/locales/es/messages.po
@@ -0,0 +1,6082 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-15 03:02-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: es\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Borrador)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(sin mensaje)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# archivo} other {# archivos}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# proveedor listo} other {# proveedores listos}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {objetivo} other {objetivos}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# otros chats usan este mismo árbol. Restaurar "
+"archivos podría sobrescribir sus cambios.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Composer"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) ya está actualizado."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) actualizado a v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) actualizado."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} autenticado."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Credenciales de {0} eliminadas."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "Credenciales de {0} guardadas."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} dispositivos"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "Hooks de {0} instalados para {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "Hooks de {0} instalados."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "Hooks de {0} eliminados para {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} objetivos de instalación"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} ya está actualizado."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "Límite de {0}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "Sesión de {0} cerrada."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} necesita autenticación."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} prompt - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} prompts - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} ejecución"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} ejecuciones"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} tokens"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} tokens - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} actualizado a v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} actualizado a v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} actualizado a v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} actualizado a v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} actualizado."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} usados"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% lleno"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "hace {0} m"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Pasa el cursor para ver detalles del "
+"estado."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} día"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} días"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "hace {days}d"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} necesita autenticación."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} coincidencias"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} o {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Modo {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "El hook {hook} falló"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "hace {hours}h"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# agente listo} other {# agentes listos}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "Uso de {label} — abrir panel de uso"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "Contexto {maxLabel}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "hace {minutes}m"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} necesita autenticación."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"También falló la limpieza del worktree: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% lleno"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (deshabilitado)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Ajustes de {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# abierto} other {# abiertos}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# resultado} other {# resultados}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "hace {seconds}s"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} tokens"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} tokens"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} tokens"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} tokens"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} de {totalCount} visibles"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Todos los derechos reservados."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> de {0} comprobaciones superadas"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · est."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% para el restablecimiento"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "un agente de codificación compatible"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Cancelar fusión"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "Acerca de"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Aceptar ambos cambios"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Aceptar cambio actual"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Aceptar cambio entrante"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Cuenta"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Opciones de cuenta"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Cuentas"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Agentes ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Comando de acción"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Acción del botón de eliminación rápida en los hilos de la barra "
+"lateral."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Nombre de la acción"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Acciones"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Activo"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Actividad"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Estadísticas de actividad"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Métrica de actividad"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Añadir"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Agrega un proyecto antes de instalar un agente."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Agrega un proyecto antes de iniciar sesión."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Agrega un proyecto para empezar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Agregar una tarea…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Agregar acción"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Agregar adjunto o capacidad"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Agregar perfil de Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Agrega credenciales antes de que este hilo pueda ejecutarse."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Añadir modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Añadir patrón"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Agregar perfil"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Agregar proyecto"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Agregar proyecto"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Opciones para agregar proyecto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Agregar remoto"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Agregar al composer"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Agregar a favoritos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Agente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Agente ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Chat del agente (ACP / markdown). Las filas de comandos usan este "
+"tamaño menos 1 px; las líneas de herramientas y planes, menos 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "El agente encontró un error."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "El agente está activo y listo"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "El agente está deshabilitado actualmente"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Agente no encontrado"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Registro de agentes"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Tamaño de fuente del terminal del agente"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Actualización de agente disponible"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Agente: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Agente: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Agentes"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Agentes · General"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "IA"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Orquestador de agentes de IA: gestiona agentes de programación mediante "
+"Terminal y ACP nativo."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Acciones de git con IA"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Todas las cuentas"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Todos los dispositivos"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Todos los niveles de esfuerzo"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Todos los archivos"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Permitir"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Permitir que los agentes lean y escriban cookies y almacenamiento"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Permitir eval"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Siempre"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Siempre excluido"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Otro chat usa este mismo árbol. Restaurar archivos podría sobrescribir "
+"los cambios de ese chat."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Navegador de la app"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Apariencia"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Modo de apariencia"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Aplicar preajuste de proveedor"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Se requiere tu aprobación o respuesta."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Aprobar"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "aprobado"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Aprobado"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Archivar"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Archivar {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Archivar todo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Archivar hilo"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Hilos archivados"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "¿Seguro que quieres revertir <0>{0}0>? Esto no se puede deshacer."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "¿Seguro que quieres revertir <0>{path}0>? Esto no se puede deshacer."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "¿Seguro que quieres revertir todos los cambios sin preparar? Esto no se "
+"puede deshacer."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Pregunta a {0} cualquier cosa sobre este espacio de trabajo"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Preguntar cada vez"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Hacer una pregunta"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Adjuntar"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Adjuntar archivos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Adjuntar al hilo"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Adjuntar el panel de tareas al Composer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Selección del navegador adjuntada."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Audio"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Autenticación"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Autenticación requerida"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Automático"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Aprobación automática"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Autoarchivar los hilos finalizados tras"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Autoarchivar los hilos finalizados tras (días)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Autogenerar"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Actualización automática (minutos)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Intervalo de actualización automática en minutos, 0 para desactivar"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Revisión automática"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Mostrar el panel del terminal automáticamente"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Mostrar automáticamente el panel del terminal al ejecutar comandos o "
+"crear worktrees."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "disponible"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Agentes ACP disponibles"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Color del avatar"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Color del avatar {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Atrás"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "El proceso en segundo plano finalizó inesperadamente"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "El proceso en segundo plano no está en ejecución"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "El proceso en segundo plano se reinició"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Tareas en segundo plano"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "La rama base está adelantada — primero hay que actualizar la rama."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Tamaño de fuente base para los terminales del agente. Se reduce "
+"automáticamente en paneles estrechos o bajos."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Tamaño de fuente base para el panel del terminal. Se reduce "
+"automáticamente en paneles estrechos o bajos."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Salida de Bash"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Básico (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Mejor (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Mejores actualizaciones de estado mientras los agentes se ejecutan."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Binario"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Archivo binario — vista previa no disponible."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Archivo binario o diff no disponible"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Los archivos binarios no se pueden editar aquí."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "bloqueado:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Negrita"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Abajo"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "La rama '{branch}' tiene cambios sin confirmar en '{path}' — "
+"confírmalos o guárdalos en stash antes de fusionar"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "La rama <0>{0}0> tiene cambios sin fusionar:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Rama no fusionada por completo"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Las reglas de protección de ramas bloquearon esta fusión."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Ramas"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Buscar carpeta principal"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Explora tus repositorios de GitHub o pega una URL de clonación."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Navegador"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Browser MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Browser MCP habilitado para OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Browser MCP habilitado para este hilo"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Menú del navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Destino de selección del navegador (hilos de CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Destino de selección del navegador para los hilos de CLI"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Límite de presupuesto alcanzado"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Generando diff…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "por <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "por prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "por tokens"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Omitir las reglas de protección de ramas"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Omitir las reglas de protección de ramas (fusión de administrador)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Cancelar nuevo perfil de Claude"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Cancelar el ajuste de rumbo pendiente"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Cancelar selector"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "cancelado"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "No se puede crear una ruta de worktree predeterminada sin un nombre de "
+"rama"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "No se pueden cambiar las ramas — confirma o guarda tus cambios en stash "
+"primero"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Cambiar usuario"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Registro de cambios"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Cambios"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Cambios ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Cambios en el PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Cambios solicitados"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Canal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Chat"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Comandos de chat"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Comprobar"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Buscar actualizaciones"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Comprueba el nivel de entrada en tiempo real del dispositivo "
+"seleccionado."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Comprobando…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Comprobaciones"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Elige una carpeta…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Elige cómo iniciar sesión para {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Elige cómo iniciar sesión."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Elige el idioma de visualización de la interfaz de Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Elige el hilo al que adjuntar"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Elige si los enlaces de Lightcode y las ventanas emergentes del "
+"navegador permanecen en Lightcode o se abren de forma externa."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Perfil de Claude {0} guardado."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Perfil de Claude {displayName} añadido."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Directorio de configuración del perfil de Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Nombre del perfil de Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Perfil de Claude eliminado."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Script de limpieza"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Borrar historial de navegación"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Borrar caché"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Borrar cookies"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Borrar búsqueda"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Hooks de CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Clonar"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Clonar un repositorio"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "URL de clonación"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Clonando {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Clonando…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Cerrar"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Cerrar terminal de {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Cerrar navegador"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Cerrar editor"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Cerrar pestaña del editor"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Cerrar objetivo"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Cerrar grupo"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Cerrar panel"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Cerrar panel"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Cerrar plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Cerrar PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Cerrar vista previa"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Cerrar búsqueda"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Cerrar división"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Cerrar subagente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Cerrar subagentes"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Cerrar panel de subagentes"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Cerrar pestaña"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Cerrar a la bandeja"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Cerrar detalles de uso"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Cerrado"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Código copiado. "
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Contraer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Contraer {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Contraer todo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Contraer todo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Contraer todas las carpetas"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Contraer el Composer"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Contraer error"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Contraer el redactor del terminal"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Contraer panel de tareas"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Comando"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Comando (p. ej., npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Comandos"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Comentario"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Comentario publicado"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "comentó"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Hacer commit y crear PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Idioma de commits y PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Hacer commit y push"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Error al confirmar: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Mensaje del commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Mensaje del commit (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Generación del mensaje del commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Opciones del commit"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commits"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Compactando el contexto"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Completado"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Completa el inicio de sesión de {0} antes de que este hilo pueda "
+"ejecutarse."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Completa el inicio de sesión de {0} para {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Completa el inicio de sesión de {0} o guarda las credenciales de {1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Completa el inicio de sesión de {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Completa las instrucciones en este terminal. Se cerrará al finalizar."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "completado"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Redactor"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Directorio de configuración"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Resolutor de conflictos"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Conflictos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Consola"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Contexto"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Contexto compactado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Contexto compactado desde {before} tokens"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Contexto compactado: {before} → {after} tokens"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Extracción del contexto ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Contexto compactado manualmente desde {before} tokens"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Contexto compactado manualmente: {before} → {after} tokens"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Contexto transferido a {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Uso del contexto"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Continuar"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Continuar en otro proveedor"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Continuar en..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Controla qué archivos aparecen en la búsqueda de menciones @file. Las "
+"anulaciones por proyecto están en la configuración de cada proyecto."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Conversación"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Copiado"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Copiado al portapapeles"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Copiar"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Copiar el código de dispositivo de {0} {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Copiar la URL actual"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Copiar detalles"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Copiar diagnósticos"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "No se pudo copiar"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Copiar archivos ignorados"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Copiar imagen"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Copiar mensaje"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Copiar ruta"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Copiar ruta relativa"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Copiar los cambios sin confirmar aquí (los mantiene en esta rama)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "No se pudo abortar la fusión: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "No se pudo completar la fusión"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "No se pudo extraer el contexto."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "No se pudo generar el mensaje de confirmación: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "No se pudo leer el archivo."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "No se pudo clonar el repositorio."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "No se pudieron copiar tus cambios sin confirmar en el nuevo worktree: "
+"permanecen en la rama actual."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "No se pudo crear el proyecto."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "No se pudieron listar los repositorios."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "No se pudieron cargar las estadísticas de tu perfil."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Crear PR en borrador"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Crear archivo"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Crear nueva rama"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Crear nueva rama..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Crear PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Crear PR (automático)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Acción de crear PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Crear PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Crear proyecto"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Crear pull request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Crear tarea"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Crear:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Se creó un worktree en \"{newBranch}\", pero los cambios entraron en "
+"conflicto y permanecen en un stash de git: resuélvelos en el worktree."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Las credenciales están configuradas."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Créditos"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "racha actual"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Racha actual"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Personalizado"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Comandos personalizados disponibles desde el menú contextual del "
+"proyecto (clic derecho)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Oscuro"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Rechazar"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Predeterminado"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Acción de crear PR predeterminada"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Nuevo hilo predeterminado"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Permisos predeterminados"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Eliminación de hilos predeterminada"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Eliminar"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Eliminar {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "¿Eliminar la rama?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Eliminar archivo"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Eliminar permanentemente"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Eliminar hilo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Eliminar hilo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "¿Eliminar el hilo?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Eliminar tarea"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Eliminar worktree"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Eliminar worktree {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Eliminar:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Eliminando"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Denegar"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Denegar y decirle al agente qué hacer de otra manera…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Descripción"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Descripción (opcional)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Detectado <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Detectado <0>(local)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Detectado <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Detectando agentes…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Desarrollo"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Sustituciones solo para desarrollo. Solo visibles en la compilación "
+"LIGHTCODE DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Dispositivo que usa el botón de entrada de voz del redactor."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Desactivar esfuerzo {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Deshabilitar Browser MCP"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Deshabilitar el plugin de hook de CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Deshabilitar proyecto"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Desactiva los niveles que un proveedor externo unifica (p. ej. mantener "
+"solo High y Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Deshabilitado"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "¿Descartar los cambios sin guardar en {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "¿Descartar los cambios sin guardar del editor?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Descubriendo agentes de codificación…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Descartar"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Descartar error"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "revisión descartada"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Nombre que se muestra en la barra lateral."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Documentación"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "No volver a preguntar"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "No mostrar la propuesta de instalación de hooks"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "listo"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Listo"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Listo · Esperando tu entrada"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Descargar imagen"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Descargando en «{0}». Esto puede tardar un momento en repositorios "
+"grandes."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Descargando modelo de voz {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Descargando modelo de voz..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Descargando{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Descargando{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Borrador"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Arrastra para reordenar cómo aparecen los proveedores en el selector de "
+"modelos."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Arrastra para reordenar; doble clic para editar"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Suelta aquí para adjuntar"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Descarta los envoltorios de hook entrantes en el supervisor para que "
+"los agentes recurran a L2 (progreso OSC 9;4) sin afectar la instalación "
+"ni las notificaciones de iTerm2. Surte efecto en el próximo evento de "
+"hook, sin necesidad de reiniciar."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "p. ej. Trabajo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Editar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Editar archivo"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Editar perfil"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Editar:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Editor"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "LSP del editor"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Pestañas del editor"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Esfuerzo y contexto"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Niveles de esfuerzo"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Habilitar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Activar esfuerzo {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Activa la compatibilidad con el servidor de lenguaje para la "
+"comprobación de tipos, autocompletado y diagnósticos. Requiere un "
+"servidor de lenguaje instalado."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Habilita el acceso al micrófono en los ajustes del sistema y vuelve a "
+"intentarlo."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Activar notificaciones"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Habilitar proyecto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Habilitar proveedores en ajustes"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Activa <0>cookies0> y <1>almacenamiento1>. Las cookies pueden "
+"contener tokens de sesión y el almacenamiento suele guardar el estado "
+"de autenticación: actívalo solo cuando confíes tanto en el agente como "
+"en los sitios que visita."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Avanzado (Hooks)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Introduce una URL de repositorio."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Entrar en modo plan"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Entorno"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Nombre de la variable de entorno"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Valor de la variable de entorno"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Variables de entorno"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "error"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Error"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Error · El agente encontró un error"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Patrones de exclusión"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Salir del modo plan"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Salió con código {0}. Cierra para reintentar."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Expandir"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Expandir {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Expandir todo"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Expandir error"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Expandir panel de tareas"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Externo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Proveedor externo"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Extra alto"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Extrayendo contexto de {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "fallido"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Error al cerrar el pull request: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Error al crear el pull request: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "No se pudieron cargar las estadísticas del perfil."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Error al fusionar el pull request: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Rápido"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Modo rápido"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Más rápido (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "Más rápido usa Whisper tiny; Mejor usa Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Favoritos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Obtener"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Archivo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Los cambios de archivos aparecerán aquí."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "El archivo es demasiado grande para previsualizar."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "El archivo ya no existe en el disco."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Archivo demasiado grande para mostrar ({0, plural, one {# línea "
+"cambiada} other {# líneas cambiadas}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "El archivo usa una codificación no compatible."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Archivos"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Archivos de {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Los archivos que coinciden con estos globs se ocultan de la búsqueda de "
+"menciones @file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Termina tu revisión"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Finalizado"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Finalizado · Esperando tu entrada"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Integración de primera clase de Antigravity CLI usando el runtime "
+"nativo de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Integración de primera clase de Claude Code usando el runtime nativo "
+"del SDK de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Integración de primera clase de Codex CLI usando el runtime nativo de "
+"app-server de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Integración de primera clase de Command Code CLI usando el runtime "
+"nativo de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Integración de primera clase de Grok Build CLI usando el runtime nativo "
+"de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Integración de primera clase de OpenCode usando el runtime nativo del "
+"SDK de Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Corregir en el agente"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Nombre de carpeta"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Forzar eliminación"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "¿Forzar eliminación? Se perderán los cambios sin fusionar."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Bifurcar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Formatear archivos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Adelante"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Se encontró una sesión de {0} con sesión iniciada."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Aplica al panel lateral el efecto esmerilado del desenfoque del sistema "
+"(vibrancy), al estilo de las versiones recientes de macOS. Si no es "
+"compatible, usa un tinte translúcido."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Esmerilado del panel lateral en modo {appearance} sobre el desenfoque "
+"del sistema. Un valor más alto mantiene el color del tema; uno más bajo "
+"deja ver más de lo que hay detrás."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Acceso completo"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Superposición a pantalla completa"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "General"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Generar mensaje de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Generar resumen de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Generar con AI"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Imagen generada"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Genera mensajes de commit a partir de los cambios preparados."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Genera títulos cortos para los nuevos hilos."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Obtener tarea"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Error en Git {command}: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Revisión de Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Modo de revisión de Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Estado de Git para {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Estado de Git para {0}: no es un repositorio Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Repositorio de GitHub"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Archivos ignorados por Git para copiar del proyecto principal a cada "
+"nuevo worktree. Patrones estilo gitignore, uno por línea (p. ej., "
+"<0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (etiqueta opcional)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Objetivo"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Objetivos definidos"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Grupo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Agrupar hilos abiertos"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Tamaño de fuente del chat de la GUI"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "identificador"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Identificador"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Recarga forzada"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Los hilos ocultos reanudables se revisan cada 5 minutos y se descargan "
+"tras este tiempo de inactividad."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Ocultar"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Ocultar todo"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Ocultar navegador"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Ocultar inspector de elementos del runtime canónico"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Ocultar detalles de uso de contexto"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Oculta los modelos que no usas del selector de modelos en todos los "
+"proveedores."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Ocultar panel"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Ocultar panel de depuración del runtime"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Ocultar barra lateral"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Ocultar terminal"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Inicio"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Ámbito de inicio"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Inactivo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Imagen"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Vista previa de imagen"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Inactivo"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "heredado"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Heredando el ajuste global (actualmente {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Inicializar repositorio"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Nivel de entrada"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Inspeccionar elementos canónicos del runtime"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "instalación"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Instalar"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Instalar {0} para {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Instalar {0} para crear un hilo."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Instalar {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Instalar {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Instalar hooks de CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Instalar en WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Instala primero los proveedores nativos; usa ACP para agentes de "
+"protocolo adicionales."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Instalar en Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Instalar paquetes"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Instalar actualización"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Instalar v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Instalar v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Instalado"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Instalando"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Instalando en este terminal. Se cerrará al finalizar."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Interrumpido: la sesión del agente terminó antes de completarse."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Cursiva"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "ahora mismo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Mantener rama"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Mantener el sistema activo mientras cualquier hilo esté trabajando."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Detener bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Idioma"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Idioma de los mensajes de commit y los resúmenes de pull request "
+"generados por IA. Los títulos de los hilos siempre siguen el idioma de "
+"la app."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Idioma que debe esperar el modelo de voz al transcribir el dictado del "
+"redactor."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Última herramienta: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Iniciar hilo"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Lanzando…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Dejar un comentario"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Menos"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Permite que los agentes llamen a <0>eval0> para ejecutar JavaScript "
+"arbitrario dentro de la página incrustada. Desactivado de forma "
+"predeterminada: actívalo solo cuando confíes en los sitios cargados y "
+"en el agente."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Licencia"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "tokens totales"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Tokens totales"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Claro"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Lista"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Listar paquetes"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Listar tareas"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Cargando"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Cargando cuentas…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Cargando diff..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Cargando editor…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Cargando archivo…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Cargando notas…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Cargando PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Cargando registro..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Cargando…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "local"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Local"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Es necesario guardar los cambios locales en stash antes de hacer pull "
+"desde {branch}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Ubicación"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Iniciando sesión"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Cerrando sesión"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "iniciar sesión"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Iniciar sesión"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Iniciar sesión {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Inicio de sesión requerido"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Cerrar sesión"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Cerrar sesión {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "racha más larga"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Racha más larga"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Tarea más larga"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Hace translúcido el panel lateral: el efecto de desenfoque del sistema "
+"en Windows 11 y un tinte translúcido en otros casos."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Orden manual"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Marcar todo como hecho"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Marcar como hecho"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Marcar como no hecho"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Marcar hecho"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Marcar como hecho"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Coincidir con el idioma de la app"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Coincide con tu sistema, o fuerza el modo claro u oscuro."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Maximizar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Maximizar navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Servidores MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Fusionar y eliminar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Los conflictos de fusión deben resolverse."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Error en la fusión"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "La fusión tiene conflictos"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "La fusión tiene conflictos:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Fusionar localmente y eliminar worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Método de fusión"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Opciones de fusión"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Fusionar PR: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Fusionar PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Fusionar PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Fusionar al origen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Fusionar worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Fusionado"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "La fusión está bloqueada"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Mensajes enviados"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Micrófono"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Micrófono {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "El acceso al micrófono está desactivado."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Nivel de entrada del micrófono"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Se denegó el permiso del micrófono."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "La prueba del micrófono no está disponible en este entorno."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Minimizar navegador al panel derecho"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Minimizar al panel"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Modo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "ID del modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Etiqueta del modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Orden de modelos"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Uso de modelos"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Modelos"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Modos"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Más"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Más opciones de aprobación"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Más opciones de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Más acciones de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Más opciones de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Más opciones de pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Más opciones de sincronización"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Hora más activa"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Plugins más usados"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Proveedor más usado"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Razonamiento más usado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Mover"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Mover cambios a un nuevo worktree"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Mover el dock de tareas al panel derecho"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Movió tus cambios a un nuevo worktree en \"{newBranch}\". "
+"\"{currentBranch}\" ahora está limpio."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Moviendo cambios…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Nombre"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Nombra tu proyecto y elige dónde crearlo."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Nativo"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Proveedores nativos"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Soporte nativo"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Necesita aprobación"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Requiere atención"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Necesita atención · Aprobación requerida"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Necesita atención · Respuesta requerida"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Necesita respuesta"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Nuevo comando de acción"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Nuevo nombre de acción"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Nombre de la nueva rama..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Nuevo directorio de configuración del perfil de Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Nuevo nombre de perfil de Claude"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Nuevo archivo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Nueva carpeta"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Nuevo proyecto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Nueva pestaña"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Nuevo hilo"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Nuevo hilo"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Nuevo hilo — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Nuevo hilo (borrador)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Nuevo hilo a partir de esta tarea"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Nuevo hilo en worktree"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Nuevo worktree"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Imagen siguiente"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "No hay una pestaña activa del navegador"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Sin sesión activa"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Aún no hay actividad."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "No hay perfiles de Claude adicionales."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "No hay ningún agente disponible para generar el resumen del PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "No hay agentes en esta fase."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Aún no hay agentes instalados"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "No hay agentes instalados."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Aún no se han registrado commits, PRs ni resoluciones de conflictos con "
+"IA."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "No hay hilos archivados."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "No se encontraron ramas"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "No hay pestañas de navegador abiertas"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Sin cambios"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "No hay cambios para mostrar"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "No se reportaron comprobaciones para este PR."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "No se encontraron comandos"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "No se encontraron commits."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "No hay flujos de contenido."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Aún no hay conversación. Sé el primero en comentar."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Aún no hay datos"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Aún no hay datos."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Sin descripción"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "No hay diff disponible para {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "No hay diff para {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "No hay punto de control de archivos guardado para este mensaje."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Ningún archivo coincide con \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "No se encontraron cuentas de GitHub CLI. Inicia sesión con <0>gh auth "
+"login0>, o <1>pega una URL de clonación1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "No hay coincidencias para “{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Sin coincidencias."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "No hay agentes coincidentes."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "No hay hilos coincidentes"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Aún no se han usado herramientas MCP."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Aún no hay mensajes"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "No se encontró micrófono."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "No se encontraron modelos"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "No hay otros agentes instalados"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Sin patrones."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Aún no hay fases."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Sin prompts"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "No se están rastreando proveedores."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Aún no hay proveedores listos"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "No hay remoto configurado. Añade un remoto para habilitar push y pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "No se encontraron repositorios."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Aún no hay elementos de runtime para este hilo."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Aún no se han usado skills."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "No se detectó voz."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "No hay cambios preparados"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Aún no se han usado subagents."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "No se detectaron agentes compatibles"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Sin hilos"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Aún no hay hilos."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "No se informaron ventanas"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Sin worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Sin ajuste de línea"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Ninguno"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "No es un repositorio git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "No es un repositorio Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "No encontrado"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "No instalado"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "No en ejecución"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "No has iniciado sesión"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "No compatible"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Notas"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Aún no hay nada registrado. Aparecerá aquí a medida que lo uses."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Notificaciones"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Notificar para los hilos de CLI L2"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Notificarme sobre"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "desactivado"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Más antiguos"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "activado"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Solo cuando no esté en primer plano"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Abrir"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Abrir {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Abrir un terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Abre primero un hilo para adjuntarlo."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Abrir todo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Abrir todo en el grupo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Abrir como página"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Abrir como panel"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Abrir navegador"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Abrir comprobación"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Abrir paleta de comandos"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Abrir commit en GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Abrir el resolutor de conflictos en"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Abrir diálogo"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Abrir archivo"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Abrir archivos"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Abrir en pantalla completa"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Abrir panel de Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Abrir revisión de Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Abrir la revisión de Git como un panel a la derecha o como una página "
+"completa."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Abrir vista previa de la imagen"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Abrir en el editor"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Abrir enlaces en"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Abrir nueva pestaña"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Abrir los nuevos hilos como una página completa o como un panel "
+"lateral."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Abrir PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Abrir PR en GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Abrir vista previa"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Abrir ajustes del proyecto"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Solicitudes abiertas"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Abrir URL requerida"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Abrir ajustes"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Abrir ajustes"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Abrir subagente: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Abrir el selector de esfuerzo"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Abrir el selector de modelo"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Abierto {0} (n.º {1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Hooks de estado opcionales. Los hooks instalados se actualizan "
+"automáticamente; los hooks faltantes nunca se instalan automáticamente."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Opciones"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "O escribe una respuesta personalizada"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Resultado"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Por encima del ritmo — se agotará antes"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Anula los valores predeterminados de Claude, p. ej. ANTHROPIC_BASE_URL "
+"y ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Anulando el ajuste global para este proyecto."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Configuración del paquete"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Gestor de paquetes"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Página"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Panel"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Pegar"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Pega <0>{0}0> aquí. Haz clic para copiar."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Pegar en la entrada"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "En pausa"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "día pico"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Día pico"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "pendiente"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "pendiente de revisión"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Dirección pendiente"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "permiso"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Elegir elemento"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Elegir icono"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "El selector falló"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "El selector no devolvió ningún adjunto"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Fijar arriba"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Fijado"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Reproducir un sonido cuando se muestre una notificación."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Reproducir sonido de notificación"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Apunta este perfil a un proveedor distinto de Anthropic (z.ai, …) con "
+"variables de entorno, nombres de modelos y niveles de esfuerzo "
+"personalizados."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Temas populares de editores adaptados a Lightcode. Cada uno sigue el "
+"modo claro u oscuro de arriba."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "Acciones de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Opciones de PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Revisión de PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "Secciones de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Título del PR (dejar vacío para autogenerar)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "El hook de pre-commit falló"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Preajustes"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Evitar la suspensión mientras se trabaja"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Vista previa de {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Imagen anterior"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Perfil"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Perfiles"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Proyecto"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Nombre del proyecto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Notas del proyecto"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Ajustes del proyecto"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Anulaciones específicas del proyecto sobre los ajustes de búsqueda "
+"globales."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompts"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Plan propuesto"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "proveedor"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Proveedor"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "El proveedor no ha informado del uso de tokens."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Preajustes de proveedor"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "proveedores"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Proveedores"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Pull ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Pull ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "El pull no se completó. Tus cambios locales permanecen en un stash de "
+"Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Error en el pull: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "¿Hacer pull desde {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Pull desde {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Pull desde origen ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull con rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Opciones de pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Error en el push: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Preguntas"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Cuota alcanzada"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Agotado"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Agotado · se restablece en {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Límite de frecuencia alcanzado"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Límite de frecuencia alcanzado. Inténtalo de nuevo en breve."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "La reaplicación de los cambios locales tiene conflictos"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Volver a iniciar sesión"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Listo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Listo para revisión"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Razonamiento"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Recientes"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Hilos recientes"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Reconstruido a partir de los registros locales según las tarifas "
+"públicas de la API: no refleja tu factura real en los planes de "
+"suscripción. Se muestra solo en el panel de uso."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Actualizar"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Actualizar autenticación de {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Actualizar los agentes detectados"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Actualizar registro"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Actualizar el uso en segundo plano cada N minutos. Ponlo en 0 para "
+"desactivarlo (solo manual). El mínimo de 2 minutos respeta los límites "
+"de tasa del proveedor."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Actualizando el estado de autenticación de {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Actualizando el estado de autenticación de {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Recargar"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Remoto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Nombre del remoto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "URL del remoto"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Eliminar"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Eliminar {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Eliminar {0} del panel"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Eliminar {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Eliminar acción"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Eliminar perfil de Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Eliminar variable de entorno"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Quitar de favoritos"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Quitar del grupo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Quitar del panel"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Eliminar modelo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Eliminar proyecto"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "¿Eliminar worktree?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Renombrar"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Renombrar grupo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Renombrar hilo"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "El renderizador falló"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "El renderizador falló durante el inicio"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "El renderizador encontró un error de React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "El renderizador encontró un error no capturado"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "El renderizador encontró un rechazo de promesa no controlado"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Reordenar {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Reordenar {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Informar de un problema"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "repositorio"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Repositorio"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "El hook pre-receive del repositorio está bloqueando la fusión."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "URL del repositorio"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Solicitar cambios"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Detalles de la solicitud"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "cambios solicitados"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "No se cumplen las revisiones, conversaciones o comprobaciones de estado "
+"requeridas."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "restablecer"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Restablecer orden de modelos"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Restablecer el esmerilado del panel lateral a sus valores "
+"predeterminados"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Restablecer valores predeterminados"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Redimensionar cajón del navegador"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Redimensionar columna"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Redimensionar panel de git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Redimensionar notas y tareas pendientes"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Redimensionar fila"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Redimensionar barra lateral"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Redimensionar división"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Redimensionar panel de terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Resuelve conflictos de fusión durante el rebase o la fusión."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Restaurar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Restaurar navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Restaurar hilo"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Reintentar como administrador"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Volver a la app"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Mostrar en el Explorador de archivos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Mostrar en el árbol de archivos"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Revertir"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Revertir todo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Revertir todos los cambios"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Revertir cambios"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "¿Revertir al punto de control?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Revertir a este punto de control"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Revisar cambios"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Comentario de revisión"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Decisión de revisión"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Revisar a petición"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Revisar PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Revisar PR #{prNumber} de {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Derecha"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Panel derecho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Ejecutar"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Ejecutar {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Ejecuta {0} antes de que este hilo pueda ejecutarse."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Ejecuta {loginCommand} para iniciar sesión."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Ejecutar comando"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Ejecutar en un worktree separado"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Ejecutar la transcripción local en la GPU cuando esté disponible."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Ejecutar comando de terminal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "en ejecución"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Se ejecuta antes de eliminar un worktree (p. ej., <0>rm -rf "
+"node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Se ejecuta en una terminal después de crear un nuevo worktree (p. ej., "
+"<0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Se agota antes"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Se agota en {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Runtime"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Depuración de runtime"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Opciones de runtime"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Guardar"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Guardar credenciales de {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Guardar perfil de Claude"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Guardar archivo"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Las credenciales guardadas se comparten entre todos los entornos."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Escaneando {wslDistro} en busca de CLIs instaladas. Esto suele tardar "
+"un par de segundos."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Escaneando Windows y WSL en busca de CLIs instaladas. Esto suele tardar "
+"un par de segundos."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Escaneando tu sistema en busca de CLIs instaladas. Esto suele tardar un "
+"par de segundos."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Scripts"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Multiplicador de la velocidad de desplazamiento del búfer de historial "
+"del terminal."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Desplazar al final"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Búsqueda"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Buscar agentes"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Buscar agentes..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Buscar ramas..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Buscar archivos"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Buscar modelos"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Buscar modelos..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Buscar o introducir dirección"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Buscar repositorios"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Buscar repositorios…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Buscar elementos de runtime…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Buscar hilos"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Buscar hilos"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Buscar…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Buscando..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Buscando…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Ver más"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Seleccionar"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Selecciona un archivo del árbol"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Selecciona un archivo para empezar a editar."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Selecciona un repositorio."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Seleccionar cuenta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Selecciona un agente para ver su prompt y resultado."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Seleccionar rama"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Seleccionar dispositivo"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Seleccionar modelo"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Seleccionar proyecto"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Enviar un mensaje..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Enviar mensaje"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Selección enviada al terminal."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Separa las cuentas de Claude Code por directorio de configuración, o "
+"apunta un perfil a un proveedor externo (z.ai, …). Abre un perfil para "
+"configurar sus variables de entorno, modelos y esfuerzo."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Establecer o ver un objetivo experimental"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Ajustes"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Script de configuración"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Compartir"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Comparte tu actividad"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Mostrar un anillo de uso compacto por proveedor en la barra lateral."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Mostrar un ámbito de inicio sin proyecto para las sesiones de agente a "
+"nivel del OS."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Mostrar todo"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Mostrar barra de marcadores"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Mostrar círculos en la barra lateral"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Mostrar Composer"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Mostrar detalles del uso de contexto"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Mostrar coste estimado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Mostrar en el explorador de archivos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Mostrar menos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Mostrar más"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Mostrar notificaciones"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Mostrar notificaciones cuando cambie el estado de un hilo."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Mostrar los enlaces abiertos en"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Mostrar vista previa"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Mostrar panel de depuración de runtime"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Mostrar barra lateral"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Mostrar fuente"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Mostrar el botón del micrófono en el redactor."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Mostrar el botón de entrada de voz"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Esmerilado del panel lateral"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Iniciar sesión"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Se requiere iniciar sesión"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Se requiere iniciar sesión"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Inicia sesión con la CLI del agente."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Cerrar sesión {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Sesión iniciada"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Iniciando sesión"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Iniciando sesión…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Cerrando sesión en {env}. Los agentes detectados se actualizarán al "
+"finalizar."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Cerrando sesión. Los agentes detectados se actualizarán al finalizar."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Habilidad: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Skills"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Skills exploradas"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Algunas comprobaciones están fallando o pendientes."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Ordenar por fecha de creación"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Ordenar por última actualización"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Ordenar hilos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Dividir terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Vista dividida"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Preparar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Preparar todo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "preparado"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Preparado"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Preparado ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Iniciar"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Inicia {appName} para ver el uso"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Iniciar un nuevo hilo a partir del texto seleccionado"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Iniciar un nuevo hilo a partir de esta tarea pendiente"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Empezar desde cero"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Iniciar el redactor contraído en los hilos nativos de terminal. Un "
+"redactor contraído envía las selecciones de elementos del navegador "
+"directamente al terminal."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Iniciar entrada de voz"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Iniciar sin contexto"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Hilo {targetLabel} iniciado"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Iniciando"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Iniciando entrada de voz"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "iniciando…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Guardar en stash y extraer"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "El estado se infiere de la salida del terminal (L2). Instala el plugin "
+"de hooks en los ajustes para recibir actualizaciones estructuradas."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "El estado lo proporciona el protocolo de control del agente (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Las actualizaciones de estado provienen del plugin de hooks de la CLI."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Estado:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Detener"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Detener respuesta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Detener tarea"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Detener entrada de voz"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Guardar como texto sin cifrar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Guardar como secreto (cifrado en reposo)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Subagente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Subagente no encontrado."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Resultado del subagente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Subagentes"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Enviar"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Envía comentarios y aprueba la fusión de estos cambios."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Envía comentarios que deben resolverse antes de fusionar."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Envía comentarios sin aprobación explícita."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Enviar revisión"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Supervisado"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "El modo de soporte aparece cuando la sesión se conecta."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Soporte:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Intercambiar notas y tareas pendientes"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Cambiar de rama"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Cambiar de modo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Cambiar de modo: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Cambiar de proyecto"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Cambiar este chat al modo agente"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Cambiar este chat al modo de plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Sincronizar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Sincronizar (rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Sincronizar ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Error en la sincronización: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Opciones de sincronización"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Se sincroniza con Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Sistema"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Navegador del sistema"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Predeterminado del sistema"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Hacer captura de pantalla"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Rama de destino"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Proveedor de destino"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Salida de la tarea"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Indica a {0} qué hacer a continuación..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Indica al proveedor de destino qué hacer a continuación..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Terminal para {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Entrada del terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "El terminal no está listo — se agregó la selección al compositor."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Tamaño de fuente del panel del terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Posición del terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Velocidad de desplazamiento del terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Pestañas del terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Probar micrófono"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "el agente"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "la app"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "la carpeta elegida"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "El shell normal de la app no se pudo renderizar. Los diagnósticos "
+"siguientes se muestran antes de recargar para que se pueda investigar "
+"la falla."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "el proveedor de destino"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Tema"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Pensando"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Este agente no está instalado."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "este entorno"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Este archivo es demasiado grande para el editor integrado."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Este archivo usa una codificación no compatible."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Esto elimina permanentemente la rama \"{0}\" de su remoto."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Esto elimina permanentemente la rama \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Esto elimina los mensajes posteriores y restaura los archivos cuando "
+"hay disponible una instantánea de punto de control."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Esto elimina el worktree en \"{0}\" y cierra {1, plural, one {# hilo "
+"vinculado} other {# hilos vinculados}}, y luego elimina la rama."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Esto elimina el worktree en \"{0}\" y luego elimina la rama."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Este hilo usa el worktree <0>{0}0>. ¿Eliminar también el directorio "
+"del worktree?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "Este worktree tiene cambios locales. Lightcode puede guardarlos "
+"temporalmente en el stash, extraer de {0} y luego volver a aplicar tus "
+"cambios."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Pensamiento"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Hilo"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Hilo + worktree"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Uso del contexto del hilo"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Panel del hilo"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "El hilo no pudo iniciarse."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "El hilo terminó o está esperando tu respuesta."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Panel del objetivo del hilo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "El hilo ya está descargado."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Modo del hilo"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Solo el hilo"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Orden de los hilos"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Panel de tareas del hilo"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Hilos"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Los hilos marcados como finalizados que no se han tocado durante esta "
+"cantidad de días se archivan automáticamente al iniciar la app. Ponlo "
+"en 0 para desactivarlo."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Generación de títulos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Tareas pendientes"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Alternar modo rápido"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Desactiva modelos para ocultarlos del selector."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Alternar terminal"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokens"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokens de {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Búsqueda de herramientas"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Total de prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Total de skills usadas"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Total de hilos"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Hacer seguimiento del uso de {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Haz seguimiento del uso por proveedor de cada sesión, semanal y "
+"mensual. Cada proveedor informa de sus ventanas; el coste estimado se "
+"reconstruye a partir de los registros locales."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Seguimiento desactivado"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Transcribiendo voz"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Panel lateral translúcido"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Activa o desactiva el seguimiento por proveedor. La actualización "
+"automática omite los proveedores desactivados."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Escribe un comando"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "No se puede autenticar {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "No se pudo crear el directorio de worktree de WSL \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "No se pueden instalar los hooks de {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "No se pudo instalar {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "No se puede cerrar la sesión de {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "No se pudo abrir el inicio de sesión de {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "No se puede abrir el archivo"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "No se puede actualizar el estado de {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "No se puede actualizar {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "No se pueden actualizar los perfiles de Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "No se pueden eliminar las credenciales de {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "No se pudo eliminar el worktree."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "No se pudo resolver el directorio de inicio para la distro de WSL "
+"\"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "No se pueden guardar las credenciales de {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "No se pudo guardar el perfil {displayLabel} de Claude."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "No se pudo iniciar {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "No se puede actualizar {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "No se puede actualizar {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "No se pueden actualizar los hooks de {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "No se puede actualizar {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "No se puede actualizar {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "No se puede actualizar {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Desagrupar todo"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Vista unificada"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Proyecto desconocido"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Ilimitado"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Descargar los hilos inactivos tras"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Descargar los hilos inactivos tras (minutos)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Descargar hilo"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Desmarcar como hecho"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Desmarcar como hecho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Sin fase:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Desanclar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Quitar del stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Quitar todo del stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "sin preparar"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "No compatible"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Actualizar"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Actualizar {0} a {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Actualización disponible"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Actualizar rama"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Error de actualización: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Método de actualización"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Actualizar tarea"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Actualizar a {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Actualizar a {updateLabel} para {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Actualizar a {updateLabel} para {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Actualizar a v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Actualizar a v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Actualizar con commit de fusión"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Actualizar con rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Actualizado {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Actualizando"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Actualizando {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Actualizando {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Uso"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Uso no compatible"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Ajustes de uso"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Uso desconocido"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Usar una carpeta existente"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Usar configuración"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "¿Usar la sesión detectada?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Usar archivos ignore"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Usar sesión"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Usa esta cuenta para el seguimiento de uso, o cambia de usuario en el "
+"navegador antes de continuar."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Usar aceleración por WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Usado"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Usando la lista de modelos integrada de Claude."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} disponible"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "valor"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Versión"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "vía {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Ver"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Modelos {0} visibles"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Modelos visibles"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "La entrada de voz no está disponible en este entorno."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Idioma de la entrada de voz"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Modelo de la entrada de voz"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Espera a que el hilo termine de iniciarse."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Esperando la autenticación de {authMethodName} en {authEnv}. Los "
+"agentes detectados se actualizarán cuando finalice."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Esperando la autenticación de {authMethodName}. Los agentes detectados "
+"se actualizarán cuando finalice."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Esperando la autenticación de {methodName} en {env}. Los agentes "
+"detectados se actualizarán cuando finalice."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Esperando la autenticación de {methodName}. Los agentes detectados se "
+"actualizarán cuando finalice."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "esperando a que el agente se detenga"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Esperando a que el flujo de trabajo genere agentes…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Despertar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Despertar en {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Despertar en {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Despertar: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Preparando el entorno de shell…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Preparando los entornos de shell..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Preparando el entorno de shell de WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Búsqueda web"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Sitio web"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Lo que hace el botón de crear PR de forma predeterminada: abrir primero "
+"un diálogo para editar el título y la descripción, o generarlos "
+"automáticamente y crear el PR con un solo clic. También puedes "
+"cambiarlo desde el menú del botón."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Cuando está activado, la búsqueda respeta las entradas de "
+"<0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Cuando los enlaces se abren en una pestaña del navegador de Lightcode, "
+"elige dónde se muestra el navegador."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Cuando está desactivado, se suprimen las notificaciones de los hilos de "
+"terminal cuyo estado proviene del mecanismo de reserva OSC (sin "
+"complemento de hooks de la CLI)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Cuándo mostrar avisos dentro de la app para los hilos visibles."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Cuando cierres la ventana, mantener Lightcode en ejecución en la "
+"bandeja del sistema. Desactívalo para salir al cerrar."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Adónde va la selección del selector de elementos del navegador en los "
+"hilos nativos de terminal. Un redactor contraído siempre la envía al "
+"terminal."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "¿Por dónde quieres empezar?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Dónde aparece el panel del terminal."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Se ejecutará en {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows aún no es compatible. Instala dentro de WSL o en macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Trabajo"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Trabajar en el checkout actual"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Trabajó durante {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Flujo de trabajo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "El flujo de trabajo ha finalizado. Los agentes secundarios se "
+"ejecutaron en un proceso aparte y aún no se transmiten aquí."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "El flujo de trabajo se está ejecutando en segundo plano. Los agentes "
+"secundarios se ejecutan en un proceso aparte y aún no se transmiten "
+"aquí."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Fases del flujo de trabajo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Resultados del flujo de trabajo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Flujo de trabajo: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Flujos de trabajo"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Trabajando"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Trabajando durante {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Árbol de trabajo limpio"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Trabajando…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Worktree"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Worktree + cambios"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Modo worktree"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Worktree: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Worktrees"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Ajustar líneas"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Escribir un comentario"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Escribir un comentario…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Escribe notas para este proyecto…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Tu nombre"
diff --git a/src/renderer/locales/fr/messages.po b/src/renderer/locales/fr/messages.po
new file mode 100644
index 00000000..a89e43d3
--- /dev/null
+++ b/src/renderer/locales/fr/messages.po
@@ -0,0 +1,6096 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: fr\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Brouillon)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(pas de message)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# fichier} other {# fichiers}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# fournisseur prêt} other {# fournisseurs prêts}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {cible} other {cibles}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# d'autres chats utilisent ce même arbre. La "
+"restauration des fichiers pourrait écraser leurs modifications.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Compositeur"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) est déjà à jour."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) mis à jour vers v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) mis à jour."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} authentifié."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Les identifiants {0} ont été supprimés."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "Informations d'identification {0} enregistrées."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} appareils"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "Hooks {0} installés pour {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "Hooks {0} installés."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "Hooks {0} retirés pour {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} cibles d'installation"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} est déjà à jour."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "limite {0}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} s'est déconnecté."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} nécessite une authentification."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} prompt - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} prompts - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} exécution"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} exécutions"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} jetons"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} tokens - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} mis à jour vers v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} mis à jour vers v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} mis à jour vers v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} mis à jour vers v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} mis à jour."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} utilisé"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% plein"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "il y a {0} mois"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel} : {statusLabel}. Passez la souris pour les détails du "
+"statut."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} jour"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} jours"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "il y a {days} j"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} nécessite une authentification."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} correspondances"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head}, ou {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Mode {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "Le hook {hook} a échoué"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "il y a {hours} h"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# agent prêt} other {# agents prêts}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "Utilisation de {label} — ouvrir le panneau d'utilisation"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "contexte {maxLabel}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "il y a {minutes} min"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} nécessite une authentification."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Le nettoyage de l'arbre de travail a également échoué : {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent} % plein"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (désactivé)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Paramètres {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# ouvert} other {# ouverts}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# résultat} other {# résultats}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "il y a {seconds} s"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} jetons"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} jetons"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} jetons"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} jetons"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} sur {totalCount} visibles"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Tous droits réservés."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> sur {0} contrôles réussis"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · est."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% par remise à zéro"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "un agent de codage pris en charge"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Abandonner la fusion"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "À propos"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Accepter les deux modifications"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Accepter le changement actuel"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Accepter les modifications entrantes"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Compte"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Options de compte"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Comptes"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Agents ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Commande d'action"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Action pour le bouton de suppression rapide sur les fils de discussion "
+"de la barre latérale."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Nom de l'action"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Actions"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Actif"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Activité"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Aperçus d'activité"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Métrique d'activité"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Ajouter"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Ajoutez un projet avant d'installer un agent."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Ajoutez un projet avant de vous connecter."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Ajouter un projet pour démarrer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Ajouter une tâche…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Ajouter une action"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Ajouter une pièce jointe ou une fonctionnalité"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Ajouter un profil Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Ajoutez des informations d'identification avant que ce fil puisse "
+"s'exécuter."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Ajouter un modèle"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Ajouter un motif"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Ajouter un profil"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Ajouter un projet"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Ajouter un projet"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Ajouter des options de projet"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Ajouter un dépôt distant"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Ajouter au compositeur"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Ajouter aux favoris"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Agent ({subagent}) : {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Chat d'agent (ACP / markdown). Les lignes de commande utilisent cette "
+"taille moins 1 px ; les lignes d'outil et de plan moins 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "L'agent a rencontré une erreur."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "L'agent est actif et prêt"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "L'agent est actuellement désactivé"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Agent introuvable"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Registre des agents"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Taille de la police du terminal de l'agent"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Mise à jour de l'agent disponible"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Agent : {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Agent : {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Agents"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Agents · Général"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "IA"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Orchestrateur d'agents IA : gérez les agents de codage via Terminal et "
+"Native ACP."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Actions git IA"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Tous les comptes"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Tous les appareils"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Tous les niveaux d'effort"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Tous les fichiers"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Autoriser"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Autoriser les agents à lire/écrire les cookies et le stockage"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Autoriser l'évaluation"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Toujours"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Toujours exclu"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Un autre chat utilise ce même arbre. La restauration de fichiers "
+"pourrait écraser les modifications apportées à cette discussion."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Navigateur d'applications"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Apparence"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Mode d'apparence"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Appliquer le préréglage de fournisseur"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Approbation ou réponse requise de votre part."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Approuver"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "approuvé"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Approuvé"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Archiver"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Archiver {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Archiver tout"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Archiver le fil de discussion"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Discussions archivées"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Êtes-vous sûr de vouloir rétablir <0>{0}0> ? Cela ne peut pas être "
+"annulé."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Êtes-vous sûr de vouloir rétablir <0>{path}0> ? Cela ne peut pas être "
+"annulé."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Êtes-vous sûr de vouloir annuler toutes les modifications non indexées "
+"? Cela ne peut pas être annulé."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Posez n'importe quelle question à {0} à propos de cet espace de travail"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Demander à chaque fois"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Poser une question"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Joindre"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Joindre des fichiers"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Attacher au fil"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Attacher le dock todo au compositeur"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Sélection du navigateur ci-jointe."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Audio"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Authentification"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Authentification requise"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Automatique"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Approuver automatiquement"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Archiver automatiquement les discussions terminées après"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Archiver automatiquement les discussions terminées après (jours)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Générer automatiquement"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Actualisation automatique (minutes)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Intervalle de rafraîchissement automatique en minutes, 0 pour "
+"désactiver"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Révision automatique"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Afficher automatiquement le panneau de terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Afficher automatiquement le panneau de terminal lors de l'exécution de "
+"commandes ou de la création de worktrees."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "disponible"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Agents ACP disponibles"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Couleur de l'avatar"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Couleur de l'avatar {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Retour"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Le processus en arrière-plan s'est arrêté de manière inattendue"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Le processus en arrière-plan n'est pas en cours d'exécution"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Processus en arrière-plan redémarré"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Tâches en arrière-plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "La branche de base est en avance — la branche doit être mise à jour en "
+"premier."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Taille de police de base pour les terminaux d'agent. Se réduit "
+"automatiquement dans les volets étroits ou courts."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Taille de police de base pour le panneau de terminal. Se réduit "
+"automatiquement dans les volets étroits ou courts."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Sortie Bash"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "De base (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Mieux (base Whisper)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Meilleures mises à jour de statut pendant l'exécution des agents."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Binaire"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Fichier binaire — aperçu indisponible."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Fichier binaire ou aucune différence disponible"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Les fichiers binaires ne peuvent pas être modifiés ici."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "bloqué :"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Gras"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "En bas"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "La branche '{branch}' a des modifications non validées dans '{path}' - "
+"validez-les ou cachez-les avant de les fusionner"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "La branche <0>{0}0> comporte des modifications non fusionnées :"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Branche pas complètement fusionnée"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Les règles de protection des branches ont bloqué cette fusion."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Branches"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Rechercher le dossier parent"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Parcourez vos référentiels GitHub ou collez une URL de clonage."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Navigateur"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Navigateur MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Navigateur MCP activé pour OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Navigateur MCP activé pour ce fil de discussion"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Menu du navigateur"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Cible de sélection du navigateur (fils CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Cible de sélection du navigateur pour les fils CLI"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Limite budgétaire atteinte"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Génération de la différence…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "par <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "par prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "par tokens"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Contourner les règles de protection des branches"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Contourner les règles de protection des branches (fusion des "
+"administrateurs)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Annuler"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Annuler le nouveau profil Claude"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Annuler la correction en attente"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Annuler le sélecteur"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "annulé"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Impossible de créer un chemin d'arbre de travail par défaut sans nom de "
+"branche"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Impossible de changer de branche : validez ou stockez d'abord vos "
+"modifications"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Changer d'utilisateur"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Journal des modifications"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Changements"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Modifications ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Modifications dans la PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Modifications demandées"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Canal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Chat"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Commandes de discussion"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Vérifier"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Vérifier les mises à jour"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Vérifiez le niveau d'entrée en direct de l'appareil sélectionné."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Vérification…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Vérifications"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Choisissez un dossier…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Choisissez comment vous connecter à {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Choisissez comment vous connecter."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Choisissez la langue d'affichage de l'interface de Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Choisissez le fil auquel attacher"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Choisissez si les liens de Lightcode et les fenêtres contextuelles du "
+"navigateur restent dans Lightcode ou s'ouvrent en externe."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Profil de Claude {0} enregistré."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Profil de Claude {displayName} ajouté."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Répertoire de configuration du profil Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Nom du profil Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Profil de Claude supprimé."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Script de nettoyage"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Effacer l'historique de navigation"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Vider le cache"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Effacer les cookies"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Effacer la recherche"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Hooks CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Cloner"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Cloner un dépôt"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "URL de clonage"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Clonage {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Clonage…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Fermer"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Fermer le terminal {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Fermer le navigateur"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Fermer l'éditeur"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Fermer l'onglet Éditeur"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Fermer l'objectif"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Fermer le groupe"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Fermer le volet"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Fermer le volet"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Fermer le plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Fermer la PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Fermer l'aperçu"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Fermer la recherche"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Fermer la division"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Fermer le sous-agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Fermer les sous-agents"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Fermer le panneau des sous-agents"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Fermer l'onglet"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Réduire dans la barre d'état système"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Fermer les détails d'utilisation"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Fermé"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Code copié."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Réduire"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Réduire {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Tout réduire"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Réduire tout"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Réduire tous les dossiers"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Réduire le compositeur"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Réduire l'erreur"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Réduire le compositeur du terminal"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Réduire le dock des tâches"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Commande"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Commande (par exemple, npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Commandes"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Commentaire"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Commentaire posté"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "commenté"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Valider et créer une PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Langue des commits et PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Valider et pousser"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Échec de la validation : {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Message de validation"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Message de validation (Ctrl+Entrée)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Génération de messages de validation"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Options de validation"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commits"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Compactage du contexte…"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Terminé"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Connectez-vous {0} avant que ce fil de discussion puisse s'exécuter."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Complétez la connexion {0} pour {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Connectez-vous {0} ou enregistrez les informations d'identification "
+"{1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Terminez la connexion {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Complétez les invites dans ce terminal. Se ferme une fois terminé."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "terminé"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Dossier de configuration"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Résolveur de conflits"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Conflits"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Console"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Contexte"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Contexte compacté"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Contexte compacté à partir de {before} jetons"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Contexte compacté : {before} → {after} jetons"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Extraction du contexte ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Contexte compacté manuellement à partir de {before} jetons"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Contexte compacté manuellement : {before} → {after} jetons"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Contexte transféré à {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Utilisation du contexte"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Continuer"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Continuer dans un autre fournisseur"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Continuez dans..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Contrôlez quels fichiers apparaissent dans la recherche de mention "
+"@file. Les remplacements par projet sont disponibles dans les "
+"paramètres de chaque projet."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Conversation"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Copié"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Copié dans le presse-papiers"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Copier"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Copier {0} le code de l'appareil {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Copier l'URL actuelle"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Copier les détails"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Copier les diagnostics"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Échec de la copie"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Copier les fichiers ignorés"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Copier l'image"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Copier le message"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Copier le chemin"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Copier le chemin relatif"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Copiez les modifications non validées ici (les conserve sur cette "
+"branche)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Impossible d'abandonner la fusion : {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Impossible de terminer la fusion"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Impossible d'extraire le contexte."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Impossible de générer le message de validation : {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Impossible de lire le fichier."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Impossible de cloner le référentiel."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Impossible de copier vos modifications non validées dans le nouvel "
+"arbre de travail : elles restent sur la branche actuelle."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Impossible de créer le projet."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Impossible de lister les référentiels."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Impossible de charger vos statistiques de profil."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Créer un brouillon de PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Créer un fichier"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Créer une nouvelle branche"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Créer une nouvelle branche..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Créer une PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Créer une PR (Auto)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Action Créer une PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Créer une PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Créer un projet"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Créer une pull request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Créer une tâche"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Créer :"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Arbre de travail créé sur \"{newBranch}\", mais les modifications sont "
+"entrées en conflit et restent dans un stash git — résolvez-les dans "
+"l'arbre de travail."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Les informations d'identification sont configurées."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Crédits"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "série actuelle"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Série actuelle"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Personnalisé"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Commandes personnalisées disponibles dans le menu contextuel du projet "
+"(clic droit)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Sombre"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Refuser"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Par défaut"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Action Créer une PR par défaut"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Nouveau fil de discussion par défaut"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Autorisations par défaut"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Suppression du fil par défaut"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Supprimer"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Supprimer {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Supprimer la branche ?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Supprimer le fichier"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Supprimer définitivement"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Supprimer le fil de discussion"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Supprimer le fil de discussion"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Supprimer le fil ?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Supprimer la tâche"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Supprimer l'arbre de travail"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Supprimer l'arbre de travail {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Supprimer :"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Suppression"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Refuser"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Refuser et dire à l’agent quoi faire différemment…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Descriptif"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Description (facultatif)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Détecté <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Détecté <0>(local)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Détecté <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Détection des agents…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Développeur"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Remplacements réservés au développement. Visible uniquement dans la "
+"version LIGHTCODE DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Appareil utilisé par le bouton de saisie vocale du composeur."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Désactiver"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Désactiver l'effort {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Désactiver le MCP du navigateur"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Désactiver le plugin de hook CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Désactiver le projet"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Désactivez les niveaux qu'un fournisseur externe regroupe (par ex. ne "
+"garder que High et Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Abandonner les modifications non enregistrées dans {path} ?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Abandonner les modifications non enregistrées de l'éditeur ?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Détection des agents de codage…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Rejeter"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Ignorer l'erreur"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "examen rejeté"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Afficher le nom dans la barre latérale."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Docs"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Ne plus demander"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Ne pas afficher la proposition d'installation du hook"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "fait"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Terminé"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Terminé · En attente de votre saisie"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Télécharger l'image"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Téléchargement dans « {0} ». Cela peut prendre un certain temps pour "
+"les grands dépôts."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Téléchargement du modèle vocal {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Téléchargement du modèle vocal..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Téléchargement{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Téléchargement de {versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Brouillon"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Faites glisser pour réorganiser la manière dont les fournisseurs "
+"apparaissent dans le sélecteur de modèles."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Faites glisser pour réorganiser ; double-cliquez pour modifier"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Déposez ici pour joindre"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Supprime les enveloppes de hook entrantes sur le superviseur afin que "
+"les agents reviennent à L2 (progression OSC 9;4) sans toucher aux "
+"notifications d'installation ou iTerm2. Prend effet au prochain "
+"événement hook – aucun redémarrage n’est nécessaire."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "par ex. Travail"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Modifier"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Modifier le fichier"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Modifier le profil"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Modifier :"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Éditeur"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "Éditeur LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Onglets de l'éditeur"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Effort et contexte"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Niveaux d'effort"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Électron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Activer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Activer l'effort {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Activez la prise en charge du serveur de langage pour la vérification "
+"de type, la complétion et les diagnostics. Nécessite l'installation "
+"d'un serveur de langage."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Activez l'accès au microphone dans les paramètres de votre système, "
+"puis réessayez."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Activer les notifications"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Activer le projet"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Activer les fournisseurs dans les paramètres"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Activé"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Active les <0>cookies0> et le <1>stockage1>. Les cookies peuvent "
+"contenir des jetons de session et le stockage contient souvent un état "
+"d'authentification : activez-le uniquement lorsque vous faites "
+"confiance à la fois à l'agent et aux sites qu'il visite."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Amélioré (hooks)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Entrez une URL de dépôt."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Passer en mode Planification"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Environnement"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Nom de la variable d'environnement"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Valeur de la variable d'environnement"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Variables d'environnement"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "erreur"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Erreur"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Erreur · L'agent a rencontré une erreur"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Exclure les motifs"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Quitter le mode Planification"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Quitté avec le code {0}. Fermez pour réessayer."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Développer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Développer {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Tout développer"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Développer l'erreur"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Développer le dock de tâches"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Externe"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Fournisseur externe"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Très élevé"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Extraction du contexte depuis {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "échoué"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Échec de la fermeture de la pull request : {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Échec de la création de la pull request : {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Échec du chargement des statistiques de profil."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Échec de la fusion de la pull request : {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Rapide"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Mode rapide"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Le plus rapide (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "Le plus rapide utilise Whisper tiny ; Meilleur utilise Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Favoris"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Récupérer"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Fichier"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Les modifications de fichiers apparaîtront ici."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Le fichier est trop volumineux pour être prévisualisé."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Le fichier n'existe plus sur le disque."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Fichier trop volumineux pour être affiché ({0, plural, one {# ligne "
+"modifiée} other {# lignes modifiées}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Le fichier utilise un encodage non pris en charge."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Fichiers"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Fichiers pour {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Les fichiers correspondant à ces globs sont masqués dans la recherche "
+"de mention @file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Terminez votre revue"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Terminé"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Terminé · En attente de votre saisie"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Intégration CLI Antigravity de première classe utilisant le runtime "
+"natif de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Intégration Claude Code de première classe à l'aide du runtime SDK "
+"natif de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Intégration CLI Codex de première classe à l'aide du runtime de serveur "
+"d'applications natif de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Intégration CLI Command Code de première classe à l’aide du runtime "
+"natif de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Intégration CLI Grok Build de première classe à l'aide du runtime natif "
+"de Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Intégration OpenCode de première classe à l'aide du runtime SDK natif "
+"de Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Correction dans l'agent"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Nom du dossier"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Forcer la suppression"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Forcer la suppression ? Les modifications non fusionnées seront "
+"perdues."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Formater les fichiers"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Suivant"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Session {0} connectée trouvée."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Givre la barre latérale avec le flou système (vibrancy), à la manière "
+"des versions récentes de macOS. Bascule sur une teinte translucide là "
+"où ce n'est pas pris en charge."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Givrage de la barre latérale en mode {appearance} par-dessus le flou "
+"système. Plus élevé conserve la couleur du thème ; plus bas laisse "
+"davantage transparaître l'arrière-plan."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Accès complet"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Superposition plein écran"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Général"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Générer un message de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Générer un résumé de la PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Générer avec l'IA"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Image générée"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Génère des messages de commit à partir des modifications indexées."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Génère des titres courts pour les nouveaux fils de discussion."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Obtenir la tâche"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Échec de Git {command} : {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Revue Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Mode de révision Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Statut Git pour {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Statut Git pour {0} : pas un dépôt Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Dépôt GitHub"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Fichiers Gitignorés à copier du projet principal dans chaque nouvel "
+"arbre de travail. Modèles de style Gitignore, un par ligne (par "
+"exemple, <0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (libellé optionnel)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Objectif"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Objectifs définis"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Groupe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Grouper les discussions ouvertes"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Taille de la police de discussion de l'interface graphique"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "identifiant"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Identifiant"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Rechargement forcé"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Les fils de discussion masqués pouvant être repris sont nettoyés toutes "
+"les 5 minutes et déchargés après cette période d'inactivité."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Masquer"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Tout cacher"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Masquer le navigateur"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Masquer l'inspecteur d'éléments d'exécution canonique"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Masquer les détails d'utilisation du contexte"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Masquez les modèles que vous n’utilisez pas dans le sélecteur de "
+"modèles de chaque fournisseur."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Masquer le panneau"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Masquer le panneau de débogage d'exécution"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Masquer la barre latérale"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Masquer le terminal"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Accueil"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Portée utilisateur"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "Identifiant : {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Inactif"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Image"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Aperçu de l'image"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Inactif"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "hérité"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Hérité du paramètre global (actuellement {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Initialiser le dépôt"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Niveau d'entrée"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Inspecter les éléments d'exécution canoniques"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "installer"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Installer"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Installez {0} pour {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Installez {0} pour créer un fil de discussion."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Installez {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Installer {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Installer les hooks CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Installer dans WSL : {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Installez d'abord les fournisseurs natifs ; utilisez ACP pour les "
+"agents de protocole supplémentaires."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Installer sous Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Installer des packages"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Installer la mise à jour"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Installer v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Installer v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Installé"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Installation"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Installation dans ce terminal. Se ferme une fois terminé."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Interrompu : la session de l'agent s'est terminée avant la fin."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Italique"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "juste maintenant"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Garder la branche"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Gardez le système éveillé pendant qu'un thread fonctionne activement."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Arrêter bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Langue"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Langue des messages de commit et des résumés de pull request générés "
+"par l'IA. Les titres des fils de discussion suivent toujours la langue "
+"de l'application."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Langue que le modèle vocal doit attendre lors de la transcription de la "
+"dictée dans le composeur."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Dernier outil : <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Lancer le fil de discussion"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Lancement…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Laisser un commentaire"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Moins"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Permet aux agents d'appeler <0>eval0> pour exécuter du JavaScript "
+"arbitraire dans la page intégrée. Désactivé par défaut : activez-le "
+"uniquement lorsque vous faites confiance aux sites chargés et à "
+"l'agent."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Licence"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "tokens cumulés"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Tokens cumulés"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Clair"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Liste"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Liste des packages"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Liste des tâches"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Chargement"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Chargement des comptes…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Chargement du diff..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Chargement de l'éditeur…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Chargement du fichier…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Chargement des notes…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Chargement de la PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Chargement du registre..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Chargement…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "local"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Local"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Les modifications locales doivent être mises de côté (stash) avant de "
+"récupérer depuis {branch}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Emplacement"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Connexion"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Déconnexion"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "se connecter"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Se connecter"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Connexion {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Connexion requise"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Déconnexion"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Déconnexion {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "plus longue série"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Plus longue série"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Tâche la plus longue"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Rend la barre latérale translucide — le flou système sur Windows 11, "
+"une teinte translucide ailleurs."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Ordre manuel"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Marquer tout comme terminé"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Marquer comme terminé"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Marquer comme non terminé"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Marquer comme terminé"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Marquer terminé"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Suivre la langue de l'application"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Suivez votre système, ou forcez le thème clair ou sombre."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Maximiser"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Maximiser le navigateur"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Serveurs MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Fusionner et supprimer"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Les conflits de fusion doivent être résolus."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "La fusion a échoué"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "La fusion a des conflits"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "La fusion présente des conflits :{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Fusionner localement et supprimer Worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Méthode de fusion"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Options de fusion"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Fusionner la PR : Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Fusionner PR : Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Fusionner la PR : Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Fusionner avec la source"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Fusionner le worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Fusionné"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "La fusion est bloquée"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Messages envoyés"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Microphone"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Micro {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "L'accès au microphone est désactivé."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Niveau d'entrée du microphone"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "L'autorisation du microphone a été refusée."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Les tests de microphone ne sont pas disponibles dans cet environnement."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Réduire le navigateur dans le panneau de droite"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Réduire au panneau"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Mode"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "ID du modèle"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Libellé du modèle"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Ordre des modèles"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Utilisation des modèles"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Modèles"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Modes"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Plus"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Plus d'options d'approbation"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Plus d'options de validation"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Plus d'actions PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Plus d'options PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Plus d'options de pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Plus d'options de synchronisation"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Heure la plus active"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Plugins les plus utilisés"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Fournisseur le plus utilisé"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Raisonnement le plus utilisé"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Déplacer"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Déplacer les modifications vers un nouvel arbre de travail"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Déplacer le dock Todo vers le panneau de droite"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Vos modifications ont été déplacées vers un nouveau worktree sur "
+"\"{newBranch}\". \"{currentBranch}\" est désormais propre."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Déplacement des modifications…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Nom"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Nommez votre projet et choisissez où le créer."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Natif"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Fournisseurs natifs"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Prise en charge native"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "A besoin d'approbation"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "A besoin d'attention"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "A besoin d'attention · Approbation requise"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "A besoin d'attention · Réponse requise"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Besoin d'une réponse"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Nouvelle commande d'action"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Nouveau nom d'action"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Nouveau nom de branche..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Nouveau répertoire de configuration du profil Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Nouveau nom de profil Claude"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Nouveau fichier"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Nouveau dossier"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Nouveau projet"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Nouvel onglet"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Nouveau fil de discussion"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Nouveau fil de discussion"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Nouveau fil de discussion — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Nouveau fil de discussion (brouillon)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Nouveau fil de cette tâche"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Nouveau fil de discussion dans le worktree"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Nouvel arbre de travail"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Image suivante"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Aucun onglet de navigateur actif"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Aucune session active"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Aucune activité pour l'instant."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Aucun profil Claude supplémentaire."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Aucun agent disponible pour générer un résumé de PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "Aucun agent dans cette phase."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Aucun agent installé pour le moment"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Aucun agent installé."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Aucun commit IA, PR ou résolution de conflit suivi pour l'instant."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Aucun fil de discussion archivé."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Aucune branche trouvée"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Aucun onglet de navigateur ouvert"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Aucun changement"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Aucun changement à afficher"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Aucun contrôle signalé pour cette PR."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Aucune commande trouvée"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Aucun commit trouvé."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Aucun flux de contenu."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Aucune conversation pour l'instant. Soyez le premier à commenter."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Aucune donnée pour l'instant"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Aucune donnée pour l'instant."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Pas de description"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Aucune différence disponible pour {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Aucune différence pour {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Aucun point de contrôle de fichier n'est stocké pour ce message."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Aucun fichier ne correspond à \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Aucun compte GitHub CLI trouvé. Connectez-vous avec <0>gh auth "
+"login0> ou <1>collez une URL de clonage1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Aucune correspondance pour « {query} »."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Aucune correspondance."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Aucun agent correspondant."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Aucun fil correspondant"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Aucun outil MCP utilisé pour l'instant."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Pas encore de messages"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Aucun microphone trouvé."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Aucun modèle trouvé"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Aucun autre agent installé"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Aucun motif."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Aucune phase pour l'instant."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Aucune invite"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Aucun fournisseur n'est suivi."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Aucun fournisseur n'est prêt pour l'instant"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Aucun dépôt distant configuré. Ajoutez un dépôt distant pour activer le "
+"push et le pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Aucun dépôt trouvé."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Aucun élément d'exécution pour ce fil pour l'instant."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Aucune compétence utilisée pour l'instant."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Aucune parole détectée."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Aucune modification indexée"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Aucun sous-agent utilisé pour l'instant."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Aucun agent pris en charge détecté"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Aucun fil de discussion"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Aucun fil pour l'instant."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Aucune fenêtre signalée"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Aucun arbre de travail"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Pas de retour à la ligne"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Aucun"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Pas un dépôt git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Pas un dépôt Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Pas trouvé"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Non installé"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Non démarré"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Non connecté"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Non pris en charge"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Remarques"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Rien de suivi pour l'instant. Cela apparaîtra ici au fil de votre "
+"utilisation."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Notifications"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Notifier pour les fils de discussion CLI L2"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "M'avertir de"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "Désactivé"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Plus ancien"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "sur"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Uniquement lorsque la fenêtre n'est pas active"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Ouvrir"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Ouvrir {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Ouvrir un terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Ouvrez d'abord un fil de discussion pour vous y attacher."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Tout ouvrir"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Ouvrir tout en groupe"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Ouvrir en tant que page"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Ouvrir en tant que panneau"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Ouvrir le navigateur"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Ouvrir la vérification"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Ouvrir la palette de commandes"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Ouvrir le commit sur GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Ouvrir le résolveur de conflits dans"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Ouvrir la boîte de dialogue"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Ouvrir le fichier"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Ouvrir des fichiers"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Ouvrir en plein écran"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Ouvrir le panneau Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Ouvrir la revue Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Ouvrez git review sous forme de panneau de droite ou de page complète."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Ouvrir l'aperçu de l'image"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Ouvrir dans l'éditeur"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Ouvrir les liens dans"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Ouvrir un nouvel onglet"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Ouvrez les nouveaux fils de discussion sous forme de page entière ou de "
+"panneau côte à côte."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Ouvrir le PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Ouvrir la PR sur GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Ouvrir l'aperçu"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Ouvrir les paramètres du projet"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Ouvrir les requêtes"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Ouvrir l'URL requise"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Ouvrir les paramètres"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Ouvrir les paramètres"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Ouvrir le sous-agent : {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Ouvrir le sélecteur d'effort"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Ouvrir le sélecteur de modèle"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "{0} ouvert (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Hooks d’état facultatifs. Les hooks installés se mettent à jour "
+"automatiquement ; les hooks manquants ne sont jamais installés "
+"automatiquement."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Options"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Ou écrivez une réponse personnalisée"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Résultat"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Rythme trop rapide — épuisé trop tôt"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Remplacez les valeurs par défaut de Claude — par ex. ANTHROPIC_BASE_URL "
+"et ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Remplacement du paramètre global pour ce projet."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Configuration du paquet"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Gestionnaire de paquets"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Page"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Panneau"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Coller"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Collez <0>{0}0> ici. Cliquez pour copier."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Coller en entrée"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "En pause"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "jour de pointe"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Jour de pointe"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "en attente"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "en attente d'examen"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "En attente de direction"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "autorisation"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Choisir un élément"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Choisir une icône"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Échec du sélecteur"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Le sélecteur n'a renvoyé aucune pièce jointe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Épingler en haut"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Épinglé"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Émettre un son lorsqu'une notification est affichée."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Lire le son des notifications"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Dirigez ce profil vers un fournisseur non-Anthropic (z.ai, …) avec des "
+"variables d'environnement, des noms de modèles et des niveaux d'effort "
+"personnalisés."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Thèmes d'éditeur populaires adaptés à Lightcode. Chacun suit le mode "
+"clair ou sombre ci-dessus."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "Actions de la PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Options de la PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Revue de PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "Sections de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Titre du PR (laisser vide pour générer automatiquement)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Échec du hook de pré-validation"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Préréglages"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Empêcher la mise en veille pendant le travail"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Aperçu {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Image précédente"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Profil"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Profils"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Projet"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Nom du projet"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Notes de projet"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Paramètres du projet"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Remplacements spécifiques au projet en plus des paramètres de recherche "
+"globaux."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Invite"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompts"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Plan proposé"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "fournisseur"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Fournisseur"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Le fournisseur n'a pas signalé l'utilisation des jetons."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Préréglages de fournisseur"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "fournisseurs"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Fournisseurs"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Tirer ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Tirer ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Tirer ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Le pull n'a pas été effectué. Vos modifications locales restent dans un "
+"stash Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Échec du pull : {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Tirer de {0} ?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Tirer de {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Tirer de la source ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Tirer Rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Options de demande de tirage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Échec du push : {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Questions"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Quota atteint"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Épuisé"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Épuisé · se réinitialise dans {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Débit limité"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Débit limité. Réessayez sous peu."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "La réapplication des modifications locales entraîne des conflits"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Reconnectez-vous"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Prêt"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Prêt pour l'examen"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Raisonnement"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Récent"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Fils de discussion récents"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Reconstruit à partir de journaux locaux aux tarifs de l'API publique, "
+"il ne reflète pas votre facture réelle sur les plans d'abonnement. "
+"Affiché uniquement dans le panneau d'utilisation."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Actualiser"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Actualiser l'authentification {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Actualiser les agents détectés"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Actualiser le registre"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Actualisez l'utilisation en arrière-plan toutes les N minutes. Réglez "
+"sur 0 pour éteindre (manuel uniquement). Le plancher de 2 minutes "
+"respecte les limites tarifaires du fournisseur."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Actualisation du statut d'authentification {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Actualisation du statut d'authentification {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Recharger"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "À distance"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Nom distant"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "URL distante"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Supprimer"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Supprimer {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Supprimer {0} du panneau"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Supprimer {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Supprimer l'action"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Supprimer le profil de Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Supprimer la variable d'environnement"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Supprimer des favoris"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Supprimer du groupe"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Supprimer du panneau"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Supprimer le modèle"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Supprimer le projet"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Supprimer le worktree ?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Renommer"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Renommer le groupe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Renommer le fil de discussion"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Le moteur de rendu a planté"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Le moteur de rendu a échoué au démarrage"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Le moteur de rendu a rencontré une erreur React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Le moteur de rendu a rencontré une erreur non détectée"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Le moteur de rendu a rencontré un rejet de promesse non géré"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Réorganiser {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Réorganiser {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Signaler un problème"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "dépôt"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Dépôt"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Le hook de pré-réception du dépôt bloque la fusion."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "URL du dépôt"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Demander des modifications"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Détails de la requête"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "modifications demandées"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Les avis, conversations ou vérifications de statut requis ne sont pas "
+"satisfaits."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "réinitialiser"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Réinitialiser l'ordre des modèles"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Réinitialiser le givrage de la barre latérale"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Réinitialiser par défaut"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Redimensionner le tiroir du navigateur"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Redimensionner la colonne"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Redimensionner le panneau git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Redimensionner les notes et les tâches"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Redimensionner la ligne"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Redimensionner la barre latérale"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Redimensionner la division"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Redimensionner le panneau de terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Résout les conflits de fusion lors du rebase ou de la fusion."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Restaurer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Restaurer le navigateur"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Restaurer le fil"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Réessayer en tant qu'administrateur"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Revenir à l'application"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Révéler dans l'explorateur de fichiers"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Révéler dans l'arborescence des fichiers"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Annuler"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Tout rétablir"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Annuler toutes les modifications"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Annuler les modifications"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Revenir au point de contrôle ?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Revenir à ce point de contrôle"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Examiner les modifications"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Commentaire de révision"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Décision de révision"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Révision sur demande"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Examiner la PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Examiner la PR #{prNumber} pour {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "À droite"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Panneau droit"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Exécuter"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Exécuter {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Exécuter {0} avant que ce fil puisse s'exécuter."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Exécutez {loginCommand} pour vous connecter."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Exécuter la commande"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Exécuter dans un arbre de travail séparé"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Exécutez la transcription locale sur le GPU lorsqu'elle est disponible."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Exécuter la commande du terminal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "en cours d'exécution"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "S'exécute avant la suppression d'un arbre de travail (par exemple, "
+"<0>rm -rf node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "S'exécute dans un terminal après la création d'un nouvel arbre de "
+"travail (par exemple, <0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "S'épuise tôt"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "S'épuise dans {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Durée d'exécution"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Débogage d'exécution"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Options d'exécution"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Enregistrer"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Enregistrer les informations d'identification {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Enregistrer le profil de Claude"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Enregistrer le fichier"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Les informations d'identification enregistrées sont partagées dans tous "
+"les environnements."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Analyse de {wslDistro} pour les CLI installées. Cela prend généralement "
+"quelques secondes."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Analyse de Windows et WSL pour les CLI installées. Cela prend "
+"généralement quelques secondes."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Analyse de votre système pour les CLI installées. Cela prend "
+"généralement quelques secondes."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Scripts"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Multiplicateur de vitesse de défilement pour le tampon de défilement du "
+"terminal."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Faire défiler vers le bas"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Rechercher"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Rechercher des agents"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Rechercher des agents..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Rechercher des branches..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Rechercher des fichiers"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Rechercher des modèles"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Rechercher des modèles..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Rechercher ou saisir une adresse"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Rechercher des dépôts"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Rechercher des dépôts…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Rechercher des éléments d'exécution…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Rechercher des fils"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Rechercher des fils"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Rechercher…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Recherche..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Recherche…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Voir plus"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Sélectionnez"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Sélectionnez un fichier dans l'arborescence"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Sélectionnez un fichier pour commencer l'édition."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Sélectionnez un dépôt."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Sélectionnez un compte"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Sélectionnez un agent pour voir son invite et son résultat."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Sélectionner une branche"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Sélectionner un appareil"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Sélectionnez le modèle"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Sélectionnez un projet"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Envoyer un message..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Envoyer un message"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Sélection envoyée au terminal."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Séparez les comptes Claude Code par dossier de configuration, ou "
+"dirigez un profil vers un fournisseur externe (z.ai, …). Ouvrez un "
+"profil pour configurer ses variables d'environnement, ses modèles et "
+"son effort."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Définir ou afficher un objectif expérimental"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Paramètres"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Script de configuration"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Partager"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Partagez votre activité"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Afficher un anneau d'utilisation compact par fournisseur dans la barre "
+"latérale."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Afficher une portée Accueil sans projet pour les sessions d'agent au "
+"niveau du système d'exploitation."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Afficher tout"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Afficher la barre de favoris"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Afficher les cercles dans la barre latérale"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Afficher le compositeur"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Afficher les détails d'utilisation du contexte"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Afficher le coût estimé"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Afficher dans l'explorateur de fichiers"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Afficher moins"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Afficher plus"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Afficher les notifications"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Afficher les notifications lorsque l'état du fil change."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Ouvrir les liens dans"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Afficher l'aperçu"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Afficher le panneau de débogage d'exécution"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Afficher la barre latérale"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Afficher la source"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Afficher le bouton du microphone dans le compositeur."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Afficher le bouton de saisie vocale"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Givrage de la barre latérale"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Connectez-vous"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Connexion nécessaire"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Connexion requise"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Connectez-vous avec l’agent CLI."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Déconnexion {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Connecté"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Connexion"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Connexion…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Déconnexion {env}. Les agents détectés seront actualisés une fois "
+"l'opération terminée."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Déconnexion. Les agents détectés seront actualisés une fois l'opération "
+"terminée."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Compétence :{skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Compétences"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Compétences explorées"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Certaines vérifications échouent ou sont en attente."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Trier par date de création"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Trier par dernière mise à jour"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Trier les fils"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Diviser le terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Vue fractionnée"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Indexer"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Tout indexer"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "indexé"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Indexé"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Indexé ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Commencer"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Lancez {appName} pour voir l'utilisation"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Démarrer un nouveau fil de discussion à partir du texte sélectionné"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Démarrer un nouveau fil de discussion à partir de cette tâche"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Repartir de zéro"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Démarrez le compositeur réduit dans les fils natifs du terminal. Un "
+"compositeur réduit achemine les éléments du navigateur directement vers "
+"le terminal."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Démarrer la saisie vocale"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Démarrer sans contexte"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Fil de discussion {targetLabel} démarré"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Démarrage"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Démarrage de la saisie vocale"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "démarrage…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Remiser et tirer (pull)"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "L'état est déduit de la sortie du terminal (L2). Installez le plugin "
+"hook dans les paramètres pour obtenir des mises à jour structurées."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "L'état est fourni par le protocole de contrôle d'agent (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Les mises à jour de statut proviennent du plugin CLI hook."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Statut :"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Arrêter"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Arrêter la réponse"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Arrêter la tâche"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Arrêter la saisie vocale"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Stocker en texte clair"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Stocker comme secret (chiffré au repos)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Sous-agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Sous-agent introuvable."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Résultat du sous-agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Sous-agents"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Soumettre"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Envoyez vos commentaires et approuvez la fusion de ces modifications."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Soumettez des commentaires qui doivent être traités avant la fusion."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Soumettez des commentaires sans approbation explicite."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Envoyer la révision"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Supervisé"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Le mode support apparaît une fois la session connectée."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Prise en charge :"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Basculer entre les notes et les tâches"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Changer de branche"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Changer de mode"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Changer de mode : {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Changer de projet"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Passer ce chat en mode agent"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Passer ce chat en mode plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Synchroniser"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Synchronisation (Rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Synchronisation ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Échec de la synchronisation : {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Options de synchronisation"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Synchronisé avec Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Système"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Navigateur système"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Valeur par défaut du système"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Prendre une capture d'écran"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Branche cible"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Fournisseur cible"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Résultat de la tâche"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Dites à {0} quoi faire ensuite..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Dites au fournisseur cible quoi faire ensuite..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Terminal pour {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Entrée du terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Terminal non prêt – sélection ajoutée au compositeur."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Taille de la police du panneau Terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Position du terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Vitesse de défilement du terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Onglets du terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Tester le micro"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "l'agent"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "l'application"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "le dossier choisi"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Le shell d'application normal n'a pas pu être rendu. Les diagnostics "
+"ci-dessous sont affichés avant le rechargement afin que la panne puisse "
+"être étudiée."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "le fournisseur cible"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Thème"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Réflexion"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Cet agent n'est pas installé."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "cet environnement"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Ce fichier est trop volumineux pour l'éditeur intégré."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Ce fichier utilise un encodage non pris en charge."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Cela supprime définitivement la branche \"{0}\" de son dépôt distant."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Cela supprime définitivement la branche \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Cela supprime les messages ultérieurs et restaure les fichiers "
+"lorsqu'un instantané de point de contrôle est disponible."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Cela supprime l'arbre de travail sur \"{0}\" et ferme {1, plural, one "
+"{# fil lié} other {# fils liés}}, puis supprime la branche."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Cela supprime l'arbre de travail sur \"{0}\", puis supprime la branche."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Ce fil de discussion utilise l'arbre de travail <0>{0}0>. Supprimer "
+"également le répertoire de l'arbre de travail ?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "Cet arbre de travail a des modifications locales. Lightcode peut les "
+"remiser temporairement, récupérer depuis {0}, puis réappliquer vos "
+"modifications."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Pensée"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Fil de discussion"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Fil de discussion + Arbre de travail"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Utilisation du contexte du fil de discussion"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Dock de discussion"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Le fil de discussion n'a pas pu démarrer."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Fil de discussion terminé ou en attente de votre saisie."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Dock d'objectif du fil"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Le fil est déjà déchargé."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Mode fil de discussion"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Fil de discussion uniquement"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Ordre de tri des fils de discussion"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Dock des tâches du fil"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Fils de discussion"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Les fils de discussion marqués comme terminés qui n'ont pas été "
+"modifiés depuis ce nombre de jours sont automatiquement archivés au "
+"lancement de l'application. Réglez sur 0 pour désactiver."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Génération de titre"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "À faire"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Activer/désactiver le mode rapide"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Désactivez les modèles pour les masquer du sélecteur."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Basculer le terminal"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokens"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokens de {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Recherche d'outils"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Total des prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Total des compétences utilisées"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Total des fils"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Suivre l'utilisation de {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Suivez l'utilisation de session, hebdomadaire et mensuelle par "
+"fournisseur. Les fenêtres (de réinitialisation) sont indiquées par "
+"chaque fournisseur ; le coût estimé est reconstruit à partir des "
+"journaux locaux."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Suivi désactivé"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Transcription de la voix"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Barre latérale translucide"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Activez ou désactivez le suivi par fournisseur. Les fournisseurs "
+"désactivés sont ignorés par l'actualisation automatique."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Tapez une commande"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Impossible d'authentifier {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Impossible de créer le répertoire d'arbre de travail WSL \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Impossible d'installer les hooks {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Impossible d'installer {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Impossible de déconnecter {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Impossible d'ouvrir la connexion {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Impossible d'ouvrir le fichier"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Impossible d'actualiser le statut {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Impossible d'actualiser {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Impossible d'actualiser les profils Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Impossible de supprimer les informations d'identification {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Impossible de supprimer l'arbre de travail."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Impossible de résoudre le répertoire personnel pour la distribution WSL "
+"\"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Impossible d'enregistrer les informations d'identification {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Impossible d'enregistrer le profil Claude {displayLabel}."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Impossible de démarrer {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Impossible de mettre à jour {0} ({envName}) : {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Impossible de mettre à jour {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Impossible de mettre à jour les hooks {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Impossible de mettre à jour {0} : {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Impossible de mettre à jour {0} : {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Impossible de mettre à jour {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Dissocier tout"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Vue unifiée"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Désinstaller"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Projet inconnu"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Illimité"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Décharger les fils de discussion inactifs après"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Décharger les fils de discussion inactifs après (minutes)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Décharger le fil de discussion"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Annuler le marquage terminé"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Décocher Terminé"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Sans phase :"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Désépingler"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Désindexer"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Tout désindexer"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "non indexé"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Non pris en charge"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Mise à jour"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Mettre à jour {0} vers {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Mise à jour disponible"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Mettre à jour la branche"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Erreur de mise à jour : {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Méthode de mise à jour"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Tâche de mise à jour"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Mise à jour vers {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Mise à jour vers {updateLabel} pour {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Mise à jour vers {updateLabel} pour {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Mise à jour vers v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Mise à jour vers v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Mettre à jour avec un commit de fusion"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Mettre à jour avec rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "{0} mis à jour"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Mise à jour"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Mise à jour de {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Mise à jour de {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Utilisation"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Utilisation non prise en charge"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Paramètres d'utilisation"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Utilisation inconnue"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Utiliser un dossier existant"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Utiliser la configuration"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Utiliser la session détectée ?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Utiliser les fichiers ignorés"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Utiliser la session"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Utilisez ce compte pour le suivi de l'utilisation ou modifiez les "
+"utilisateurs dans le navigateur avant de continuer."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Utiliser l'accélération WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Utilisé"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Utilisation de la liste de modèles Claude intégrée."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} disponible"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "valeur"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Version"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "via {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Voir"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Modèles {0} visibles"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Modèles visibles"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "La saisie vocale n'est pas disponible dans cet environnement."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Langue de saisie vocale"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Modèle de saisie vocale"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Attendez que le fil de discussion ait fini de démarrer."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "En attente de l'authentification {authEnv} {authMethodName}. Les agents "
+"détectés seront actualisés une fois l'opération terminée."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "En attente de l'authentification {authMethodName}. Les agents détectés "
+"seront actualisés une fois l'opération terminée."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "En attente de l'authentification {env} {methodName}. Les agents "
+"détectés seront actualisés une fois l'opération terminée."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "En attente de l'authentification {methodName}. Les agents détectés "
+"seront actualisés une fois l'opération terminée."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "en attente de l'arrêt de l'agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "En attente que le flux de travail génère des agents…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Se réveiller"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Se réveiller dans {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Se réveiller dans {interval} : {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Réveil : {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Préparation de l'environnement shell…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Préparation des environnements shell…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Préparation de l'environnement shell WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Recherche sur le Web"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Site Web"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Ce que fait le bouton Créer la PR par défaut : ouvrir une boîte de "
+"dialogue pour modifier d'abord le titre et la description, ou les "
+"générer automatiquement et créer la PR en un clic. Vous pouvez "
+"également changer cela depuis le menu du bouton."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Lorsqu'elle est activée, la recherche respecte les entrées "
+"<0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Lorsque les liens s'ouvrent dans un onglet du navigateur Lightcode, "
+"choisissez l'endroit où le navigateur est révélé."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Lorsqu'elle est désactivée, supprime les notifications des fils de "
+"discussion en terminal dont l'état provient de la solution de secours "
+"OSC (aucun plug-in de hook CLI)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Quand afficher les toasts dans l’application pour les fils de "
+"discussion visibles."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Lorsque vous fermez la fenêtre, laissez Lightcode s'exécuter dans la "
+"barre d'état système. Désactivez pour quitter à la fermeture."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Où aboutit une sélection du sélecteur d'éléments du navigateur dans les "
+"fils de discussion natifs du terminal. Un composeur réduit est toujours "
+"acheminé vers le terminal."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Par où voulez-vous commencer ?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Où le panneau du terminal apparaît."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "S'exécutera dans {0} :"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Fenêtres"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows n'est pas encore pris en charge. Installez dans WSL ou sur "
+"macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Travail"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Travailler dans la copie de travail actuelle"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "A travaillé pendant {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Flux de travail"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Flux de travail terminé. Les agents enfants ont été exécutés dans le "
+"cadre d'un processus distinct et ne sont pas encore diffusés ici."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Le workflow s'exécute en arrière-plan. Les agents enfants s'exécutent "
+"dans un processus distinct et ne sont pas encore diffusés ici."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Phases du flux de travail"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Résultats du flux de travail"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Flux de travail : {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Flux de travail"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "En cours"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "En cours depuis {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Arbre de travail propre"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "En cours…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Arbre de travail"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Arbre de travail + modifications"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Mode arbre de travail"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Arbre de travail : {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Arbres de travail"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Retour à la ligne automatique"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Écrivez un commentaire"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Écrivez un commentaire…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Écrivez des notes pour ce projet…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Votre nom"
diff --git a/src/renderer/locales/ja/messages.po b/src/renderer/locales/ja/messages.po
new file mode 100644
index 00000000..d85900f5
--- /dev/null
+++ b/src/renderer/locales/ja/messages.po
@@ -0,0 +1,5980 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: ja\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(案)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(メッセージはありません)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {#ファイル} other {#ファイル}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {#プロバイダーの準備ができています} other {#プロバイダーの準備ができています}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {ターゲット} other {ターゲット}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other "
+"{#他のチャットはこれと同じツリーを使用します。ファイルを復元すると変更が上書きされる可能性があります。}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — コンポーザー"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — ターミナル"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0}({envName}) はすでに最新です。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0}({envName}) は v{newVersion}に更新されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0}({envName}) が更新されました。"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0}が認証されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "{0}資格情報が削除されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0}資格情報が保存されました。"
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0}台のデバイス"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{0}フックが{envName}用にインストールされました。"
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0}フックがインストールされました。"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{envName}の{0}フックが削除されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0}インストールターゲット"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0}はすでに最新です。"
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0}制限"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0}がログアウトしました。"
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0}には認証が必要です。"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0}件のプロンプト - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0}件のプロンプト - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0}回の実行"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0}回の実行"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0}トークン"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0}トークン - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0}が v{1}に更新されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0}が v{latestRegistryVersion}に更新されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0}が v{newVersion}に更新されました。"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0}が v{resolvedLatest}に更新されました。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0}が更新されました。"
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0}が使用されました"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% 使用"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0}か月前"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}:{statusLabel}。マウスを移動するとステータスの詳細が表示されます。"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days}日"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days}日"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days}日前"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel}には認証が必要です。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount}/{totalCount}が一致"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head}または{tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "{heading}モード"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "{hook}フックが失敗しました"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours}時間前"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {#エージェントの準備ができています} other "
+"{#エージェントの準備ができています}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label}使用量 — 使用量パネルを開く"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel}{0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel}{0}{env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel}{env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel}コンテキスト"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes}分前"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel}には認証が必要です。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}ワークツリーのクリーンアップも失敗しました:{cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% 使用"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation}(無効)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "{projectName}設定"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {#件オープン} other {#件オープン}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {#結果} other {#結果}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds}秒前"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used}トークン"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget}トークン"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel}/{maxLabel}トークン"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel}トークン"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount}/{totalCount}が表示されます"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "©{currentYear}セルヒイ・ヴェチェレンコ。無断転載を禁じます。"
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> 件の{0}チェックに合格しました"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens}·{0}· 推定。"
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% (リセットまでに)"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "サポートされているコーディング エージェント"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "マージの中止"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "バージョン情報"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "両方の変更を受け入れる"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "現在の変更を受け入れる"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "受信した変更を受け入れる"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "アカウント"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "アカウントオプション"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "アカウント"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "ACPエージェント"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "アクションコマンド"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "サイドバー スレッドのクイック削除ボタンのアクション。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "アクション名"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "アクション"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "アクティブ"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "アクティビティ"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "アクティビティの分析"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "アクティビティ指標"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "追加"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "エージェントをインストールする前にプロジェクトを追加します。"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "サインインする前にプロジェクトを追加してください。"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "開始するプロジェクトを追加してください"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "ToDoを追加…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "アクションの追加"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "アタッチメントまたは機能を追加する"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Claude プロファイルを追加"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "このスレッドを実行する前に認証情報を追加してください。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "モデルを追加"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "パターンを追加する"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "プロフィールを追加"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "プロジェクトの追加"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "プロジェクトの追加"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "プロジェクトオプションを追加する"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "リモートの追加"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "コンポーザーに追加"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "お気に入りに追加"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "エージェント"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "エージェント ({subagent}):{description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "エージェントチャット (ACP / マークダウン)。コマンド行はこのサイズから 1 px 小さく、ツール行とプラン行は 2 px "
+"小さくなります。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "エージェントでエラーが発生しました。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "エージェントはアクティブで準備完了です"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "エージェントは現在無効になっています"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "エージェントが見つかりません"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "エージェントレジストリ"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "エージェント端末のフォントサイズ"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "エージェントのアップデートが利用可能"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "エージェント:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "エージェント:{subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "エージェント"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "エージェント · 一般"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "AI エージェント オーケストレーター — ターミナルおよびネイティブ ACP 経由でコーディング エージェントを管理します。"
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "AIによるgit操作"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "すべてのアカウント"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "すべてのデバイス"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "すべての推論レベル"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "すべてのファイル"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "許可する"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "エージェントに Cookie とストレージの読み取り/書き込みを許可する"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "評価を許可する"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "いつも"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "常に除外される"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "別のチャットはこれと同じツリーを使用します。ファイルを復元すると、チャットの変更が上書きされる可能性があります。"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "アプリブラウザ"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "外観"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "外観モード"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "プロバイダープリセットを適用"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "あなたからの承認または返信が必要です。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "承認する"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "承認された"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "承認済み"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "アーカイブ"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "アーカイブ{0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "すべてをアーカイブする"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "アーカイブスレッド"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "アーカイブされたスレッド"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "<0>{0}0> を元に戻してもよろしいですか?これを元に戻すことはできません。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "<0>{path}0> を元に戻してもよろしいですか?これを元に戻すことはできません。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "ステージングされていない変更をすべて元に戻してもよろしいですか?これを元に戻すことはできません。"
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "このワークスペースについて{0}に何でも質問してください"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "毎回尋ねる"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "質問する"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "添付する"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "ファイルを添付する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "スレッドに添付"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "todo ドックをコンポーザーにアタッチする"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "ブラウザの選択範囲を添付しました。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "オーディオ"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "認証"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "認証が必要です"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "自動"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "自動承認"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "完了したスレッドを自動アーカイブする"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "(日)後に完了したスレッドを自動アーカイブします"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "自動生成"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "自動更新 (分)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "自動更新間隔 (分単位)、オフにする場合は 0"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "自動レビュー"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "端末パネルの自動表示"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "コマンドの実行時またはワークツリーの作成時に、端末パネルを自動的に表示します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "利用可能"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "利用可能なACPエージェント"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "アバターの色"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "アバターの色:{color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "戻る"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "バックグラウンドプロセスが予期せず終了しました"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "バックグラウンドプロセスが実行されていません"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "バックグラウンドプロセスが再起動されました"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "バックグラウンドタスク"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "ベース ブランチが前にあります。ブランチを最初に更新する必要があります。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "エージェント端末の基本フォント サイズ。狭いペインまたは短いペインでは自動縮小します。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "端末パネルの基本フォント サイズ。狭いペインまたは短いペインでは自動縮小します。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Bash 出力"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "基本 (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "ベター (ウィスパーベース)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "エージェントの実行中のステータス更新が改善されました。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "バイナリ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "バイナリ ファイル — プレビューは利用できません。"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "バイナリ ファイルまたは利用可能な差分がありません"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "ここではバイナリ ファイルを編集できません。"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "ブロックされました:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "太字"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "下"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "ブランチ「{branch}」には「{path}」にコミットされていない変更があります — マージする前にコミットまたはスタッシュしてください"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "ブランチ <0>{0}0> にはマージされていない変更があります:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "ブランチが完全にマージされていません"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "ブランチ保護ルールにより、このマージがブロックされました。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "ブランチ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "親フォルダーを参照します"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "GitHub リポジトリを参照するか、クローン URL を貼り付けます。"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "ブラウザ"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "ブラウザMCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "OpenCode に対応したブラウザ MCP"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "このスレッドに対してブラウザ MCP が有効になっています"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "ブラウザメニュー"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "ブラウザ選択ターゲット (CLI スレッド)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "ブラウザによる CLI スレッドのターゲットの選択"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "予算制限に達しました"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "差分を作成中…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "<0>{author}0> によって"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "プロンプト数順"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "トークン数順"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "ブランチ保護ルールをバイパスする"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "ブランチ保護ルールをバイパスする (管理マージ)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "新しい Claude プロファイルをキャンセル"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "保留中のステアをキャンセルする"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "ピッカーのキャンセル"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "キャンセルされました"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "ブランチ名がないとデフォルトのワークツリー パスを作成できません"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "ブランチを切り替えることはできません - 最初に変更をコミットまたはスタッシュしてください"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "ユーザーの変更"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "変更履歴"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "変更点"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "変更点 ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "PR の変更点"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "変更がリクエストされました"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "チャンネル"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "チャット"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "チャットコマンド"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "チェックする"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "アップデートをチェックする"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "選択したデバイスからのライブ入力レベルを確認します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "確認中…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "チェック"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "フォルダーを選択してください…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "{env}にサインインする方法を選択します。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "サインイン方法を選択します。"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Lightcode のインターフェースの表示言語を選択します。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "接続するスレッドを選択してください"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Lightcode とブラウザのポップアップからのリンクを Lightcode 内に残すか、外部で開くかを選択します。"
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Claude {0} プロファイルが保存されました。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Claude {displayName} プロファイルを追加しました。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Claude プロファイル設定ディレクトリ"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Claude プロファイル名"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Claude プロファイルが削除されました。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "クリーンアップスクリプト"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "閲覧履歴を消去"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "キャッシュのクリア"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Cookie を消去"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "検索をクリア"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "CLIフック"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "クローン"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "リポジトリのクローンを作成する"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "クローン URL"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "{cloneTarget}のクローン作成中"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "クローン作成中…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "閉じる"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "{purposeNoun}ターミナルを閉じる"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "ブラウザを閉じる"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "エディタを閉じる"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "エディタタブを閉じる"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "ゴールを閉じる"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "グループを閉じる"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "ペインを閉じる"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "ペインを閉じる"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "計画を閉じる"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "PRを閉じる"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "プレビューを閉じる"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "検索を閉じる"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "分割を閉じる"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "サブエージェントを閉じる"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "サブエージェントを閉じる"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "サブエージェントパネルを閉じる"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "タブを閉じる"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "トレイに最小化"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "使用状況の詳細を閉じる"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "クローズ"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "コードがコピーされました。"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "折りたたむ"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "{label}を折りたたむ"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "すべて折りたたむ"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "すべて折りたたむ"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "すべてのフォルダーを折りたたむ"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "コンポーザーを折りたたむ"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "エラーを折りたたむ"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "ターミナルコンポーザーを折りたたむ"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "todo ドックを折りたたむ"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "コマンド"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "コマンド (例: npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "コマンド"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "コメント"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "コメントを投稿しました"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "コメントした"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "コミット"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "コミットして PR を作成"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "コミットと PR の言語"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "コミットとプッシュ"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "コミットに失敗しました:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "コミットメッセージ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "コミットメッセージ (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "コミットメッセージの生成"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "コミットオプション"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "コミット"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "コンテキストの圧縮"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "完了"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "このスレッドを実行する前に、{0}サインインを完了してください。"
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "{env}の{0}サインインを完了します。"
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "{0}サインインを完了するか、{1}資格情報を保存します。"
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "{0}サインインを完了します。"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "このターミナルでプロンプトを完了します。終了したら閉じます。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "完了しました"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "コンポーザー"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "設定ディレクトリ"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "競合解決ツール"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "競合"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "コンソール"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "コンテキスト"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "コンテキストを圧縮しました"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "{before}トークンから圧縮されたコンテキスト"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "圧縮されたコンテキスト:{before}→{after}トークン"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "コンテキスト抽出 ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "{before}トークンから手動で圧縮されたコンテキスト"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "手動で圧縮されたコンテキスト:{before}→{after}トークン"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "{targetLabel}に転送されたコンテキスト"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "コンテキストの使用量"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "続ける"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "別のプロバイダーで続行する"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "...で続行"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "@file メンション検索に表示されるファイルを制御します。プロジェクトごとのオーバーライドは、各プロジェクトの設定に反映されます。"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "会話"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "コピーされました"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "クリップボードにコピーしました"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "コピー"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "{0}デバイス コード{1}をコピーします"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "現在の URL をコピー"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "詳細をコピーする"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "診断情報をコピー"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "コピーに失敗しました"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "無視されたファイルをコピーする"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "画像をコピー"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "メッセージをコピーする"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "パスのコピー"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "相対パスをコピー"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "コミットされていない変更をここにコピーします (このブランチに保持します)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "マージを中止できませんでした:{detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "マージを完了できませんでした"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "コンテキストを抽出できませんでした。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "コミットメッセージを生成できませんでした:{detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "ファイルを読み取れませんでした。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "リポジトリのクローンを作成できませんでした。"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "コミットされていない変更を新しいワークツリーにコピーできませんでした。変更は現在のブランチに残ります。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "プロジェクトを作成できませんでした。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "リポジトリを一覧表示できませんでした。"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "プロフィール統計を読み込めませんでした。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "PR 草案の作成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "ファイルの作成"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "新しいブランチを作成する"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "新しいブランチを作成..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "PRを作成する"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "PR の作成 (自動)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "PR アクションの作成"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "PR を作成…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "プロジェクトの作成"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "プルリクエストの作成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "タスクの作成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "作成:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "「{newBranch}」にワークツリーを作成しましたが、変更が競合し、git stash に残っています。ワークツリー内で解決してください。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "資格情報が設定されています。"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "クレジット"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "現在の連続日数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "現在の連続日数"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "カスタム"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "プロジェクトのコンテキスト メニュー (右クリック) から使用できるカスタム コマンド。"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "ダーク"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "辞退"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "デフォルト"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "デフォルトの PR 作成アクション"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "デフォルトの新規スレッド"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "デフォルトの権限"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "デフォルトのスレッドの削除"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "削除"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "{0}を削除"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "ブランチを削除しますか?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "ファイルの削除"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "完全に削除"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "スレッドの削除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "スレッドの削除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "スレッドを削除しますか?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "To-Doを削除する"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "ワークツリーの削除"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "ワークツリー{0}を削除します"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "削除:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "削除中"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "拒否する"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "拒否し、エージェントに別の対処法を伝えます..."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "説明"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "説明 (オプション)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "<0>({0})0> を検出しました"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "<0>(ローカル)0>が検出されました"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "<0>{0}0> を検出しました"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "エージェントを検出中…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "開発"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "開発専用の上書き。 LIGHTCODE DEV ビルドでのみ表示されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "コンポーザーの音声入力ボタンで使用されるデバイス。"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "無効にする"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "{tierLabel}の推論レベルを無効化"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "ブラウザMCPを無効にする"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "CLI フック プラグインを無効にする (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "プロジェクトを無効にする"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "外部プロバイダーがまとめてしまうレベルを無効化します(例:HighとMaxのみを残す)。"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "無効"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "{path}の未保存の変更を破棄しますか?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "保存されていないエディターの変更を破棄しますか?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "コーディング エージェントを発見中…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "閉じる"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "エラーを閉じる"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "却下されたレビュー"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "サイドバーに名前を表示します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "ドキュメント"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "今後表示しない"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "フックのインストール提案を表示しない"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "完了しました"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "完了"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "完了 · 入力を待っています"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "画像をダウンロード"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "「{0}」にダウンロード中です。大規模なリポジトリの場合、これには時間がかかることがあります。"
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "音声モデルをダウンロード中{0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "音声モデルをダウンロードしています..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "ダウンロード中{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "{versionLabel}をダウンロード中"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "草案"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "ドラッグして、モデル ピッカーでのプロバイダーの表示順序を変更します。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "ドラッグして並べ替えます。ダブルクリックして編集します"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "ここにドロップして添付します"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "受信したフック エンベロープをスーパーバイザー側で破棄し、インストールや iTerm2 通知に影響を与えずにエージェントが L2 (OSC "
+"9;4 の進行状況) にフォールバックするようにします。次のフック イベントから有効になります。再起動は不要です。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "例: 仕事"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "編集"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "ファイルを編集する"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "プロフィールを編集"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "編集:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "エディター"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "エディタLSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "エディターのタブ"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "エフォートとコンテキスト"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "推論レベル"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "有効にする"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "{tierLabel}の推論レベルを有効化"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "型チェック、補完、診断に対する言語サーバーのサポートを有効にします。言語サーバーがインストールされている必要があります。"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "システム設定でマイクへのアクセスを有効にしてから、もう一度試してください。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "通知を有効にする"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "プロジェクトを有効にする"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "設定でプロバイダーを有効にする"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "有効"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "<0>Cookie0> と <1>ストレージ1> を有効にします。Cookie にはセッション "
+"トークンが含まれることがあり、ストレージには認証状態が保持されることが多いため、エージェントとエージェントが訪問するサイトの両方を信頼できる場"
+"合にのみ有効にしてください。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "強化(フック)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "リポジトリの URL を入力します。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "計画モードに入る"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "環境"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "環境変数名"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "環境変数の値"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "環境変数"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "エラー"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "エラー"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "エラー · エージェントでエラーが発生しました"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "パターンを除外する"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "計画モードを終了する"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "コード{0}で終了しました。閉じて再試行してください。"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "拡大する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "{label}を展開する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "すべて展開"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "エラーを展開"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Todo ドックを展開する"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "外部"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "外部プロバイダー"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "エクストラハイ"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "{0}からコンテキストを抽出しています ..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "失敗しました"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "プル リクエストを閉じることができませんでした:{detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "プル リクエストの作成に失敗しました:{detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "プロフィール統計の読み込みに失敗しました。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "プル リクエストのマージに失敗しました:{detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "速い"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "高速モード"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "最速(Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "最速は Whisper tiny を使用し、高精度は Whisper base を使用します。"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "お気に入り"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "フェッチ"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "ファイル"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "ファイルの変更がここに表示されます。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "ファイルが大きすぎてプレビューできません。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "ファイルはディスク上に存在しません。"
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "ファイルが大きすぎて表示できません({0, plural, one {# 行変更} other {# 行変更}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "ファイルはサポートされていないエンコーディングを使用しています。"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "ファイル"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "{0}のファイル"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "これらのグロブに一致するファイルは、@file メンション検索から非表示になります。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "レビューを完了する"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "完了しました"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "完了しました · 入力を待っています"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Lightcode のネイティブ ランタイムを使用したファーストクラスの Antigravity CLI 統合。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Lightcode のネイティブ SDK ランタイムを使用したファーストクラスの Claude Code 統合。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Lightcode のネイティブ アプリサーバー ランタイムを使用したファーストクラスの Codex CLI 統合。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Lightcode のネイティブ ランタイムを使用したファーストクラスの Command Code CLI 統合。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Lightcode のネイティブ ランタイムを使用したファーストクラスの Grok Build CLI 統合。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Lightcode のネイティブ SDK ランタイムを使用したファーストクラスの OpenCode 統合。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "エージェントで修正する"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "フォルダ名"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "強制削除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "強制的に削除しますか?マージされていない変更は失われます。"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "フォーク"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "ファイルのフォーマット"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "進む"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "サインインした{0}セッションが見つかりました。"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "システムのぼかし素材(vibrancy)でサイドバーをすりガラス調にし、最近のmacOSの質感を再現します。非対応の環境では半透明の色付けに切"
+"り替わります。"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "システムのぼかしの上に重ねる{appearance}モードのサイドバーのすりガラス効果です。値を高くするとテーマカラーが強く、低くすると背後が"
+"より透けて見えます。"
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "フルアクセス"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "全画面オーバーレイ"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "一般"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "コミットメッセージを生成する"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "PRサマリーを生成する"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "AIで生成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "生成された画像"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "ステージされた変更からコミットメッセージを生成します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "新しいスレッドの短いタイトルを生成します。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "タスクの取得"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command}が失敗しました:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Git レビュー"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Git レビュー モード"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "{0}の Git ステータス"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "{0}の Git ステータス: Git リポジトリではありません"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "GitHub リポジトリ"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "メイン プロジェクトから各新しいワークツリーにコピーする、Gitignored ファイル。 Gitignore スタイルのパターン、1 行に "
+"1 つ (例: <0>.env.*0>)。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2(任意のラベル)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "目標"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "設定した目標数"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "グループ"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "開いているスレッドをグループ化する"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "GUIチャットのフォントサイズ"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "ハンドル"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "ハンドル"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "ハードリロード"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "非表示の再開可能なスレッドは 5 分ごとにスイープされ、このアイドル時間が経過するとアンロードされます。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "隠す"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "すべて隠す"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "ブラウザを隠す"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "正規のランタイム項目インスペクターを非表示にする"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "コンテキスト使用の詳細を非表示にする"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "すべてのプロバイダーのモデル ピッカーから使用しないモデルを非表示にします。"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "パネルを非表示にする"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "ランタイムデバッグパネルを非表示にする"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "サイドバーを隠す"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "ターミナルを隠す"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "ホーム"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "ホームスコープ"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID:{0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "アイドル状態"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "画像"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "画像プレビュー"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "非アクティブ"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "継承された"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "グローバル設定 (現在{0}) を継承します。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "リポジトリの初期化"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "入力レベル"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "正規のランタイム項目を検査する"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "インストールする"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "インストール"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "{env}の{0}をインストールします。"
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "{0}をインストールしてスレッドを作成します。"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "{0}をインストールします。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "{env}をインストールする"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "CLIフックをインストールする"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "WSL にインストール:{distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "最初にネイティブプロバイダーをインストールします。追加のプロトコル エージェントには ACP を使用します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Windows にインストールする"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "パッケージをインストールする"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "アップデートをインストールする"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "v{updateVersion} をインストール"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "v{version} をインストール"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "インストール済み"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "インストール中"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "この端末にインストールします。終了したら閉じます。"
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "中断されました: エージェントセッションが完了前に終了しました。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "イタリック体"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "たった今"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "ブランチを維持する"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "スレッドがアクティブに動作している間は、システムを起動したままにします。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "bash を終了"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "言語"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "AI が生成するコミットメッセージとプルリクエストのサマリーの言語です。スレッドのタイトルは常にアプリの言語に従います。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "コンポーザーでの音声入力を文字起こしする際に音声モデルが想定する言語。"
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "最後のツール: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "スレッドを起動する"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "起動中…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "コメントを残す"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "少ない"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "エージェントが <0>eval0> を呼び出して、埋め込みページ内で任意の JavaScript "
+"を実行できるようにします。デフォルトではオフ — 読み込まれたサイトとエージェントを信頼する場合にのみオンになります。"
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "ライセンス"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "累計トークン"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "累計トークン"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "ライト"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "リスト"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "パッケージを一覧表示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "タスクを一覧表示"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "読み込み中"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "アカウントを読み込み中…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "差分を読み込み中..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "エディターを読み込み中…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "ファイルをロード中…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "メモを読み込んでいます…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "PRを読み込み中…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "レジストリを読み込んでいます..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "読み込み中…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "ローカル"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "ローカル"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "ローカルの変更は{branch}からプルする前に隠しておく必要があります"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "場所"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "ログイン中"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "ログアウト中"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "ログイン"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "ログイン"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "ログイン{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "ログインが必要です"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "ログアウト"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "ログアウト{env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "最長の連続日数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "最長の連続日数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "最長のタスク"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "サイドバーを半透明にします。Windows 11ではシステムのぼかし素材を、それ以外では半透明の色付けを使用します。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "手動並び替え"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "すべて完了としてマークする"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "完了としてマークする"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "未完了としてマークする"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "完了マークを付ける"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "完了マークを付ける"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "アプリの言語に合わせる"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "システムに合わせたり、明暗を強制したりできます。"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "最大化する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "ブラウザを最大化する"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "MCPサーバー"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "マージして削除"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "マージの競合を解決する必要があります。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "マージに失敗しました"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "マージに競合があります"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "マージには競合があります:{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "ローカルでマージしてワークツリーを削除"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "マージ方法"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "マージオプション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "PR のマージ: コミット"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "PR のマージ: リベース"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "PR のマージ: スカッシュ"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "ソースにマージ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "ワークツリーをマージ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "マージ済み"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "マージはブロックされています"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "送信したメッセージ数"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "マイクロフォン"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "マイク{fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "マイクアクセスがオフになっています。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "マイク入力レベル"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "マイクの許可が拒否されました。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "この環境ではマイクテストは利用できません。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "ブラウザを右側のパネルに最小化する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "パネルに最小化する"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "モード"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "モデルID"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "モデルラベル"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "モデルオーダー"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "モデルの使用状況"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "モデル"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "モード"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "多い"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "その他の承認オプション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "その他のコミットオプション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "その他の PR 操作"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "その他の PR オプション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "その他のプルリクエストオプション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "その他の同期オプション"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "最も活発な時間帯"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "よく使うプラグイン"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "よく使うプロバイダー"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "よく使う推論レベル"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "移動"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "変更を新しいワークツリーに移動する"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Todo ドックを右側のパネルに移動します"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "変更内容を「{newBranch}」の新しいワークツリーに移動しました。「{currentBranch}」はクリーンになりました。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "変更を移動中…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "名前"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "プロジェクトに名前を付け、作成する場所を選択します。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "ネイティブ"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "ネイティブプロバイダー"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "ネイティブサポート"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "承認が必要です"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "注意が必要です"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "注意が必要 · 承認が必要"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "注意が必要 · 返信が必要です"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "返信が必要です"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "新しいアクションコマンド"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "新しいアクション名"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "新しいブランチ名..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "新しい Claude プロファイル設定ディレクトリ"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "新しい Claude プロファイル名"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "新しいファイル"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "新しいフォルダー"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "新しいプロジェクト"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "新しいタブ"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "新しいスレッド"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "新しいスレッド"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "新しいスレッド —{projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "新しいスレッド(草案)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "この ToDo からの新しいスレッド"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "ワークツリーの新しいスレッド"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "新しいワークツリー"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "次の画像"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "アクティブなブラウザタブがありません"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "アクティブなセッションがありません"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "まだアクティビティがありません。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "追加の Claude プロファイルはありません。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "PR サマリーを生成できるエージェントがいません"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "このフェーズにはエージェントがいません。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "エージェントはまだインストールされていません"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "エージェントがインストールされていません。"
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "AIによるコミット、PR、競合解決はまだ記録されていません。"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "アーカイブされたスレッドはありません。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "ブランチが見つかりませんでした"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "ブラウザのタブが開いていません"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "変更なし"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "表示する変更はありません"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "この PR についてはチェックが報告されていません。"
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "コマンドが見つかりません"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "コミットが見つかりませんでした。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "コンテンツのストリームはありません。"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "まだ会話はありません。最初にコメントしてください。"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "まだデータがありません"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "まだデータがありません。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "説明なし"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "{0}に利用できる差分はありません"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "{visiblePath}の差分はありません"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "このメッセージにはファイル チェックポイントは保存されません。"
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "「{0}」に一致するファイルはありません。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "GitHub CLI アカウントが見つかりません。 <0>gh auth login0>でサインインするか、<1>クローン URL "
+"を貼り付け1>ます。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "「{query}」に一致するものはありません。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "一致はありません。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "一致するエージェントはありません。"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "一致するスレッドがありません"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "MCPツールはまだ使用されていません。"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "まだメッセージはありません"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "マイクが見つかりません。"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "モデルが見つかりません"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "他のエージェントはインストールされていません"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "パターンはありません。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "まだフェーズはありません。"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "プロンプトはありません"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "追跡されているプロバイダーはありません。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "まだプロバイダーの準備ができていません"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "リモートが設定されていません。リモートを追加してプッシュとプルを有効にします。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "リポジトリが見つかりません。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "このスレッドにはランタイム アイテムがまだありません。"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "スキルはまだ使用されていません。"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "音声が検出されませんでした。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "ステージされた変更はありません"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "サブエージェントはまだ使用されていません。"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "サポートされているエージェントが検出されませんでした"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "スレッドがありません"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "まだスレッドがありません。"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "ウィンドウは報告されませんでした"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "ワークツリーなし"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "ラップなし"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "なし"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "git リポジトリではありません"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Git リポジトリではありません"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "見つかりません"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "インストールされていません"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "実行されていません"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "サインインしていません"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "サポートされていません"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "注意事項"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "まだ何も記録されていません。使用するとここに表示されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "通知"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "L2 CLI スレッドの通知"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "通知する対象"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "オフ"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "古い"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "オン"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "焦点が合っていないときのみ"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "開く"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "{label}を開く"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "ターミナルを開く"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "まずスレッドを開いてそれにアタッチします。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "すべて開く"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "グループ内ですべてを開く"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "ページとして開く"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "パネルとして開く"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "ブラウザを開く"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "チェックを開く"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "コマンドパレットを開く"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "GitHub でコミットを開く"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "競合リゾルバーを開く"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "ダイアログを開く"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "ファイルを開く"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "ファイルを開く"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "全画面で開く"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Gitパネルを開く"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Git レビューを開く"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "git review を右側のパネルまたはページ全体として開きます。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "画像のプレビューを開く"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "エディタで開く"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "リンクを開く"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "新しいタブを開く"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "新しいスレッドをページ全体または並べて表示するパネルとして開きます。"
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "PR #{0}を開く"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "GitHub で PR を開く"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "プレビューを開く"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "プロジェクト設定を開く"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "未処理のリクエスト"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "必要なURLを開く"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "設定を開く"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "設定を開く"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "サブエージェントを開く:{0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "工数ピッカーを開く"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "モデルピッカーを開く"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "{0}(#{1}) を開きました"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "オプションのステータスフック。インストールされたフックは自動的に更新されます。不足しているフックが自動的にインストールされることはありません。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "オプション"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "またはカスタムの回答を作成します"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "結果"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "オーバーペース — 早めに力尽きてしまう"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Claudeのデフォルト設定を上書きします(例:ANTHROPIC_BASE_URLやANTHROPIC_AUTH_TOKEN)。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "このプロジェクトのグローバル設定をオーバーライドします。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "パッケージ構成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "パッケージマネージャー"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "ページ"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "パネル"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "ペースト"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "<0>{0}0> をここに貼り付けます。クリックしてコピーします。"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "入力に貼り付けます"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "一時停止中"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "ピークの日"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "ピークの日"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "保留中"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "審査待ち"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "保留中のステアリング"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "許可"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "要素を選択します"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "アイコンを選択します"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "ピッカーが失敗しました"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "ピッカーは添付ファイルを返しませんでした"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "トップにピン留めする"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "固定された"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "計画"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "通知が表示されたときに音を鳴らします。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "通知音を鳴らす"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "このプロファイルを、カスタムの環境変数・モデル名・推論レベルとともにAnthropic以外のプロバイダー(z.aiなど)に向けます。"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "人気のエディター テーマを Lightcode に適合させました。それぞれは上記のライト モードまたはダーク モードに従います。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "PRアクション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "PRオプション"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "PRレビュー"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "PRセクション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "PR タイトル (自動生成するには空のままにしてください)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "コミット前のフックが失敗しました"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "プリセット"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "作業中のスリープを防止する"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "{0}をプレビューする"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "前の画像"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "プロフィール"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "プロファイル"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "プロジェクト"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "プロジェクト名"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "プロジェクトノート"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "プロジェクト設定"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "グローバル検索設定に加えてプロジェクト固有のオーバーライド。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "プロンプト"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "プロンプト"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "提案された計画"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "プロバイダー"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "プロバイダー"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "プロバイダーはトークンの使用状況を報告していません。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "プロバイダープリセット"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "プロバイダー"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "プロバイダー"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "プル"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "プル ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "プル ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "プル ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "プルが完了しませんでした。ローカルでの変更は Lightcode スタッシュに残ります。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "プルに失敗しました:{detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "{0}からプルしますか?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "{sourceBranch} ({sourceAhead}) からプル"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "ソースからプル ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "プルリベース ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "プルリクエストのオプション"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "プッシュ"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "プッシュ ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "プッシュ ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "プッシュ ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "プッシュに失敗しました:{detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "質問"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "クォータに達しました"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "使い切りました"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "使い切りました · {resets}後にリセット"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "レート制限あり"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "レート制限あり。しばらくしてからもう一度お試しください。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "ローカルの変更を再適用すると競合が発生する"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "再ログイン"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "準備完了"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "レビューの準備完了"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "推論"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "最近の"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "最近のスレッド"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "パブリック API レートでローカル ログから再構築されます。サブスクリプション "
+"プランの実際の請求額は反映されません。使用状況パネルにのみ表示されます。"
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "リフレッシュ"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "{0}認証を更新します"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "検出されたエージェントを更新する"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "レジストリを更新する"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "N 分ごとにバックグラウンドで使用状況を更新します。オフにするには 0 に設定します (手動のみ)。 2 "
+"分の下限はプロバイダーのレート制限に従います。"
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "{0}認証ステータスを更新しています。"
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "{env}{0}認証ステータスを更新しています。"
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "リロード"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "リモート"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "リモート名"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "リモートURL"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "削除する"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "{0}を削除"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "{0}をパネルから削除"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "{pattern}を削除"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "アクションの削除"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Claude プロファイルを削除"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "環境変数を削除"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "お気に入りから削除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "グループから削除"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "パネルから削除"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "モデルを削除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "プロジェクトの削除"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "ワークツリーを削除しますか?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "名前の変更"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "グループ名の変更"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "スレッド名の変更"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "レンダラーがクラッシュしました"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "レンダラが起動中に失敗しました"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "レンダラーが React エラーに遭遇しました"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "レンダラーでキャッチされないエラーが発生しました"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "レンダラーが未処理の Promise 拒否に遭遇しました"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "{0}を並べ替える"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "{label}を並べ替える"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "問題を報告する"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "リポジトリ"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "リポジトリ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "リポジトリの pre-receive フックがマージをブロックしています。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "リポジトリURL"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "変更のリクエスト"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "リクエストの詳細"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "要求された変更"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "必要なレビュー、会話、ステータスチェックが満たされていません。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "リセット"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "モデルの順序をリセット"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "サイドバーのすりガラス効果をデフォルトに戻す"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "デフォルトに戻す"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "ブラウザドロワーのサイズを変更する"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "列のサイズを変更する"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "gitパネルのサイズを変更する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "メモと ToDo のサイズを変更する"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "行のサイズを変更する"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "サイドバーのサイズを変更する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "分割のサイズ変更"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "ターミナルパネルのサイズを変更する"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "リベースまたはマージ中のマージ競合を解決します。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "復元"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "ブラウザを復元する"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "スレッドを復元する"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "管理者で再試行してください"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "アプリに戻る"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "ファイルエクスプローラーで表示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "ファイルツリーに表示"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "元に戻す"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "すべて元に戻す"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "すべての変更を元に戻す"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "変更を元に戻す"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "チェックポイントに戻りますか?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "このチェックポイントに戻る"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "変更の確認"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "レビューコメント"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "レビューの判定"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "リクエスト時にレビュー"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "PRをレビューする"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "{0}の PR #{prNumber}を確認します"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "右"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "右パネル"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "実行"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "{0}を実行"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "このスレッドが実行される前に{0}を実行してください。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "{loginCommand}を実行してサインインします。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "コマンドの実行"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "別のワークツリーで実行する"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "利用可能な場合は、GPU 上でローカル トランスクリプションを実行します。"
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "ターミナルコマンドを実行する"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "実行中"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "ワークツリーが削除される前に実行されます (例: <0>rm -rf node_modules0>)。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "新しいワークツリーが作成された後にターミナルで実行されます (<0>pnpm install0> など)。"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "早めになくなります"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "あと{runOut}でなくなります"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "ランタイム"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "ランタイムデバッグ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "実行時オプション"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "保存"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "{0}資格情報を保存します。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Claude プロフィールを保存"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "ファイルの保存"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "保存された認証情報はすべての環境で共有されます。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "インストールされている CLI について{wslDistro}をスキャンしています。通常、これには数秒かかります。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Windows と WSL をスキャンして、インストールされている CLI を探します。通常、これには数秒かかります。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "システムをスキャンして、インストールされている CLI を探します。通常、これには数秒かかります。"
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "スクリプト"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "端末のスクロールバック バッファのスクロール速度の乗数。"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "一番下までスクロール"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "検索"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "エージェントを検索"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "エージェントを検索..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "ブランチを検索..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "ファイルの検索"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "モデルを検索する"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "モデルを検索..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "アドレスを検索または入力"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "リポジトリの検索"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "リポジトリを検索…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "ランタイム項目を検索…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "スレッドを検索する"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "スレッドの検索"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "検索…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "検索中..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "検索中…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "もっと見る"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "選択"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "ツリーからファイルを選択します"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "編集を開始するファイルを選択します。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "リポジトリを選択します。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "アカウントの選択"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "エージェントを選択すると、そのプロンプトと結果が表示されます。"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "ブランチを選択"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "デバイスを選択"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "モデルを選択してください"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "プロジェクトの選択"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "メッセージを入力..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "メッセージを送信する"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "選択内容を端末に送信しました。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Claude "
+"Codeのアカウントを設定ディレクトリごとに分離するか、プロファイルを外部プロバイダー(z.aiなど)に向けます。プロファイルを開くと、その環"
+"境変数・モデル・推論レベルを設定できます。"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "実験目標を設定または表示する"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "設定"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "セットアップスクリプト"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "共有"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "アクティビティを共有"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "サイドバーにプロバイダーごとのコンパクトな使用状況リングを表示します。"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "OS レベルのエージェント セッション用に、プロジェクトに属さないホームスコープを表示します。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "すべて表示"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "ブックマークバーを表示"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "サイドバーにリングを表示"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "コンポーザーを表示"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "コンテキストの使用状況の詳細を表示する"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "推定コストを表示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "ファイルエクスプローラーで表示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "表示を少なくする"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "もっと見る"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "通知を表示する"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "スレッドのステータスが変化したときに通知を表示します。"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "開いているリンクを表示する"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "プレビューを表示"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "ランタイムデバッグパネルを表示"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "サイドバーを表示"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "ソースを表示"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "コンポーザーにマイクボタンを表示します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "音声入力ボタンを表示"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "サイドバーのすりガラス効果"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "サインイン"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "サインインが必要です"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "サインインが必要です"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "エージェント CLI を使用してサインインします。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "サインアウト{label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "サインインしました"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "サインインしています"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "サインイン中…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "{env}からサインアウトします。検出されたエージェントは終了時に更新されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "サインアウトしています。検出されたエージェントは終了時に更新されます。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "スキル:{skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "スキル"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "試したスキル数"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "一部のチェックが失敗または保留中です。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "作成順に並べ替える"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "最終更新順に並べ替える"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "スレッドを並べ替える"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "ターミナルを分割"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "分割ビュー"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "ステージ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "すべてステージ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "ステージ済み"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "ステージ済み"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "ステージング済み ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "スタート"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "使用状況を見るには{appName}を起動してください"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "選択したテキストから新しいスレッドを開始します"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "この ToDo から新しいスレッドを開始します"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "ゼロから始める"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "ターミナルネイティブのスレッドで折りたたまれたコンポーザーを起動します。折りたたまれたコンポーザーは、ブラウザー要素の選択を直接端末にルーティ"
+"ングします。"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "音声入力を開始する"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "コンテキストなしで開始"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "{targetLabel}スレッドを開始しました"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "開始しています"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "音声入力を開始しています"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "始めています…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "スタッシュ&プル"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "ステータスは端末出力 (L2) から推測されます。構造化更新の設定でフック プラグインをインストールします。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "ステータスは、エージェント制御プロトコル (ACP) によって提供されます。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "ステータスの更新は CLI フック プラグインから行われます。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "ステータス:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "停止"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "応答停止"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "タスクの停止"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "音声入力を停止する"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "平文で保存"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "シークレットとして保存(保存時に暗号化)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "サブエージェント"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "サブエージェントが見つかりません。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "サブエージェントの結果"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "サブエージェント"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "送信する"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "フィードバックを送信し、これらの変更のマージを承認します。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "マージ前に対処する必要があるフィードバックを送信してください。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "明示的な承認なしにフィードバックを送信します。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "レビューを送信する"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "監督あり"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "セッションが接続されると、サポート モードが表示されます。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "サポート:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "メモやToDoを交換する"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "ブランチを切り替える"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "モードを切り替え"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "モードを切り替え: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "プロジェクトの切り替え"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "このチャットをエージェント モードに切り替えます"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "このチャットを計画モードに切り替えます"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "同期"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "同期(リベース)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "同期 ↓{behind}↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "同期に失敗しました:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "同期オプション"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Cloudと同期"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "システム"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "システムブラウザ"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "システムのデフォルト"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "スクリーンショットを撮る"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "対象ブランチ"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "対象プロバイダー"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "タスクの出力"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "{0}に次に何をすべきかを伝えてください..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "ターゲットプロバイダーに次に何をすべきかを伝えます..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "ターミナル"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "{0}用のターミナル"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "ターミナル入力"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "ターミナルの準備ができていません — コンポーザーに選択を追加しました。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "ターミナルパネルのフォントサイズ"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "ターミナルの位置"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "ターミナルのスクロール速度"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "ターミナルタブ"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "マイクをテスト"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "エージェント"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "アプリ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "選択したフォルダー"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "通常のアプリシェルをレンダリングできませんでした。障害を調査できるよう、リロード前に以下の診断情報を表示しています。"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "対象プロバイダー"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "テーマ"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "思考中"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "このエージェントはインストールされていません。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "この環境"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "このファイルは組み込みエディタには大きすぎます。"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "このファイルはサポートされていないエンコーディングを使用しています。"
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "これにより、ブランチ「{0}」がリモートから完全に削除されます。"
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "これにより、ブランチ「{0}」が完全に削除されます。"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "これにより、後続のメッセージが削除され、チェックポイント スナップショットが利用可能な場合はファイルが復元されます。"
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "これにより、「{0}」のワークツリーが削除され、{1, plural, other {# "
+"個のリンクされたスレッド}}が閉じられ、その後ブランチが削除されます。"
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "これにより、「{0}」のワークツリーが削除され、その後ブランチが削除されます。"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "このスレッドはワークツリー <0>{0}0> を使用します。ワークツリーディレクトリも削除しますか?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "このワークツリーにはローカルな変更があります。Lightcode はそれらを一時的にスタッシュし、{0}からプルして、変更を再適用できます。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "思考"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "スレッド"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "スレッド + ワークツリー"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "スレッドコンテキストの使用量"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "スレッドドック"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "スレッドの開始に失敗しました。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "スレッドが終了したか、入力を待っています。"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "スレッドゴールドック"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "スレッドはすでにアンロードされています。"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "スレッドモード"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "スレッドのみ"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "スレッドのソート順"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "スレッドのやることドック"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "スレッド"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "完了とマークされ、この日数タッチされていないスレッドは、アプリの起動時に自動的にアーカイブされます。無効にするには 0 に設定します。"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "タイトルの生成"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "やるべきこと"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "高速モードの切り替え"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "モデルをオフに切り替えて、セレクターから非表示にします。"
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "ターミナルの切り替え"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "トークン"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "{0}からのトークン"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "ツール検索"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "プロンプト総数"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "使用したスキルの総数"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "スレッド総数"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "{label}の使用状況を追跡する"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "プロバイダーごとのセッション、週次、月次の使用量を追跡します。期間は各プロバイダーによって報告されます。推定コストはローカル "
+"ログから再構築されます。"
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "追跡オフ"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "音声の文字起こし"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "半透明のサイドバー"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "プロバイダーごとに追跡をオンまたはオフにします。無効化されたプロバイダーは自動更新によってスキップされます。"
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "コマンドを入力してください"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "{0}を認証できません。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "WSL ワークツリー ディレクトリ \"{path}\" を作成できません"
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "{0}フックをインストールできません。"
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "{0}をインストールできません。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "{0}からログアウトできません。"
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "{0}ログインを開けません。"
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "ファイルを開けません"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "{0}ステータスを更新できません。"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "{0}を更新できません。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Claude プロファイルを更新できません。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "{0}資格情報を削除できません。"
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "ワークツリーを削除できません。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "WSL ディストリビューション「{distro}」のホーム ディレクトリを解決できません"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "{0}資格情報を保存できません。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Claudeの{displayLabel}プロファイルを保存できません。"
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "{label}を開始できません。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "{0}({envName}) を更新できません:{detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "{0}({envName}) を更新できません。"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "{0}フックを更新できません。"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "{0}を更新できません:{1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "{0}を更新できません:{detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "{0}を更新できません。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "すべてのグループを解除"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "統合ビュー"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "アンインストール"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "不明"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "不明なプロジェクト"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "無制限"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "次の時間後にアイドル状態のスレッドをアンロード"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "アイドル状態のスレッドをアンロードするまでの時間 (分)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "スレッドをアンロード"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "完了のマークを外す"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "完了のマークを外す"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "フェーズなし:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "固定を解除する"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "アンステージ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "すべてのステージを解除する"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "未ステージ"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "サポートされていません"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "アップデート"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "{0}を{updateLabel}に更新します"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "利用可能なアップデート"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "ブランチを更新する"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "更新エラー:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "更新方法"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "更新タスク"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "{updateLabel}に更新"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "{0}の{updateLabel}への更新"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "{0}({env}) の{updateLabel}への更新"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "v{0}に更新"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "v{latestRegistryVersion}に更新"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "マージコミットによる更新"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "リベースで更新する"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "{0}を更新しました"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "更新中"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "{0}を更新しています"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "{0}({env}) を更新しています"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "使用量"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "使用量はサポートされていません"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "利用設定"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "使用量不明"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "既存のフォルダーを使用する"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "構成を使用する"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "検出されたセッションを使用しますか?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "無視ファイルを使用する"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "セッションを使用する"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "このアカウントを使用状況の追跡に使用するか、続行する前にブラウザでユーザーを変更してください。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "WebGPU アクセラレーションを使用する"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "使用済み"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "組み込みのClaudeモデル一覧を使用しています。"
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0}が利用可能"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "値"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "バージョン"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "{0}経由"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "表示"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "可視の{0}モデル"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "可視モデル"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "この環境では音声入力は利用できません。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "音声入力言語"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "音声入力モデル"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "スレッドの開始が完了するまで待ちます。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "{authEnv}{authMethodName}認証を待機しています。検出されたエージェントは終了時に更新されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "{authMethodName}認証を待機しています。検出されたエージェントは終了時に更新されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "{env}{methodName}認証を待機しています。検出されたエージェントは終了時に更新されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "{methodName}認証を待機しています。検出されたエージェントは終了時に更新されます。"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "エージェントが停止するのを待っています"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "ワークフローがエージェントを生成するのを待っています…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "起動"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "{interval}後に再開"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "{interval}後に再開:{reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "再開:{reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "シェル環境をウォームアップしています…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "シェル環境をウォームアップしています..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "WSL シェル環境をウォームアップしています…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "ウェブ検索"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "ウェブサイト"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "[PR の作成] ボタンのデフォルトの機能: ダイアログを開いて最初にタイトルと説明を編集するか、それらを自動生成してワンクリックで PR "
+"を作成します。ボタンのメニューからも切り替えることができます。"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "有効にすると、検索では <0>.gitignore0> エントリが尊重されます。"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Lightcode ブラウザ タブでリンクが開くとき、ブラウザが表示される場所を選択します。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "オフの場合、OSC フォールバック (CLI フック プラグインなし) からステータスが取得される端末スレッドからの通知を抑制します。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "表示されているスレッドのアプリ内トーストを表示するタイミング。"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "ウィンドウを閉じてもシステムトレイで Lightcode を実行したままにします。オフにすると、閉じたときに終了します。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "ターミナルネイティブのスレッドで、ブラウザーの要素ピッカーの選択がどこに送られるか。折りたたまれたコンポーザーは常にターミナルにルーティングさ"
+"れます。"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "どこから始めたいですか?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "ターミナルパネルが表示される場所。"
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "{0}で実行されます:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows はまだサポートされていません。WSL 内または macOS/Linux にインストールしてください。"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "作業"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "現在のチェックアウトでの作業"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "{elapsed}稼働しました"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "ワークフロー"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "ワークフローが完了しました。子エージェントは別のプロセスで実行されており、ここではまだストリーミングされていません。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "ワークフローはバックグラウンドで実行されています。子エージェントは別のプロセスで実行され、ここではまだストリーミングされません。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "ワークフローのフェーズ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "ワークフローの結果"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "ワークフロー:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "ワークフロー"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "実行中"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "{elapsed}稼働中"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "作業ツリーはクリーンです"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "実行中…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "ワークツリー"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "ワークツリー + 変更点"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "ワークツリーモード"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "ワークツリー:{0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "ワークツリー"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "行を折り返す"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "コメントを書く"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "コメントを書いて…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "このプロジェクトのメモを書いてください…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "あなたの名前"
diff --git a/src/renderer/locales/ko/messages.po b/src/renderer/locales/ko/messages.po
new file mode 100644
index 00000000..e947f934
--- /dev/null
+++ b/src/renderer/locales/ko/messages.po
@@ -0,0 +1,5978 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: ko\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(초안)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(메시지 없음)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# 파일} other {# 파일}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# 공급자 준비됨} other {# 공급자 준비됨}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {목표} other {목표}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {다른 채팅 #개에서도 이 동일한 트리를 사용합니다. 파일 복원 시 해당 채팅의 변경 사항을 "
+"덮어쓸 수 있습니다.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — 작성기"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — 터미널"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0}({envName})은 이미 최신 상태입니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0}({envName})이 v{newVersion}로 업데이트되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0}({envName})이 업데이트되었습니다."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} 인증되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "{0} 자격 증명이 제거되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0} 자격 증명이 저장되었습니다."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "기기 {0}개"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{envName}에 {0} 후크가 설치되었습니다."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0} 후크가 설치되었습니다."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{envName}에 대한 {0} 후크가 제거되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} 설치 대상"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0}은(는) 이미 최신 상태입니다."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0} 한도"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} 로그아웃되었습니다."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0}에는 인증이 필요합니다."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "프롬프트 {0}개 - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "프롬프트 {0}개 - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0}회 실행"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0}회 실행"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} 토큰"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "토큰 {0} - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0}이 v{1}로 업데이트되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0}이 v{latestRegistryVersion}로 업데이트되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0}이 v{newVersion}로 업데이트되었습니다."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0}이 v{resolvedLatest}로 업데이트되었습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} 업데이트되었습니다."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} 사용됨"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% 가득 참"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0}개월 전"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. 상태 세부정보를 보려면 마우스를 올리세요."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days}일"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days}일"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days}일 전"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel}에는 인증이 필요합니다."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount}/{totalCount} 일치"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} 또는 {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "{heading} 모드"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "{hook} 후크 실패"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours}시간 전"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# 에이전트 준비됨} other {# 에이전트 준비됨}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label} 사용량 — 사용량 패널 열기"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel} 컨텍스트"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes}분 전"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel}에는 인증이 필요합니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Worktree 정리도 실패했습니다: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% 가득 참"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation}(비활성화)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "{projectName} 설정"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# 열림} other {# 열림}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# 결과} other {# 결과}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds}초 전"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} 토큰"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} 토큰"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel}/{maxLabel} 토큰"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} 토큰"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{totalCount}개 중 {visibleCount}개 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. 모든 권리 보유."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "{0}개 검사 중 <0>{passed}0>개 통과"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · 예상"
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "재설정 시 ≈{0}%"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "지원되는 코딩 에이전트"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "병합 중단"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "정보"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "양쪽 변경 사항 모두 수락"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "현재 변경 사항 수락"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "수신 변경 사항 수락"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "계정"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "계정 옵션"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "계정"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "ACP 에이전트"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "액션 명령"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "사이드바 스레드의 빠른 제거 버튼에 대한 작업입니다."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "액션 이름"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "작업"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "활성"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "활동"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "활동 인사이트"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "활동 지표"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "추가"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "에이전트를 설치하기 전에 프로젝트를 추가하세요."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "로그인하기 전에 프로젝트를 추가하세요."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "시작하려면 프로젝트를 추가하세요."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "할 일 추가…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "작업 추가"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "첨부 파일 또는 기능 추가"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Claude 프로필 추가"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "이 스레드를 실행하려면 먼저 자격 증명을 추가하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "모델 추가"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "패턴 추가"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "프로필 추가"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "프로젝트 추가"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "프로젝트 추가"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "프로젝트 추가 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "리모트 추가"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "작성기에 추가"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "즐겨찾기에 추가"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "에이전트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "에이전트 ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "에이전트 채팅 (ACP / markdown). 명령 행은 이 크기에서 1px를 뺀 값을, 도구 및 계획 행은 2px를 뺀 값을 "
+"사용합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "에이전트에 오류가 발생했습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "에이전트가 활성 상태이며 준비되었습니다"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "에이전트가 현재 비활성화되어 있습니다"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "에이전트를 찾을 수 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "에이전트 레지스트리"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "에이전트 터미널 글꼴 크기"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "에이전트 업데이트 사용 가능"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "에이전트: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "에이전트: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "에이전트"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "에이전트 · 일반"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "AI 에이전트 오케스트레이터 — 터미널 및 기본 ACP를 통해 코딩 에이전트를 관리합니다."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "AI git 작업"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "모든 계정"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "모든 기기"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "모든 추론 강도"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "모든 파일"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "허용"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "에이전트가 쿠키 및 저장소를 읽고 쓸 수 있도록 허용"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "평가 허용"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "항상"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "항상 제외됨"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "다른 채팅에서도 이 동일한 트리를 사용합니다. 파일 복원으로 인해 해당 채팅의 변경 사항을 덮어쓸 수 있습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "앱 브라우저"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "화면 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "모양 모드"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "제공자 프리셋 적용"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "사용자의 승인 또는 응답이 필요합니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "승인"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "승인됨"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "승인됨"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "아카이브"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "{0} 보관"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "모두 보관"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "아카이브 스레드"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "보관된 스레드"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "<0>{0}0>을(를) 되돌리시겠습니까? 이 작업은 취소할 수 없습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "<0>{path}0>을(를) 되돌리시겠습니까? 이 작업은 취소할 수 없습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "스테이징되지 않은 모든 변경 사항을 되돌리시겠습니까? 이 작업은 취소할 수 없습니다."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "이 작업 공간에 대해 {0}에게 무엇이든 물어보세요"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "매번 물어보세요"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "질문하기"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "첨부"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "파일 첨부"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "스레드에 연결"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "할 일 독을 작성기에 고정"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "브라우저 선택 항목을 첨부했습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "오디오"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "인증"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "인증 필요"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "자동"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "자동 승인"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "다음 이후에 완료된 스레드 자동 보관"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "완료된 스레드 자동 보관 기간(일)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "자동 생성"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "자동 새로고침(분)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "자동 새로고침 간격(분), 0이면 끄기"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "자동 검토"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "터미널 패널 자동 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "명령을 실행하거나 작업 트리를 생성할 때 터미널 패널을 자동으로 표시합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "사용 가능"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "사용 가능한 ACP 에이전트"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "아바타 색상"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "아바타 색상 {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "뒤로"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "백그라운드 프로세스가 예기치 않게 종료되었습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "백그라운드 프로세스가 실행되고 있지 않습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "백그라운드 프로세스가 다시 시작되었습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "백그라운드 작업"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "기본 분기가 앞서 있습니다. 먼저 분기를 업데이트해야 합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "에이전트 터미널의 기본 글꼴 크기입니다. 좁거나 짧은 창에서는 자동으로 축소됩니다."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "터미널 패널의 기본 글꼴 크기입니다. 좁거나 짧은 창에서는 자동으로 축소됩니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Bash 출력"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "기본(CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Better (위스퍼 베이스)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "에이전트 실행 중 더 나은 상태 업데이트"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "바이너리"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "바이너리 파일 — 미리보기를 사용할 수 없습니다."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "바이너리 파일이거나 diff를 사용할 수 없음"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "여기서는 바이너리 파일을 편집할 수 없습니다."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "차단됨:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "굵게"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "아래쪽"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "'{branch}' 브랜치에는 '{path}'에 커밋되지 않은 변경 사항이 있습니다. 병합하기 전에 커밋하거나 스태시하세요."
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "<0>{0}0> 분기에 병합되지 않은 변경 사항이 있습니다:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "완전히 병합되지 않은 분기"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "브랜치 보호 규칙이 이 병합을 차단했습니다."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "브랜치"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "상위 폴더 찾아보기"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "GitHub 리포지토리를 찾아보거나 복제 URL을 붙여넣으세요."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "브라우저"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "브라우저 MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "OpenCode에 브라우저 MCP가 활성화됨"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "이 스레드에 대해 브라우저 MCP가 활성화되었습니다."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "브라우저 메뉴"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "브라우저 선택 대상(CLI 스레드)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "CLI 스레드에 대한 브라우저 선택 대상"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "예산 한도 도달"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "diff 생성 중…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "작성자: <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "프롬프트 기준"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "토큰 기준"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "브랜치 보호 규칙 우회"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "브랜치 보호 규칙 우회(관리자 병합)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "취소"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "새 Claude 프로필 취소"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "보류 중인 조정 취소"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "선택기 취소"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "취소됨"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "브랜치 이름 없이 기본 작업 트리 경로를 생성할 수 없습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "브랜치를 전환할 수 없습니다. 먼저 변경 사항을 커밋하거나 숨기세요."
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "사용자 변경"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "변경 내역"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "변경 사항"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "변경사항({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "PR의 변경 사항"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "변경 요청됨"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "채널"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "채팅"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "채팅 명령"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "확인"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "업데이트 확인"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "선택한 장치의 실시간 입력 레벨을 확인하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "확인 중…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "검사"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "폴더를 선택하세요…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "{env}에 로그인하는 방법을 선택하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "로그인 방법을 선택하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Lightcode 인터페이스의 표시 언어를 선택하세요."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "첨부할 스레드를 선택하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Lightcode 및 브라우저 팝업의 링크를 Lightcode에 유지할지 아니면 외부에서 열지 선택합니다."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Claude {0} 프로필이 저장되었습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Claude {displayName} 프로필이 추가되었습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Claude 프로필 구성 디렉터리"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Claude 프로필 이름"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Claude 프로필이 삭제되었습니다."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "정리 스크립트"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "검색 기록 지우기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "캐시 지우기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "쿠키 지우기"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "검색 지우기"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "CLI 후크"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "클론"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "저장소 복제"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "복제 URL"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "{cloneTarget} 복제 중"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "복제 중…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "닫기"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "{purposeNoun} 터미널 닫기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "브라우저 닫기"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "편집기 닫기"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "편집기 탭 닫기"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "목표 닫기"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "그룹 닫기"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "창 닫기"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "창 닫기"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "계획 종료"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "PR 닫기"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "미리보기 닫기"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "검색 닫기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "분할 닫기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "하위 에이전트 닫기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "하위 에이전트 닫기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "하위 에이전트 패널 닫기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "탭 닫기"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "트레이로 닫기"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "사용 세부정보 닫기"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "닫힘"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "코드가 복사되었습니다."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "접기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "{label} 접기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "모두 접기"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "모두 접기"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "모든 폴더 접기"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "작성기 접기"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "오류 접기"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "터미널 작성기 접기"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "할 일 도크 접기"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "명령"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "명령(예: npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "명령"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "댓글"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "댓글이 게시되었습니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "댓글을 달았습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "커밋"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "커밋 및 PR 작성"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "커밋 및 PR 언어"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "커밋 및 푸시"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "커밋 실패: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "커밋 메시지"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "커밋 메시지(Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "커밋 메시지 생성"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "커밋 옵션"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "커밋"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "컨텍스트 압축"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "완료"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "이 스레드를 실행하려면 먼저 {0} 로그인을 완료하세요."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "{env}에 대한 {0} 로그인을 완료하세요."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "{0} 로그인을 완료하거나 {1} 자격 증명을 저장하세요."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "{0} 로그인을 완료하세요."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "이 터미널의 프롬프트를 완료하세요. 완료되면 닫힙니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "완료"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "작성기"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "설정 디렉터리"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "충돌 해결사"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "충돌"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "콘솔"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "컨텍스트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "컨텍스트가 압축됨"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "{before} 토큰에서 압축된 컨텍스트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "압축된 컨텍스트:{before}→{after}토큰"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "컨텍스트 추출({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "{before} 토큰에서 수동으로 압축된 컨텍스트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "수동으로 압축된 컨텍스트:{before}→{after}토큰"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "컨텍스트가 {targetLabel}(으)로 전송되었습니다."
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "컨텍스트 사용량"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "계속"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "다른 제공업체에서 계속"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "다음에서 계속..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "@file 멘션 검색에 표시되는 파일을 제어합니다. 프로젝트별 재정의는 각 프로젝트의 설정에 적용됩니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "대화"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "복사됨"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "클립보드에 복사됨"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "복사"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "{0} 장치 코드 {1} 복사"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "현재 URL 복사"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "세부정보 복사"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "진단 복사"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "복사 실패"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "무시된 파일 복사"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "이미지 복사"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "메시지 복사"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "경로 복사"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "상대 경로 복사"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "커밋되지 않은 변경 사항을 여기에 복사합니다(이 브랜치에 유지)."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "병합을 중단할 수 없습니다: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "병합을 완료할 수 없습니다."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "컨텍스트를 추출할 수 없습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "커밋 메시지를 생성할 수 없습니다: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "파일을 읽을 수 없습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "저장소를 복제할 수 없습니다."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "커밋되지 않은 변경 사항을 새 작업 트리에 복사할 수 없습니다. 해당 변경 사항은 현재 브랜치에 남아 있습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "프로젝트를 생성할 수 없습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "저장소를 나열할 수 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "프로필 통계를 불러오지 못했습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "PR 초안 생성"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "파일 생성"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "새 브랜치 만들기"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "새 브랜치 만들기..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "PR 작성"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "PR 생성(자동)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "PR 액션 만들기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "PR 만들기…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "프로젝트 생성"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Pull Request 생성"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "작업 만들기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "생성:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "\"{newBranch}\"에 작업 트리를 만들었지만 변경 사항이 충돌하여 git stash에 남아 있습니다. 작업 트리에서 "
+"해결하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "자격 증명이 구성되었습니다."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "크레딧"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "현재 연속 기록"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "현재 연속 기록"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "맞춤"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "프로젝트 상황에 맞는 메뉴(오른쪽 클릭)에서 사용할 수 있는 사용자 정의 명령."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "다크"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "거절"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "기본값"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "기본 PR 생성 작업"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "기본 새 스레드"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "기본 권한"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "기본 스레드 제거"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "삭제"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "{0} 삭제"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "브랜치를 삭제하시겠습니까?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "파일 삭제"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "영구 삭제"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "스레드 삭제"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "스레드 삭제"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "스레드를 삭제하시겠습니까?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "할 일 삭제"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "작업트리 삭제"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "작업 트리 {0} 삭제"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "삭제:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "삭제 중"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "거부"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "거부하고 에이전트에게 다르게 해야 할 일을 알려주세요…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "설명"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "설명(선택사항)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "감지됨 <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "<0>(로컬)0> 감지됨"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "<0>{0}0> 감지됨"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "에이전트 감지 중…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "데브"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "개발 전용 재정의. LIGHTCODE DEV 빌드에서만 볼 수 있습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "컴포저 음성 입력 버튼에 사용되는 장치입니다."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "비활성화"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "{tierLabel} 추론 강도 비활성화"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "브라우저 MCP 비활성화"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "CLI 후크 플러그인 비활성화(L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "프로젝트 비활성화"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "외부 제공자가 통합하는 등급을 비활성화합니다 (예: High와 Max만 유지)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "비활성화됨"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "{path}에서 저장되지 않은 변경 사항을 삭제하시겠습니까?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "저장되지 않은 편집기 변경사항을 삭제하시겠습니까?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "코딩 에이전트 검색 중…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "닫기"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "오류 무시"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "기각된 리뷰"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "사이드바에 이름을 표시합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "문서"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "다시 묻지 마세요"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "후크 설치 제안을 표시하지 않음"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "완료"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "완료"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "완료 · 귀하의 의견을 기다리는 중"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "이미지 다운로드"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "“{0}”에 다운로드 중입니다. 대규모 리포지토리의 경우 시간이 걸릴 수 있습니다."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "음성 모델 다운로드 중{0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "음성 모델 다운로드 중..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "{v} 다운로드 중 — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "{versionLabel} 다운로드 중"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "초안"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "모델 선택기에 공급자가 표시되는 방식을 바꾸려면 드래그하세요."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "드래그하여 재정렬하세요. 편집하려면 두 번 클릭하세요."
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "첨부하려면 여기에 드롭하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "에이전트가 설치 또는 iTerm2 알림을 건드리지 않고 L2(OSC 9;4 진행)로 돌아갈 수 있도록 감독자에게 수신 후크 "
+"봉투를 삭제합니다. 다음 후크 이벤트에 적용됩니다. 다시 시작할 필요가 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "예: 업무"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "편집"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "파일 편집"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "프로필 편집"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "편집:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "편집기"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "에디터 LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "편집기 탭"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "노력과 맥락"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "추론 강도 단계"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "활성화"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "{tierLabel} 추론 강도 활성화"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "유형 확인, 완성 및 진단을 위한 언어 서버 지원을 활성화합니다. 언어 서버가 설치되어 있어야 합니다."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "시스템 설정에서 마이크 액세스를 활성화한 후 다시 시도하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "알림 활성화"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "프로젝트 활성화"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "설정에서 공급자 활성화"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "활성화됨"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "<0>쿠키0> 및 <1>저장1>을 활성화합니다. 쿠키는 세션 토큰을 포함할 수 있으며 저장소는 종종 인증 상태를 "
+"유지합니다. 에이전트와 에이전트가 방문하는 사이트를 모두 신뢰할 때만 활성화됩니다."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "고급(후크)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "저장소 URL을 입력하세요."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "계획 모드 시작"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "환경"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "환경 변수 이름"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "환경 변수 값"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "환경 변수"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "오류"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "오류"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "오류 · 에이전트에 오류가 발생했습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "패턴 제외"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "계획 모드 종료"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "코드 {0}(으)로 종료되었습니다. 다시 시도하려면 닫으세요."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "펼치기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "{label} 펼치기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "모두 펼치기"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "확장 오류"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "할 일 도크 확장"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "외부"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "외부 제공자"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "매우 높음"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "{0}에서 컨텍스트를 추출하는 중..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "실패"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "풀 요청을 닫지 못했습니다: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "풀 요청 생성 실패: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "프로필 통계를 불러오지 못했습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "풀 요청 병합 실패: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "빠르게"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "고속 모드"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "가장 빠름 (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "가장 빠름은 Whisper tiny를, 더 좋음은 Whisper base를 사용합니다."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "즐겨찾기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "가져오기"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "파일"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "파일 변경사항이 여기에 표시됩니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "파일이 너무 커서 미리 볼 수 없습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "파일이 더 이상 디스크에 존재하지 않습니다."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "표시하기에 파일이 너무 큽니다 ({0, plural, one {# 줄 변경됨} other {# 줄 변경됨}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "파일이 지원되지 않는 인코딩을 사용합니다."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "파일"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "{0}에 대한 파일"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "이러한 glob과 일치하는 파일은 @file 멘션 검색에서 숨겨집니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "리뷰를 마무리하세요"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "완료"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "완료됨 · 귀하의 의견을 기다리는 중"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Lightcode의 네이티브 런타임을 사용한 최고 수준의 Antigravity CLI 통합."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Lightcode의 기본 SDK 런타임을 사용한 최고 수준의 Claude Code 통합."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Lightcode의 기본 앱 서버 런타임을 사용한 최고 수준의 Codex CLI 통합."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Lightcode의 네이티브 런타임을 사용한 최고 수준의 Command Code CLI 통합."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Lightcode의 기본 런타임을 사용하는 최고 수준의 Grok Build CLI 통합."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Lightcode의 기본 SDK 런타임을 사용한 최고 수준의 OpenCode 통합."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "에이전트에서 수정"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "폴더 이름"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "강제삭제"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "강제 삭제하시겠습니까? 병합되지 않은 변경사항은 손실됩니다."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "포크"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "파일 포맷팅"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "앞으로"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "로그인된 {0} 세션을 찾았습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "최신 macOS와 유사하게 시스템 블러 효과(비브런시)로 사이드바에 프로스트 효과를 적용합니다. 지원되지 않는 환경에서는 반투명 "
+"색조로 대체됩니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "시스템 블러 위에 적용되는 {appearance} 모드 사이드바의 프로스트 강도입니다. 높을수록 테마 색상이 유지되고, 낮을수록 "
+"뒤 배경이 더 비칩니다."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "전체 액세스"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "전체화면 오버레이"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "일반"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "커밋 메시지 생성"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "PR 요약 생성"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "AI로 생성"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "생성된 이미지"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "스테이징된 변경 사항에서 커밋 메시지를 생성합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "새 스레드에 대한 짧은 제목을 생성합니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "작업 가져오기"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} 실패: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Git 리뷰"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Git 리뷰 모드"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "{0}의 Git 상태"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "{0}에 대한 Git 상태: Git 저장소가 아닙니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "GitHub 저장소"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "기본 프로젝트에서 각각의 새 작업 트리로 복사할 Gitignored 파일입니다. Gitignore 스타일 패턴, 한 줄에 "
+"하나씩(예: <0>.env.*0>)"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (선택 레이블)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "목표"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "설정한 목표"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "그룹"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "열린 스레드 그룹화"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "GUI 채팅 글꼴 크기"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "핸들"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "핸들"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "강제 새로고침"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "숨겨진 재개 가능 스레드는 5분마다 청소되고 이 유휴 기간이 지나면 언로드됩니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "숨기기"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "모두 숨기기"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "브라우저 숨기기"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "표준 런타임 항목 검사기 숨기기"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "컨텍스트 사용 세부정보 숨기기"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "모든 공급자의 모델 선택기에서 사용하지 않는 모델을 숨깁니다."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "패널 숨기기"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "런타임 디버그 패널 숨기기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "사이드바 숨기기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "터미널 숨기기"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "홈"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "홈 범위"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID:{0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "유휴"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "이미지"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "이미지 미리보기"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "비활성"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "물려받은"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "전역 설정 상속(현재 {0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "저장소 초기화"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "입력 레벨"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "표준 런타임 항목 검사"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "설치"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "설치"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "{env}에 {0}을(를) 설치합니다."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "스레드를 생성하려면 {0}을(를) 설치하세요."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "{0}을(를) 설치합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "{env} 설치"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "CLI 후크 설치"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "WSL에 설치: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "기본 공급자를 먼저 설치하십시오. 추가 프로토콜 에이전트에는 ACP를 사용하십시오."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Windows에 설치"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "패키지 설치"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "업데이트 설치"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "v{updateVersion} 설치"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "v{version} 설치"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "설치됨"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "설치 중"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "이 터미널에 설치 중입니다. 완료되면 닫힙니다."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "중단됨: 에이전트 세션이 완료되기 전에 종료되었습니다."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "이탤릭체"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "지금 막"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "브랜치 유지"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "스레드가 활발하게 작동하는 동안 시스템을 활성 상태로 유지합니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "bash 종료"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "언어"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "AI가 생성하는 커밋 메시지와 풀 요청 요약에 사용할 언어입니다. 스레드 제목은 항상 앱 언어를 따릅니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "작성기 받아쓰기를 기록할 때 음성 모델이 예상해야 하는 언어입니다."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "마지막 도구: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "스레드 시작"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "실행 중…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "댓글 남기기"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "적음"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "에이전트가 <0>eval0>을 호출하여 삽입된 페이지 내에서 임의의 JavaScript를 실행할 수 있습니다. 기본적으로 "
+"꺼짐 - 로드된 사이트와 에이전트를 신뢰할 때만 켜집니다."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "라이센스"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "누적 토큰"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "누적 토큰"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "라이트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "목록"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "패키지 나열"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "작업 나열"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "로드 중"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "계정 로드 중…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "차이점 로드 중..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "편집기 로드 중…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "파일 로드 중…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "메모 로드 중…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "PR 로드 중…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "레지스트리 로드 중..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "로드 중…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "로컬"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "로컬"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "{branch}에서 가져오기 전에 로컬 변경 사항을 숨겨야 합니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "위치"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "로그인"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "로그아웃"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "로그인"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "로그인"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "로그인 {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "로그인이 필요합니다"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "로그아웃"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "로그아웃 {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "최장 연속 기록"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "최장 연속 기록"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "최장 작업"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "사이드바를 반투명하게 만듭니다 — Windows 11에서는 시스템 블러 효과, 그 외 환경에서는 반투명 색조를 사용합니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "수동 정렬"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "모두 완료로 표시"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "완료로 표시"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "완료되지 않음으로 표시"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "완료로 표시"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "완료로 표시"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "앱 언어와 동일하게"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "시스템을 일치시키거나 밝게 또는 어둡게 만듭니다."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "최대화"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "브라우저 최대화"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "MCP 서버"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "병합 및 제거"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "병합 충돌을 해결해야 합니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "병합 실패"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "병합에 충돌이 있습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "병합에 충돌이 있습니다:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "로컬로 병합 및 작업 트리 제거"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "병합 방법"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "병합 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "PR 병합: 커밋"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "PR 병합: 리베이스"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "PR 병합: 스쿼시"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "소스에 병합"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "작업 트리 병합"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "병합됨"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "병합이 차단되었습니다."
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "보낸 메시지"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "마이크"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "마이크 {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "마이크 액세스가 꺼져 있습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "마이크 입력 레벨"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "마이크 권한이 거부되었습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "이 환경에서는 마이크 테스트를 사용할 수 없습니다."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "브라우저를 오른쪽 패널로 최소화"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "패널로 최소화"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "모드"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "모델 ID"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "모델 레이블"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "모델 순서"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "모델 사용량"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "모델"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "모드"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "많음"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "추가 승인 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "더 많은 커밋 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "추가 PR 작업"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "더 많은 PR 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "추가 풀 요청 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "더 많은 동기화 옵션"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "가장 활발한 시간"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "가장 많이 사용한 플러그인"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "가장 많이 사용한 제공자"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "가장 많이 사용한 추론 강도"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "이동"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "변경 사항을 새 작업 트리로 이동"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "할 일 도크를 오른쪽 패널로 이동"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "변경 사항을 \"{newBranch}\"의 새 작업 트리로 옮겼습니다. \"{currentBranch}\"은 이제 깨끗합니다."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "변경사항 이동 중…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "이름"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "프로젝트 이름을 지정하고 만들 위치를 선택하세요."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "네이티브"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "네이티브 공급자"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "네이티브 지원"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "승인 필요"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "주의가 필요함"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "주의 필요 · 승인 필요"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "주의 필요 · 답변 필요"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "답장이 필요함"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "새로운 동작 명령"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "새 작업 이름"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "새 브랜치 이름..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "새로운 Claude 프로필 구성 디렉터리"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "새로운 Claude 프로필 이름"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "새 파일"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "새 폴더"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "새 프로젝트"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "새 탭"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "새 스레드"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "새 스레드"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "새 스레드 — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "새 스레드(초안)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "이 할 일의 새 스레드"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "작업 트리의 새 스레드"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "새 작업 트리"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "다음 이미지"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "활성 브라우저 탭이 없습니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "활성 세션 없음"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "아직 활동이 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "추가 Claude 프로필이 없습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "PR 요약을 생성할 수 있는 에이전트가 없습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "이 단계에는 에이전트가 없습니다."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "아직 설치된 에이전트가 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "설치된 에이전트가 없습니다."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "아직 추적된 AI 커밋, PR, 충돌 해결이 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "보관된 스레드가 없습니다."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "브랜치를 찾을 수 없습니다."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "브라우저 탭이 열려 있지 않습니다."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "변경사항 없음"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "표시할 변경사항이 없습니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "이 PR에 대해 보고된 검사가 없습니다."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "명령을 찾을 수 없습니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "커밋을 찾을 수 없습니다."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "콘텐츠 스트림이 없습니다."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "아직 대화가 없습니다. 가장 먼저 댓글을 남겨보세요."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "아직 데이터가 없습니다"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "아직 데이터가 없습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "설명 없음"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "{0}에 대한 차이점이 없습니다."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "{visiblePath}에는 차이가 없습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "이 메시지에 대해 저장된 파일 체크포인트가 없습니다."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "\"{0}\"과(와) 일치하는 파일이 없습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "GitHub CLI 계정을 찾을 수 없습니다. <0>gh auth login0>으로 로그인하거나 <1>복제 URL을 "
+"붙여넣으세요1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "\"{query}\"과(와) 일치하는 항목이 없습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "일치하는 항목이 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "일치하는 에이전트가 없습니다."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "일치하는 스레드 없음"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "아직 사용한 MCP 도구가 없습니다."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "아직 메시지가 없습니다"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "마이크를 찾을 수 없습니다."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "모델을 찾을 수 없습니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "다른 에이전트가 설치되어 있지 않습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "패턴이 없습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "아직 단계가 없습니다."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "프롬프트 없음"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "추적 중인 공급자가 없습니다."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "아직 준비된 공급자가 없습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "원격이 구성되지 않았습니다. push 및 pull을 활성화하려면 원격을 추가하세요."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "저장소를 찾을 수 없습니다."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "이 스레드에는 아직 런타임 항목이 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "아직 사용한 스킬이 없습니다."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "음성이 감지되지 않았습니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "단계적 변경 없음"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "아직 사용한 서브에이전트가 없습니다."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "지원되는 에이전트가 감지되지 않았습니다."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "스레드 없음"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "아직 스레드가 없습니다."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "보고된 창 없음"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "작업 트리 없음"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "줄바꿈 없음"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "없음"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Git 저장소가 아닙니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Git 저장소가 아님"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "찾을 수 없음"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "설치되지 않음"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "실행되지 않음"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "로그인되지 않음"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "지원되지 않음"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "메모"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "아직 추적된 항목이 없습니다. 사용하면 여기에 표시됩니다."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "알림"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "L2 CLI 스레드에 대해 알림"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "나에게 알림"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "꺼짐"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "이전"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "켜짐"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "포커스가 없을 때만"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "열기"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "{label} 열기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "터미널 열기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "먼저 스레드를 열어 연결하세요."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "모두 열기"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "그룹에서 모두 열기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "페이지로 열기"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "패널로 열기"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "브라우저 열기"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "체크 열기"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "명령 팔레트 열기"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "GitHub에서 커밋 열기"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "충돌 해결 도구 열기 위치:"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "대화상자 열기"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "파일 열기"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "파일 열기"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "전체 화면 열기"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Git 패널 열기"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Git 검토 열기"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Git 검토를 오른쪽 패널이나 전체 페이지로 엽니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "이미지 미리보기 열기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "편집기에서 열기"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "링크 열기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "새 탭 열기"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "새 스레드를 전체 페이지 또는 병렬 패널로 엽니다."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "PR #{0} 열기"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "GitHub에서 PR 열기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "미리보기 열기"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "프로젝트 설정 열기"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "요청 열기"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "필수 URL 열기"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "설정 열기"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "설정 열기"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "하위 에이전트 열기: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "노력 선택 도구 열기"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "모델 선택기 열기"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "{0} 열림 (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "선택적 상태 후크. 설치된 후크는 자동으로 업데이트됩니다. 누락된 후크는 자동으로 설치되지 않습니다."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "옵션"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "또는 맞춤 답변을 작성하세요."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "결과"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "사용 속도 초과 — 조기 소진"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Claude 기본값을 재정의합니다 — 예: ANTHROPIC_BASE_URL 및 ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "이 프로젝트의 전역 설정을 재정의합니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "패키지 구성"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "패키지 관리자"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "페이지"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "패널"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "붙여넣기"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "여기에 <0>{0}0>을 붙여넣으세요. 복사하려면 클릭하세요."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "입력에 붙여넣기"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "일시중지됨"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "최고 활동일"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "최고 활동일"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "보류 중"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "검토 대기 중"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "조정 대기 중"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "권한"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "요소 선택"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "아이콘 선택"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "선택기 실패"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "선택 도구가 첨부파일을 반환하지 않았습니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "상단에 고정"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "고정됨"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "계획"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "알림이 표시되면 소리를 재생합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "알림 소리 재생"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "사용자 지정 환경 변수, 모델 이름, 추론 강도 단계로 이 프로필을 Anthropic이 아닌 제공자(z.ai 등)로 지정합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Lightcode에 맞게 조정된 인기 있는 편집기 테마입니다. 각각은 위의 밝은 모드 또는 어두운 모드를 따릅니다."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "PR 작업"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "PR 옵션"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "PR 리뷰"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "PR 섹션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "PR 제목(자동 생성하려면 비워두세요)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "사전 커밋 후크 실패"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "프리셋"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "작업 중 수면 방지"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "미리보기 {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "이전 이미지"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "프로필"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "프로필"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "프로젝트"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "프로젝트 이름"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "프로젝트 노트"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "프로젝트 설정"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "전역 검색 설정 위에 프로젝트별 재정의가 적용됩니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "프롬프트"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "프롬프트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "제안된 계획"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "공급자"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "공급자"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "공급자가 토큰 사용을 보고하지 않았습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "제공자 프리셋"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "공급자"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "공급자"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "풀"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "풀 ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "풀 ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "풀 ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "풀이 완료되지 않았습니다. 로컬 변경 사항은 Lightcode 스태시에 남아 있습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "풀 실패: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "{0}에서 풀하시겠습니까?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "{sourceBranch}({sourceAhead})에서 풀"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "소스에서 풀({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "풀 리베이스({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "풀 요청 옵션"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "푸시"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "푸시({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "푸시({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "푸시 ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "푸시 실패: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "질문"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "할당량 도달"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "소진됨"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "소진 ·{resets}에서 재설정"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "속도 제한"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "속도 제한에 도달했습니다. 잠시 후 다시 시도하세요."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "로컬 변경 사항을 다시 적용하면 충돌이 발생합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "재로그인"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "준비"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "검토 준비 완료"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "추론"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "최근"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "최근 스레드"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "공개 API 요금으로 로컬 로그에서 재구성되며 구독 계획에 대한 실제 청구서를 반영하지 않습니다. 사용량 패널에만 표시됩니다."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "새로고침"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "{0} 인증 새로 고침"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "감지된 에이전트 새로 고침"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "레지스트리 새로 고침"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "N분마다 백그라운드에서 사용량을 새로 고칩니다. 끄려면 0으로 설정합니다(수동만 해당). 최소 2분 간격은 공급자 속도 제한을 "
+"준수합니다."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "{0} 인증 상태를 새로 고치는 중입니다."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "{env} {0} 인증 상태를 새로 고치는 중입니다."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "새로고침"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "원격"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "원격 이름"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "원격 URL"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "제거"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "{0} 제거"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "패널에서 {0} 제거"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "{pattern} 제거"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "작업 제거"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Claude 프로필 삭제"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "환경 변수 제거"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "즐겨찾기에서 제거"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "그룹에서 제거"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "패널에서 제거"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "모델 제거"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "프로젝트 제거"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "작업 트리를 삭제하시겠습니까?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "이름 바꾸기"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "그룹 이름 바꾸기"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "스레드 이름 바꾸기"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "렌더러가 충돌했습니다."
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "시작하는 동안 렌더러가 실패했습니다."
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "렌더러에서 React 오류가 발생했습니다."
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "렌더러에서 잡히지 않는 오류가 발생했습니다."
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "렌더러에서 처리되지 않은 프로미스 거부가 발생했습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "{0} 재정렬"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "{label} 재정렬"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "문제 신고"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "저장소"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "저장소"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "저장소 사전 수신 후크가 병합을 차단하고 있습니다."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "저장소 URL"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "변경 요청"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "요청 세부정보"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "변경을 요청했습니다"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "필수 검토, 대화 또는 상태 확인이 충족되지 않았습니다."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "재설정"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "모델 순서 재설정"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "사이드바 프로스트를 기본값으로 재설정"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "기본값으로 재설정"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "브라우저 서랍 크기 조정"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "열 크기 조정"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Git 패널 크기 조정"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "메모 및 할 일 크기 조정"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "행 크기 조정"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "사이드바 크기 조정"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "분할 크기 조정"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "터미널 패널 크기 조정"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "리베이스 또는 병합 중 병합 충돌을 해결합니다."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "복원"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "브라우저 복원"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "스레드 복원"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "관리자 권한으로 다시 시도"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "앱으로 돌아가기"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "파일 탐색기에 표시"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "파일 트리에 표시"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "되돌리기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "모두 되돌리기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "모든 변경사항 되돌리기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "변경사항 되돌리기"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "체크포인트로 되돌리시겠습니까?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "이 체크포인트로 되돌리기"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "변경사항 검토"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "리뷰 코멘트"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "결정 검토"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "요청 시 검토"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "PR 검토"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "{0}에 대한 PR #{prNumber} 검토"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "오른쪽"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "오른쪽 패널"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "실행"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "{0} 실행"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "이 스레드가 실행되기 전에 {0}을(를) 실행하십시오."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "{loginCommand}을 실행하여 로그인합니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "명령 실행"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "별도의 작업 트리에서 실행"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "가능한 경우 GPU에서 로컬 전사를 실행합니다."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "터미널 명령 실행"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "실행 중"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "작업 트리가 제거되기 전에 실행됩니다(예: <0>rm -rf node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "새 작업 트리가 생성된 후 터미널에서 실행됩니다(예: <0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "조기 소진"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "{runOut} 후 소진"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "런타임"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "런타임 디버그"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "런타임 옵션"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "저장"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "{0} 자격 증명을 저장합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Claude 프로필 저장"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "파일 저장"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "저장된 자격 증명은 모든 환경에서 공유됩니다."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "설치된 CLI를 찾기 위해 {wslDistro}을(를) 검색하는 중입니다. 이 작업은 일반적으로 몇 초 정도 걸립니다."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "설치된 CLI를 찾기 위해 Windows 및 WSL을 검색합니다. 이 작업은 일반적으로 몇 초 정도 걸립니다."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "설치된 CLI를 찾기 위해 시스템을 검색합니다. 이 작업은 일반적으로 몇 초 정도 걸립니다."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "스크립트"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "터미널 스크롤백 버퍼의 스크롤 속도 승수입니다."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "맨 아래로 스크롤"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "검색"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "에이전트 검색"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "에이전트 검색..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "브랜치 검색..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "파일 검색"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "모델 검색"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "모델 검색..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "주소 검색 또는 입력"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "저장소 검색"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "저장소 검색…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "런타임 항목 검색…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "스레드 검색"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "스레드 검색"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "검색…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "검색 중..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "검색 중…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "자세히 보기"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "선택"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "트리에서 파일을 선택하세요"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "편집을 시작하려면 파일을 선택하세요."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "저장소를 선택하세요."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "계정 선택"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "프롬프트와 결과를 보려면 에이전트를 선택하세요."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "브랜치 선택"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "기기 선택"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "모델 선택"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "프로젝트 선택"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "메시지 보내기..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "메시지 보내기"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "선택 항목을 터미널로 보냈습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Claude Code 계정을 설정 디렉터리별로 분리하거나, 프로필을 외부 제공자(z.ai 등)로 지정합니다. 프로필을 열어 환경 "
+"변수, 모델, 추론 강도를 구성하세요."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "실험 목표 설정 또는 보기"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "설정"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "설정 스크립트"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "공유"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "활동 공유하기"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "사이드바에 간단한 공급자별 사용량 링을 표시합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "OS 수준 에이전트 세션에 대해 프로젝트 없는 홈 범위를 표시합니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "모두 표시"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "북마크바 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "사이드바에 원 표시"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "작성기 표시"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "컨텍스트 사용 세부정보 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "예상 비용 표시"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "파일 탐색기에 표시"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "간략히 보기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "더 보기"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "알림 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "스레드 상태가 변경되면 알림을 표시합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "열린 링크 표시"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "미리보기 표시"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "런타임 디버그 패널 표시"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "사이드바 표시"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "소스 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "작성기에 마이크 버튼을 표시합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "음성 입력 버튼 표시"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "사이드바 프로스트"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "로그인"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "로그인이 필요합니다"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "로그인이 필요합니다"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "에이전트 CLI로 로그인합니다."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "{label} 로그아웃"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "로그인됨"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "로그인 중"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "로그인 중…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "{env} 로그아웃 중입니다. 감지된 에이전트는 완료되면 새로 고쳐집니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "로그아웃합니다. 감지된 에이전트는 완료되면 새로 고쳐집니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "스킬: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "스킬"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "탐색한 스킬"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "일부 검사가 실패했거나 보류 중입니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "생성순으로 정렬"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "마지막 업데이트순으로 정렬"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "스레드 정렬"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "터미널 분할"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "분할 보기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "스테이지"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "모두 스테이지"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "스테이지됨"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "스테이지됨"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "스테이지됨 ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "시작"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "사용량을 보려면 {appName}을(를) 시작하세요"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "선택한 텍스트에서 새 스레드 시작"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "이 할 일에서 새 스레드를 시작하세요"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "처음부터 시작하세요"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "터미널 네이티브 스레드에서 축소된 작성기를 시작합니다. 축소된 작성기는 브라우저 요소 선택을 터미널로 바로 라우팅합니다."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "음성 입력 시작"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "맥락 없이 시작하기"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "{targetLabel} 스레드를 시작했습니다."
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "시작 중"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "음성 입력 시작"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "시작 중…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "보관 및 끌어오기"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "상태는 터미널 출력(L2)에서 추론됩니다. 구조화된 업데이트를 위해 설정에서 후크 플러그인을 설치하세요."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "상태는 ACP(에이전트 제어 프로토콜)에 의해 제공됩니다."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "상태 업데이트는 CLI 후크 플러그인에서 제공됩니다."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "상태:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "중지"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "응답 중지"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "작업 중지"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "음성 입력 중지"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "일반 텍스트로 저장"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "비밀로 저장 (저장 시 암호화)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "하위 에이전트"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "하위 에이전트를 찾을 수 없습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "하위 에이전트 결과"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "하위 에이전트"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "제출"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "의견을 제출하고 변경사항 병합을 승인하세요."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "병합하기 전에 해결해야 하는 피드백을 제출하세요."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "명시적인 승인 없이 피드백을 제출하세요."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "리뷰 제출"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "감독됨"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "세션이 연결되면 지원 모드가 나타납니다."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "지원:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "메모와 할 일 바꾸기"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "브랜치 전환"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "모드 전환"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "모드 전환: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "프로젝트 전환"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "이 채팅을 에이전트 모드로 전환하세요"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "이 채팅을 계획 모드로 전환하세요"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "동기화"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "동기화(리베이스)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "동기화 ↓{behind}↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "동기화 실패: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "동기화 옵션"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Cloud와 동기화"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "시스템"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "시스템 브라우저"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "시스템 기본값"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "스크린샷 찍기"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "대상 브랜치"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "대상 공급자"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "작업 출력"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "{0}에게 다음에 무엇을 해야 할지 알려주세요..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "대상 공급자에게 다음에 무엇을 해야 할지 알려주세요..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "터미널"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "{0}용 터미널"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "터미널 입력"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "터미널이 준비되지 않음 - 작성기에 선택 항목이 추가되었습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "터미널 패널 글꼴 크기"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "터미널 위치"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "터미널 스크롤 속도"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "터미널 탭"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "마이크 테스트"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "에이전트"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "앱"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "선택한 폴더"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "일반 앱 셸을 렌더링할 수 없습니다. 아래 진단은 다시 로드하기 전에 표시되므로 오류를 조사할 수 있습니다."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "대상 공급자"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "테마"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "생각 중"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "이 에이전트는 설치되지 않았습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "이 환경"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "이 파일은 내장 편집기에 비해 너무 큽니다."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "이 파일은 지원되지 않는 인코딩을 사용합니다."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "이렇게 하면 원격에서 \"{0}\" 분기가 영구적으로 삭제됩니다."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "이렇게 하면 \"{0}\" 분기가 영구적으로 삭제됩니다."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "이렇게 하면 체크포인트 스냅샷을 사용할 수 있을 때 이후 메시지가 제거되고 파일이 복원됩니다."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "이렇게 하면 \"{0}\"의 작업 트리가 제거되고 연결된 스레드 {1, plural, one {#개} other {#개}}가 "
+"닫힌 다음 분기가 삭제됩니다."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "이렇게 하면 \"{0}\"의 작업 트리가 제거된 다음 분기가 삭제됩니다."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "이 스레드는 작업 트리 <0>{0}0>을 사용합니다. 작업 트리 디렉터리도 제거하시겠습니까?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "이 작업 트리에는 로컬 변경 사항이 있습니다. Lightcode는 일시적으로 이를 숨기고 {0}에서 가져온 다음 변경 사항을 "
+"다시 적용할 수 있습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "생각"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "스레드"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "스레드 + 작업 트리"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "스레드 컨텍스트 사용량"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "스레드 도크"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "스레드를 시작하지 못했습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "스레드가 완료되었거나 입력을 기다리는 중입니다."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "스레드 목표 도크"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "스레드가 이미 언로드되었습니다."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "스레드 모드"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "스레드만"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "스레드 정렬 순서"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "스레드 할 일 도크"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "스레드"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "완료로 표시된 스레드 중 며칠 동안 건드리지 않은 스레드는 앱 실행 시 자동으로 보관됩니다. 비활성화하려면 0으로 설정합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "제목 생성"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "할 일"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "빠른 모드 전환"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "선택기에서 모델을 숨기려면 모델을 끄세요."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "터미널 표시 전환"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "토큰"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "{0}의 토큰"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "도구 검색"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "전체 프롬프트"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "사용한 전체 스킬"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "전체 스레드"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "{label} 사용량 추적"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "공급자별 세션, 주별 및 월별 사용량을 추적합니다. 사용 기간(윈도우)은 각 공급자가 보고합니다. 예상 비용은 로컬 로그에서 "
+"재구성됩니다."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "추적 꺼짐"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "음성 받아쓰는 중"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "반투명 사이드바"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "공급자별로 추적을 켜거나 끕니다. 비활성화된 공급자는 자동 새로 고침으로 건너뜁니다."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "명령을 입력하세요"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "{0}을(를) 인증할 수 없습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "WSL 작업 트리 디렉터리 \"{path}\"을(를) 생성할 수 없습니다."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "{0} 후크를 설치할 수 없습니다."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "{0}을(를) 설치할 수 없습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "{0}을(를) 로그아웃할 수 없습니다."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "{0} 로그인을 열 수 없습니다."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "파일을 열 수 없습니다."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "{0} 상태를 새로 고칠 수 없습니다."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "{0}을(를) 새로 고칠 수 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Claude 프로필을 새로 고칠 수 없습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "{0} 자격 증명을 제거할 수 없습니다."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "작업 트리를 제거할 수 없습니다."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "WSL 배포판 \"{distro}\"의 홈 디렉터리를 확인할 수 없습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "{0} 자격 증명을 저장할 수 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Claude {displayLabel} 프로필을 저장할 수 없습니다."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "{label}을(를) 시작할 수 없습니다."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "{0}({envName})을 업데이트할 수 없습니다: {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "{0}({envName})을 업데이트할 수 없습니다."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "{0} 후크를 업데이트할 수 없습니다."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "{0}을(를) 업데이트할 수 없습니다: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "{0}을(를) 업데이트할 수 없습니다: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "{0}을(를) 업데이트할 수 없습니다."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "모두 그룹 해제"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "통합 보기"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "제거"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "알 수 없음"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "알 수 없는 프로젝트"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "무제한"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "다음 이후에 유휴 스레드 언로드"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "다음 시간 이후 유휴 스레드 언로드(분)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "스레드 언로드"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "완료 표시 해제"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "완료 표시 해제"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "단계 미지정:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "고정 해제"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "언스테이지"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "모두 언스테이징"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "스테이징되지 않음"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "지원되지 않음"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "업데이트"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "{0}을(를) {updateLabel}(으)로 업데이트"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "업데이트 가능"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "브랜치 업데이트"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "업데이트 오류:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "업데이트 방법"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "작업 업데이트"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "{updateLabel}(으)로 업데이트"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "{0}에 대한 {updateLabel}(으)로 업데이트"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "{0}({env})에 대한 {updateLabel}(으)로 업데이트"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "v{0}(으)로 업데이트"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "v{latestRegistryVersion}(으)로 업데이트"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "병합 커밋으로 업데이트"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "리베이스로 업데이트"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "{0} 업데이트됨"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "업데이트 중"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "{0} 업데이트 중"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "{0}({env}) 업데이트 중"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "사용량"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "사용량 지원 안 됨"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "사용 설정"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "사용량을 알 수 없음"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "기존 폴더 사용"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "구성 사용"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "감지된 세션을 사용하시겠습니까?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "무시 파일 사용"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "세션 사용"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "사용 추적을 위해 이 계정을 사용하거나 계속하기 전에 브라우저에서 사용자를 변경하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "WebGPU 가속 사용"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "사용됨"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "내장 Claude 모델 목록을 사용합니다."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} 사용 가능"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "값"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "버전"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "{0}을(를) 통해"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "보기"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "표시되는 {0} 모델"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "보이는 모델"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "이 환경에서는 음성 입력을 사용할 수 없습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "음성 입력 언어"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "음성 입력 모델"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "스레드 시작이 완료될 때까지 기다리세요."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "{authEnv} {authMethodName} 인증을 기다리는 중입니다. 감지된 에이전트는 완료되면 새로 고쳐집니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "{authMethodName} 인증을 기다리는 중입니다. 감지된 에이전트는 완료되면 새로 고쳐집니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "{env} {methodName} 인증을 기다리는 중입니다. 감지된 에이전트는 완료되면 새로 고쳐집니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "{methodName} 인증을 기다리는 중입니다. 감지된 에이전트는 완료되면 새로 고쳐집니다."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "에이전트가 중지되기를 기다리는 중"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "워크플로가 에이전트를 생성하기를 기다리는 중…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "깨우기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "{interval} 후 깨우기"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "{interval} 후 깨우기: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "깨우기: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "쉘 환경 준비 중…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "쉘 환경 준비 중..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "WSL 셸 환경 준비 중…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "웹 검색"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "웹사이트"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "PR 만들기 버튼의 기본 기능: 대화 상자를 열어 제목과 설명을 먼저 편집하거나 자동 생성하여 한 번의 클릭으로 PR을 "
+"만듭니다. 버튼 메뉴에서 전환할 수도 있습니다."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "활성화되면 검색은 <0>.gitignore0> 항목을 존중합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Lightcode 브라우저 탭에서 링크가 열리면 브라우저가 표시되는 위치를 선택하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "꺼져 있으면 상태가 OSC 대체(CLI 후크 플러그인 없음)에서 나오는 터미널 스레드의 알림을 억제합니다."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "표시되는 스레드에 대한 인앱 토스트를 표시하는 경우입니다."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "창을 닫을 때 시스템 트레이에서 Lightcode를 계속 실행하십시오. 닫을 때 종료하려면 비활성화하세요."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "브라우저 요소 선택기 선택이 터미널 기본 스레드에서 수행되는 위치입니다. 축소된 작성기는 항상 터미널로 라우팅됩니다."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "어디서부터 시작하시겠습니까?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "터미널 패널이 나타나는 위치."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "{0}에서 실행됩니다:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "윈도우"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "윈도우는 아직 지원되지 않습니다. WSL 내부 또는 macOS/Linux에 설치합니다."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "작업"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "현재 체크아웃에서 작업"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "{elapsed} 동안 작업함"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "워크플로"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "워크플로가 완료되었습니다. 하위 에이전트는 별도의 프로세스에서 실행되었으며 아직 여기에서 스트리밍되지 않습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "워크플로가 백그라운드에서 실행 중입니다. 하위 에이전트는 별도의 프로세스에서 실행되며 아직 여기에서 스트리밍되지 않습니다."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "워크플로 단계"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "워크플로 결과"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "워크플로: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "워크플로"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "작업 중"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "{elapsed} 동안 작업 중"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "작업 트리 깨끗함"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "작업 중…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "작업 트리"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "작업 트리 + 변경 사항"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "작업 트리 모드"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "작업 트리:{0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "작업 트리"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "줄 바꿈"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "댓글 쓰기"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "댓글을 쓰세요…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "이 프로젝트에 대한 메모를 작성하세요…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "이름"
diff --git a/src/renderer/locales/pl/messages.po b/src/renderer/locales/pl/messages.po
new file mode 100644
index 00000000..ed9ff122
--- /dev/null
+++ b/src/renderer/locales/pl/messages.po
@@ -0,0 +1,6074 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: pl\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(wersja robocza)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(brak wiadomości)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# plik} few {# pliki} many {# plików} other {# pliku}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# dostawca gotowy} few {# dostawcy gotowi} many {# "
+"dostawców gotowych} other {# dostawcy gotowych}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {cel} few {cele} many {celów} other {celu}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# innych czatów korzysta z tego samego drzewa. "
+"Przywracanie plików może zastąpić ich zmiany.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Kompozytor"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) jest już aktualny."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) zaktualizowano do wersji {newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) zaktualizowano."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} uwierzytelniony."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Usunięto dane uwierzytelniające {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0} – dane uwierzytelniające zostały zapisane."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "Urządzenia: {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{0} – haki zainstalowane dla {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "Zainstalowano haki {0}."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{0} – haki usunięte dla {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} cele instalacji"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} jest już aktualny."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0} – limit"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} – wylogowano."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} wymaga uwierzytelnienia."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} promptów - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} promptów - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} uruchomień"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} uruchomień"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} tokenów"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} tokenów - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} zaktualizowano do wersji {1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} zaktualizowano do wersji {latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} zaktualizowano do wersji {newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} zaktualizowano do wersji {resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} zaktualizowano."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "Wykorzystano {0}"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "Zapełnione w {0}%"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0} mies. temu"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Najedź kursorem, aby wyświetlić szczegóły "
+"statusu."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} dni"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} dni"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days} dni temu"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} wymaga uwierzytelnienia."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} pasujących"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} lub {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Tryb {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "Hak {hook} nie powiódł się"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours} godz. temu"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# agent gotowy} few {# agenci gotowi} "
+"many {# agentów gotowych} other {# agenta gotowego}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label} – użycie — otwórz panel użycia"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "Kontekst {maxLabel}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes} min temu"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} wymaga uwierzytelnienia."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Czyszczenie drzewa roboczego również nie powiodło się: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% zapełnienia"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (wyłączone)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Ustawienia: {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# otwarty} few {# otwarte} many {# otwartych} "
+"other {# otwartych}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# wynik} few {# wyniki} many {# wyników} "
+"other {# wyniku}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds} s temu"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} tokenów"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} tokenów"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} tokenów"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} tokenów"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "Widoczne {visibleCount} z {totalCount}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Wszelkie prawa zastrzeżone."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "Zaliczono <0>{passed}0> z {0} kontroli"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · szac."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% do resetu"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "obsługiwany agent kodujący"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Przerwij scalanie"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "O programie"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Zaakceptuj obie zmiany"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Zaakceptuj bieżącą zmianę"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Zaakceptuj zmianę przychodzącą"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Konto"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Opcje konta"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Konta"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Agenci ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Polecenie akcji"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Akcja przycisku szybkiego usuwania w wątkach paska bocznego."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Nazwa akcji"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Działania"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Aktywny"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Aktywność"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Analiza aktywności"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Metryka aktywności"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Dodaj"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Dodaj projekt przed zainstalowaniem agenta."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Dodaj projekt przed zalogowaniem."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Dodaj projekt, aby rozpocząć"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Dodaj zadanie…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Dodaj akcję"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Dodaj załącznik lub możliwość"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Dodaj profil Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Dodaj poświadczenia, zanim będzie można uruchomić ten wątek."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Dodaj model"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Dodaj wzór"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Dodaj profil"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Dodaj projekt"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Dodaj projekt"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Dodaj opcje projektu"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Dodaj zdalne repozytorium"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Dodaj do kompozytora"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Dodaj do ulubionych"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Agent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Agent ({subagent}):{description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Czat agenta (ACP / markdown). Wiersze poleceń używają tego rozmiaru "
+"minus 1 px; linie narzędzia i planu minus 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Agent napotkał błąd."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Agent jest aktywny i gotowy"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Agent jest aktualnie wyłączony"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Nie znaleziono agenta"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Rejestr agentów"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Rozmiar czcionki terminala agenta"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Dostępna aktualizacja agenta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Agent:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Agent:{subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Agenci"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Agenci · Ogólne"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Koordynator agentów AI — zarządzaj agentami kodującymi za pośrednictwem "
+"terminala i natywnego ACP."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Akcje AI w git"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Wszystkie konta"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Wszystkie urządzenia"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Wszystkie poziomy"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Wszystkie pliki"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Zezwól"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Zezwalaj agentom na odczyt/zapis plików cookie i przechowywanie"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Zezwól na ewaluację"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Zawsze"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Zawsze wykluczone"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Inny czat korzysta z tego samego drzewa. Przywrócenie pliku może "
+"zastąpić zmiany wprowadzone w czacie."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Przeglądarka aplikacji"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Wygląd"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Tryb wyglądu"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Zastosuj predefiniowanego dostawcę"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Wymagana jest zgoda lub odpowiedź od Ciebie."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Zatwierdź"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "zatwierdzony"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Zatwierdzone"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Archiwum"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Archiwum {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Archiwizuj wszystko"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Archiwum wątku"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Zarchiwizowane wątki"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Czy na pewno chcesz przywrócić <0>{0}0>? Tego nie można cofnąć."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Czy na pewno chcesz przywrócić <0>{path}0>? Tego nie można cofnąć."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Czy na pewno chcesz cofnąć wszystkie niezindeksowane zmiany? Tego nie "
+"można cofnąć."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Zapytaj {0} o cokolwiek na temat tego obszaru roboczego"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Zapytaj za każdym razem"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Zadaj pytanie"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Dołącz"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Dołącz pliki"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Dołącz do wątku"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Przypnij panel zadań do kompozytora"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Załączono zaznaczenie z przeglądarki."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Dźwięk"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Uwierzytelnianie"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Wymagane uwierzytelnienie"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Auto"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Automatyczne zatwierdzanie"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Automatycznie archiwizuj ukończone wątki po"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Automatyczna archiwizacja wykonanych wątków po (dniach)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Generuj automatycznie"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Automatyczne odświeżanie (minuty)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Interwał automatycznego odświeżania w minutach, 0, aby wyłączyć"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Automatyczny przegląd"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Automatyczne wyświetlanie panelu terminali"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Automatycznie pokazuj panel terminala podczas uruchamiania poleceń lub "
+"tworzenia drzew roboczych."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "dostępne"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Dostępni agenci ACP"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Kolor awatara"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Kolor awatara {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Powrót"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Proces w tle zakończył się nieoczekiwanie"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Proces w tle nie jest uruchomiony"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Proces w tle został wznowiony"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Zadania w tle"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Gałąź bazowa wyprzedza — gałąź musi najpierw zostać zaktualizowana."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Podstawowy rozmiar czcionki dla terminali agentów. Automatycznie "
+"zmniejsza się w wąskich lub niskich panelach."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Podstawowy rozmiar czcionki dla panelu terminala. Automatycznie "
+"zmniejsza się w wąskich lub niskich panelach."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Dane wyjściowe Basha"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Podstawowy (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Lepiej (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Lepsze aktualizacje statusu podczas działania agentów."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Binarny"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Plik binarny — podgląd niedostępny."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Plik binarny lub brak dostępnych różnic"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Nie można tutaj edytować plików binarnych."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "zablokowane:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Pogrubienie"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Dół"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "Gałąź „{branch}” zawiera niezatwierdzone zmiany w „{path}” — zatwierdź "
+"je lub ukryj (stash) przed scaleniem"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "Gałąź <0>{0}0> zawiera niescalone zmiany:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Gałąź nie została w pełni scalona"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Reguły ochrony gałęzi zablokowały to scalanie."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Gałęzie"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Wyszukaj folder nadrzędny"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Przeglądaj swoje repozytoria GitHub lub wklej adres URL do klonowania."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Przeglądarka"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Przeglądarka MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Przeglądarka MCP włączona dla OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "W przeglądarce włączono MCP dla tego wątku"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Menu przeglądarki"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Cel wyboru przeglądarki (wątki CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Cel wyboru przeglądarki dla wątków CLI"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Osiągnięto limit budżetu"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Budowanie różnic…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "przez <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "wg promptów"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "wg tokenów"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Omiń zasady ochrony gałęzi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Omiń reguły ochrony gałęzi (scalanie administracyjne)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Anuluj nowy profil Claude"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Anuluj oczekujące sterowanie"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Anuluj selektor"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "anulowane"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Nie można utworzyć domyślnej ścieżki drzewa roboczego bez nazwy gałęzi"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Nie można przełączać gałęzi — najpierw zatwierdź lub ukryj zmiany"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Zmień użytkownika"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Dziennik zmian"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Zmiany"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Zmiany ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Zmiany w PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Zażądano zmian"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Kanał"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Czat"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Polecenia czatu"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Sprawdź"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Sprawdź aktualizacje"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Sprawdź poziom sygnału wejściowego na żywo z wybranego urządzenia."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Sprawdzam…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Kontrole"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Wybierz folder…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Wybierz sposób logowania się do {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Wybierz sposób logowania."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Wybierz język wyświetlania interfejsu Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Wybierz wątek, do którego chcesz dołączyć"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Wybierz, czy linki z Lightcode i wyskakujących okienek przeglądarki "
+"mają pozostać w Lightcode, czy otwierać się na zewnątrz."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Profil Claude'a {0} został zapisany."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Dodano profil Claude {displayName}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Katalog konfiguracyjny profilu Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Nazwa profilu Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Usunięto profil Claude'a."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Skrypt czyszczący"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Wyczyść historię przeglądania"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Wyczyść pamięć podręczną"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Wyczyść pliki cookie"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Wyczyść wyszukiwanie"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "interfejs wiersza polecenia"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Haki CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Sklonuj"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Sklonuj repozytorium"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "Adres URL do sklonowania"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Klonowanie {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Klonowanie…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Zamknij"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Zamknij terminal {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Zamknij przeglądarkę"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Zamknij edytor"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Zamknij kartę Edytora"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Zamknij cel"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Zamknij grupę"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Zamknij okienko"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Zamknij okienko"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Zamknij plan"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Zamknij PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Zamknij podgląd"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Zamknij wyszukiwanie"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Zamknij podział"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Zamknij subagenta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Zamknij subagentów"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Zamknij panel subagentów"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Zamknij kartę"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Zamknij do zasobnika"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Zamknij szczegóły użycia"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Zamknięte"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Kod skopiowany."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Zwiń"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Zwiń {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Zwiń wszystko"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Zwiń wszystko"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Zwiń wszystkie foldery"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Zwiń kompozytor"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Zwiń błąd"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Zwiń kompozytor terminala"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Zwiń dok zadań do wykonania"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Polecenie"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Polecenie (np. npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Polecenia"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Komentarz"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Komentarz opublikowany"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "skomentował"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Zatwierdź"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Zatwierdź i utwórz PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Język commitów i PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Zatwierdź i wypchnij"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Zatwierdzenie nie powiodło się: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Komunikat zatwierdzenia"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Komunikat zatwierdzenia (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Generowanie komunikatu zatwierdzenia"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Opcje zatwierdzenia"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commity"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Kompaktowanie kontekstu"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Ukończono"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Dokończ logowanie {0}, zanim będzie można uruchomić ten wątek."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Dokończ logowanie {0} dla {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Dokończ logowanie {0} lub zapisz poświadczenia {1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Dokończ logowanie {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Wypełnij monity w tym terminalu. Zamyka się po zakończeniu."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "ukończone"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Kompozytor"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Katalog konfiguracji"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Rozwiązywanie konfliktów"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Konflikty"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Konsola"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Kontekst"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Kontekst skompaktowany"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Kontekst skompaktowany z {before} tokenów"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Kontekst skompaktowany: {before} → {after} tokenów"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Ekstrakcja kontekstu ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Kontekst ręcznie skompaktowany z {before} tokenów"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Kontekst ręcznie skompaktowany: {before} → {after} tokenów"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Kontekst przeniesiony do {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Użycie kontekstu"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Kontynuuj"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Kontynuuj u innego dostawcy"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Kontynuuj w..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Kontroluj, które pliki pojawiają się w wyszukiwaniu wzmianek @plik. "
+"Zastąpienia poszczególnych projektów są dostępne w ustawieniach każdego "
+"projektu."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Rozmowa"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Skopiowano"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Skopiowano do schowka"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Kopiuj"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Skopiuj {0} kod urządzenia {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Skopiuj bieżący adres URL"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Skopiuj szczegóły"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Kopiuj diagnostykę"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Kopiowanie nie powiodło się"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Skopiuj zignorowane pliki"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Kopiuj obraz"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Skopiuj wiadomość"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Skopiuj ścieżkę"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Skopiuj ścieżkę względną"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Skopiuj tutaj niezatwierdzone zmiany (zachowuje je w tej gałęzi)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Nie można przerwać scalania: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Nie można dokończyć scalania"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Nie udało się wyodrębnić kontekstu."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Nie można wygenerować komunikatu zatwierdzenia: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Nie można odczytać pliku."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Nie udało się sklonować repozytorium."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Nie można skopiować niezatwierdzonych zmian do nowego drzewa roboczego "
+"— pozostają one w bieżącej gałęzi."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Nie udało się utworzyć projektu."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Nie udało się wyświetlić listy repozytoriów."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Nie udało się wczytać statystyk profilu."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Utwórz wersję roboczą PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Utwórz plik"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Utwórz nową gałąź"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Utwórz nową gałąź..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Utwórz PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Utwórz PR (automatycznie)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Stwórz akcję PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Stwórz PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Utwórz projekt"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Utwórz żądanie ściągnięcia"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Utwórz zadanie"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Utwórz:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Utworzono drzewo pracy na „{newBranch}”, ale zmiany kolidują ze sobą i "
+"pozostają w skrytce git — rozwiąż je w drzewie pracy."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Poświadczenia są skonfigurowane."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Kredyty"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "obecna seria"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Obecna seria"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Niestandardowe"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Polecenia niestandardowe dostępne z menu kontekstowego projektu "
+"(kliknij prawym przyciskiem myszy)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Ciemny"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Odmów"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Domyślne"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Domyślna akcja Utwórz PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Domyślny nowy wątek"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Domyślne uprawnienia"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Domyślne usuwanie wątku"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Usuń"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Usuń {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Usunąć gałąź?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Usuń plik"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Usuń trwale"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Usuń wątek"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Usuń wątek"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Usunąć wątek?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Usuń zadanie"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Usuń drzewo robocze"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Usuń drzewo robocze {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Usuń:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Usuwanie"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Odmów"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Odmów i powiedz agentowi, co ma zrobić inaczej…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Opis"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Opis (opcjonalnie)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Wykryto <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Wykryto <0>(lokalnie)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Wykryto <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Wykrywanie agentów…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Dev"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Zastąpienia tylko w fazie rozwojowej. Widoczne tylko w kompilacji "
+"LIGHTCODE DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Urządzenie używane przez przycisk wprowadzania głosowego kompozytora."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Wyłącz"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Wyłącz poziom {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Wyłącz Browser MCP"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Wyłącz wtyczkę haka CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Wyłącz projekt"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Wyłącz poziomy, które zewnętrzny dostawca scala (np. zostaw tylko High "
+"i Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Wyłączone"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Odrzucić niezapisane zmiany w {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Odrzucić niezapisane zmiany edytora?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Odkrywanie agentów kodujących…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Odrzuć"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Odrzuć błąd"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "odrzucono recenzję"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Nazwa wyświetlana na pasku bocznym."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Dokumentacja"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Nie pytaj ponownie"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Nie pokazuj propozycji instalacji haka"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "zrobione"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Gotowe"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Gotowe · Oczekiwanie na Twoją odpowiedź"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Pobierz obraz"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Pobieranie do „{0}”. W przypadku dużych repozytoriów może to chwilę "
+"potrwać."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Pobieranie modelu głosu {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Pobieranie modelu głosu..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Pobieranie{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Pobieranie{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Wersja robocza"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Przeciągnij, aby zmienić kolejność dostawców w selektorze modeli."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Przeciągnij, aby zmienić kolejność; kliknij dwukrotnie, aby edytować"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Upuść tutaj, aby dołączyć"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Upuszcza przychodzące koperty haków na nadzorcę, dzięki czemu agenci "
+"wracają do poziomu L2 (postęp OSC 9;4) bez dotykania powiadomień "
+"dotyczących instalacji lub iTerm2. Działa od następnego zdarzenia "
+"przechwytywania — nie jest wymagane ponowne uruchomienie."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "np. Praca"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Edytuj"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Edytuj plik"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Edytuj profil"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Edycja:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Edytor"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "Edytor LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Zakładki edytora"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Wysiłek i kontekst"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Poziomy rozumowania"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Włącz"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Włącz poziom {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Włącz obsługę serwera języka na potrzeby sprawdzania typu, uzupełniania "
+"i diagnostyki. Wymaga zainstalowanego serwera językowego."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Włącz dostęp do mikrofonu w ustawieniach systemu, a następnie spróbuj "
+"ponownie."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Włącz powiadomienia"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Włącz projekt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Włącz dostawców w ustawieniach"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Włączone"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Włącza <0>pliki cookie0> i <1>przechowywanie1>. Pliki cookie mogą "
+"zawierać tokeny sesji, a pamięć często przechowuje stan "
+"uwierzytelnienia — włącz tę opcję tylko wtedy, gdy ufasz zarówno "
+"agentowi, jak i odwiedzanym przez niego witrynom."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Ulepszone (haki)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Wprowadź adres URL repozytorium."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Wejdź w tryb planu"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Środowisko"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Nazwa zmiennej środowiskowej"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Wartość zmiennej środowiskowej"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Zmienne środowiskowe"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "błąd"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Błąd"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Błąd · Agent napotkał błąd"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Wyklucz wzorce"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Wyjdź z trybu planu"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Zakończono z kodem {0}. Zamknij, aby spróbować ponownie."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Rozwiń"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Rozwiń {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Rozwiń wszystko"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Rozwiń błąd"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Rozwiń dok zadań do wykonania"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Zewnętrzny"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Zewnętrzny dostawca"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Bardzo wysoka"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Wyodrębnianie kontekstu z {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "nie powiodło się"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Nie udało się zamknąć żądania ściągnięcia: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Nie udało się utworzyć żądania ściągnięcia: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Nie udało się wczytać statystyk profilu."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Nie udało się scalić żądania ściągnięcia: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Szybki"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Tryb szybki"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Najszybszy (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "„Najszybszy” używa modelu Whisper tiny; „Lepszy” używa modelu Whisper "
+"base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Ulubione"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Pobierz"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Plik"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Tutaj pojawią się zmiany w plikach."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Plik jest zbyt duży, aby wyświetlić podgląd."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Plik nie istnieje już na dysku."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Plik zbyt duży, aby wyświetlić ({0, plural, one {zmieniono # wiersz} "
+"few {zmieniono # wiersze} many {zmieniono # wierszy} other {zmieniono # "
+"wiersza}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Plik używa nieobsługiwanego kodowania."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Pliki"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Pliki dla {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Pliki pasujące do tych globów są ukryte przed wyszukiwaniem wzmianek "
+"@file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Zakończ swoją recenzję"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Zakończono"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Zakończono · Oczekiwanie na Twoją odpowiedź"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Pierwszorzędna integracja Antigravity CLI z wykorzystaniem natywnego "
+"środowiska wykonawczego Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Pierwszorzędna integracja z Claude Code przy użyciu natywnego "
+"środowiska wykonawczego SDK Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Pierwszorzędna integracja Codex CLI z wykorzystaniem natywnego "
+"środowiska wykonawczego serwera aplikacji Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Pierwszorzędna integracja Command Code CLI przy użyciu natywnego "
+"środowiska wykonawczego Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Pierwszorzędna integracja Grok Build CLI przy użyciu natywnego "
+"środowiska wykonawczego Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Pierwszorzędna integracja OpenCode z wykorzystaniem natywnego "
+"środowiska wykonawczego SDK Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Napraw w Agencie"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Nazwa folderu"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Wymuś usunięcie"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Wymusić usunięcie? Niescalone zmiany zostaną utracone."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Formatuj pliki"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Naprzód"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Znaleziono zalogowaną sesję {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Zmatowienie paska bocznego systemowym efektem rozmycia (vibrancy), "
+"nawiązujące do nowszych wersji macOS. Tam, gdzie nie jest obsługiwane, "
+"używa półprzezroczystego odcienia."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Zmatowienie paska bocznego w trybie {appearance} na tle systemowego "
+"rozmycia. Wyższa wartość utrzymuje kolor motywu; niższa odsłania więcej "
+"tła."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Pełny dostęp"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Nakładka pełnoekranowa"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Ogólne"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Wygeneruj komunikat commita"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Wygeneruj podsumowanie PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Generuj za pomocą sztucznej inteligencji"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Wygenerowany obraz"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Generuje komunikaty commita na podstawie przygotowanych (staged) zmian."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Generuje krótkie tytuły nowych wątków."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Pobierz zadanie"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} nie powiódł się: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Recenzja Gita"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Tryb recenzji Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Status Git dla {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Status Git dla {0}: to nie jest repozytorium Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Repozytorium GitHuba"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Pliki ignorowane przez Git do skopiowania z głównego projektu do "
+"każdego nowego drzewa roboczego. Wzorce w stylu Gitignore, po jednym w "
+"wierszu (np. <0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (etykieta opcjonalna)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Cel"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Ustawione cele"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Grupa"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Grupuj otwarte wątki"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Rozmiar czcionki czatu GUI"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "identyfikator"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Identyfikator"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Twarde przeładowanie"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Ukryte wątki, które można wznowić, są czyszczone co 5 minut i "
+"rozładowywane po upływie tego okresu bezczynności."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Ukryj"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Ukryj wszystko"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Ukryj przeglądarkę"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Ukryj kanonicznego inspektora elementów środowiska wykonawczego"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Ukryj szczegóły użycia kontekstu"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Ukryj modele, których nie używasz, w selektorze modeli u każdego "
+"dostawcy."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Ukryj panel"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Ukryj panel debugowania środowiska wykonawczego"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Ukryj pasek boczny"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Ukryj terminal"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Strona główna"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Zakres domowy"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "Identyfikator: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Bezczynny"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Obraz"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Podgląd obrazu"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Nieaktywny"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "odziedziczone"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Dziedziczenie ustawienia globalnego (obecnie {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Zainicjuj repozytorium"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Poziom wejściowy"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Sprawdź kanoniczne elementy środowiska wykonawczego"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "zainstaluj"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Zainstaluj"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Zainstaluj {0} dla {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Zainstaluj {0}, aby utworzyć wątek."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Zainstaluj {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Zainstaluj {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Zainstaluj haki CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Zainstaluj w WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Najpierw zainstaluj natywnych dostawców; użyj ACP dla dodatkowych "
+"agentów protokołu."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Zainstaluj w systemie Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Zainstaluj pakiety"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Zainstaluj aktualizację"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Zainstaluj v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Zainstaluj v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Zainstalowano"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Instalowanie"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Instalacja w tym terminalu. Zamyka się po zakończeniu."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Przerwano: sesja agenta zakończyła się przed jej ukończeniem."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Kursywa"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "właśnie teraz"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Zachowaj gałąź"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Utrzymuj system w stanie czuwania, gdy dowolny wątek aktywnie działa."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Zakończ bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Język"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Język komunikatów zatwierdzeń i podsumowań żądań ściągnięcia "
+"generowanych przez AI. Tytuły wątków zawsze są zgodne z językiem "
+"aplikacji."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Język, jakiego powinien spodziewać się model mowy podczas transkrypcji "
+"dyktowania w polu wprowadzania."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Ostatnie narzędzie: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Uruchom wątek"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Uruchamiam…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Zostaw komentarz"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Mniej"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Umożliwia agentom wywoływanie <0>eval0> w celu uruchomienia dowolnego "
+"kodu JavaScript na osadzonej stronie. Domyślnie wyłączone — włącz tylko "
+"wtedy, gdy ufasz załadowanym witrynom i agentowi."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Licencja"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "tokeny ogółem"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Tokeny ogółem"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Jasny"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Lista"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Lista pakietów"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Lista zadań"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Ładowanie"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Ładuję konta…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Ładowanie różnic..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Ładowanie edytora…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Ładowanie pliku…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Ładowanie notatek…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Ładowanie PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Ładowanie rejestru..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Ładowanie…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "lokalny"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Lokalny"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Lokalne zmiany muszą zostać schowane przed pobraniem z {branch}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Lokalizacja"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Logowanie"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Wylogowywanie"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "login"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Zaloguj się"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Zaloguj się {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Wymagane logowanie"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Wyloguj się"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Wyloguj się {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "najdłuższa seria"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Najdłuższa seria"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Najdłuższe zadanie"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Uczyń pasek boczny półprzezroczystym — systemowy efekt rozmycia w "
+"Windows 11, półprzezroczysty odcień w pozostałych przypadkach."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Kolejność ręczna"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Oznacz wszystko jako gotowe"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Oznacz jako gotowe"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Oznacz jako niezrobione"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Oznacz gotowe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Oznacz gotowe"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Dopasuj do języka aplikacji"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Dopasuj do systemu lub wymuś tryb jasny albo ciemny."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Maksymalizuj"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Zmaksymalizuj przeglądarkę"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Serwery MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Scal i usuń"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Należy rozwiązać konflikty scalania."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Scalanie nie powiodło się"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "Scalanie ma konflikty"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "Scalanie ma konflikty:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Scal lokalnie i usuń drzewo robocze"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Metoda scalania"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Opcje scalania"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Scal PR: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Scal PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Scal PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Scal ze źródłem"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Scal drzewo robocze"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Scalono"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Scalanie jest zablokowane"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Wysłane wiadomości"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Mikrofon"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Mikrofon {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Dostęp do mikrofonu jest wyłączony."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Poziom wejściowy mikrofonu"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Odmówiono pozwolenia na korzystanie z mikrofonu."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Testowanie mikrofonu nie jest dostępne w tym środowisku."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Minimalizuj przeglądarkę do prawego panelu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Minimalizuj do panelu"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Tryb"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "Identyfikator modelu"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Etykieta modelu"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Kolejność modeli"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Użycie modeli"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Modele"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Tryby"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Więcej"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Więcej opcji zatwierdzania"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Więcej opcji zatwierdzania"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Więcej działań PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Więcej opcji PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Więcej opcji żądania ściągnięcia"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Więcej opcji synchronizacji"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Najbardziej aktywna godzina"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Najczęściej używane wtyczki"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Najczęściej używany dostawca"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Najczęściej używane rozumowanie"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Przenieś"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Przenieś zmiany do nowego drzewa roboczego"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Przenieś dok zadań do prawego panelu"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Przeniesiono zmiany do nowego drzewa roboczego na „{newBranch}”. "
+"„{currentBranch}” jest teraz czysty."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Przenoszenie zmian…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Nazwa"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Nazwij swój projekt i wybierz miejsce, w którym chcesz go utworzyć."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Natywny"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Dostawcy natywni"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Wsparcie natywne"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Potrzebuje zgody"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Wymaga uwagi"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Wymaga uwagi · Wymagana zgoda"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Wymaga uwagi · Wymagana odpowiedź"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Potrzebuje odpowiedzi"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Nowe polecenie akcji"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Nowa nazwa akcji"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Nowa nazwa gałęzi..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Nowy katalog konfiguracyjny profilu Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Nowa nazwa profilu Claude"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Nowy plik"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Nowy folder"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Nowy projekt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Nowa zakładka"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Nowy wątek"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Nowy wątek"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Nowy wątek — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Nowy wątek (wersja robocza)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Nowy wątek z tego zadania"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Nowy wątek w drzewie roboczym"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Nowe drzewo robocze"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Następny obraz"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Brak aktywnej karty przeglądarki"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Brak aktywnej sesji"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Brak aktywności."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Żadnych dodatkowych profili Claude."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Brak agenta, który mógłby wygenerować podsumowanie PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "Brak agentów na tym etapie."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Nie zainstalowano jeszcze żadnych agentów"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Brak zainstalowanych agentów."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Nie zarejestrowano jeszcze żadnych commitów AI, PR ani rozwiązanych "
+"konfliktów."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Brak zarchiwizowanych wątków."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Nie znaleziono gałęzi"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Żadna karta przeglądarki nie jest otwarta"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Żadnych zmian"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Brak zmian do wyświetlenia"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Dla tego PR nie zgłoszono żadnych kontroli."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Nie znaleziono żadnych poleceń"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Nie znaleziono żadnych zatwierdzeń."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Brak strumieni treści."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Nie ma jeszcze rozmowy. Bądź pierwszą osobą, która skomentuje."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Brak danych"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Brak danych."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Brak opisu"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Brak dostępnych różnic dla {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Brak różnicy dla {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Dla tej wiadomości nie jest przechowywany żaden punkt kontrolny pliku."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Żadne pliki nie pasują do „{0}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Nie znaleziono kont GitHub CLI. Zaloguj się za pomocą <0>gh auth "
+"login0> lub <1>wklej sklonowany adres URL1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Brak dopasowań dla „{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Brak dopasowań."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Brak pasujących agentów."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Brak pasujących wątków"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Nie użyto jeszcze żadnych narzędzi MCP."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Nie ma jeszcze żadnych wiadomości"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Nie znaleziono mikrofonu."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Nie znaleziono żadnych modeli"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Nie zainstalowano żadnych innych agentów"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Żadnych wzorów."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Nie ma jeszcze faz."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Brak podpowiedzi"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Żaden dostawca nie jest śledzony."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Nie ma jeszcze gotowych dostawców"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Nie skonfigurowano zdalnego repozytorium. Dodaj zdalne repozytorium, "
+"aby umożliwić push i pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Nie znaleziono repozytoriów."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Brak jeszcze elementów wykonawczych dla tego wątku."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Nie użyto jeszcze żadnych umiejętności."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Nie wykryto mowy."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Żadnych zmian etapowych"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Nie użyto jeszcze żadnych subagentów."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Nie wykryto obsługiwanych agentów"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Brak wątków"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Brak wątków."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Nie zgłoszono żadnych okien"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Brak drzewa roboczego"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Bez zawijania"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Brak"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "To nie jest repozytorium git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "To nie jest repozytorium Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Nie znaleziono"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Nie zainstalowano"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Nie działa"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Niezalogowany"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Nieobsługiwane"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Notatki"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Nic jeszcze nie zarejestrowano. Pojawi się tutaj w miarę korzystania."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Powiadomienia"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Powiadamiaj o wątkach CLI L2"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Powiadom mnie o"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "wyłączone"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Starszy"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "na"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Tylko gdy nieaktywne"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Otwórz"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Otwórz {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Otwórz terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Najpierw otwórz wątek, aby się do niego dołączyć."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Otwórz wszystko"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Otwórz wszystko w grupie"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Otwórz jako stronę"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Otwórz jako panel"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Otwórz przeglądarkę"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Otwórz kontrolę"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Otwórz paletę poleceń"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Otwórz commit na GitHubie"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Otwórz narzędzie do rozwiązywania konfliktów w"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Otwórz okno dialogowe"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Otwórz plik"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Otwórz pliki"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Otwórz pełny ekran"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Otwórz panel Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Otwórz przegląd Gita"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Otwórz przegląd git jako panel po prawej stronie lub całą stronę."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Otwórz podgląd obrazu"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Otwórz w edytorze"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Otwórz linki w"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Otwórz nową kartę"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Otwieraj nowe wątki jako całą stronę lub panel obok siebie."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Otwórz PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Otwórz PR na GitHubie"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Otwórz podgląd"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Otwórz Ustawienia projektu"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Otwarte żądania"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Otwórz wymagany adres URL"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Otwórz ustawienia"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Otwórz Ustawienia"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Otwórz subagenta: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Otwórz wybór wysiłku"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Otwórz selektor modeli"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Otwarto {0} (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Opcjonalne haki stanu. Zainstalowane haki aktualizują się "
+"automatycznie; brakujące haki nigdy nie są instalowane automatycznie."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Opcje"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Lub napisz niestandardową odpowiedź"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Wynik"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Nadmierne tempo — kończy się wcześnie"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Zastąp domyślne ustawienia Claude — np. ANTHROPIC_BASE_URL i "
+"ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Zastępowanie ustawienia globalnego dla tego projektu."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Konfiguracja pakietu"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Menedżer pakietów"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Strona"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Panel"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Wklej"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Wklej tutaj <0>{0}0>. Kliknij, aby skopiować."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Wklej do pola"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Wstrzymano"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "szczytowy dzień"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Szczytowy dzień"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "w toku"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "w oczekiwaniu na recenzję"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Oczekujące sterowanie"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "pozwolenie"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Wybierz element"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Wybierz ikonę"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Selektor nie powiódł się"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Selektor nie zwrócił żadnego załącznika"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Przypnij do góry"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Przypięty"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Odtwórz dźwięk po wyświetleniu powiadomienia."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Odtwórz dźwięk powiadomienia"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Skieruj ten profil na dostawcę innego niż Anthropic (z.ai, …) z "
+"własnymi zmiennymi środowiskowymi, nazwami modeli i poziomami "
+"rozumowania."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Popularne motywy edytorów dostosowane do Lightcode. Każdy z nich jest "
+"zgodny z powyższym trybem jasnym lub ciemnym."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "Działania PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Opcje PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Przegląd PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "Sekcje PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Tytuł PR (pozostaw puste, aby wygenerować automatycznie)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Hak pre-commit nie powiódł się"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Ustawienia predefiniowane"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Zapobiegaj zasypianiu podczas pracy"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Podgląd {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Poprzedni obraz"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Profil"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Profile"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Projekt"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Nazwa projektu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Notatki projektowe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Ustawienia projektu"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Zastąpienia specyficzne dla projektu ponad globalnymi ustawieniami "
+"wyszukiwania."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompty"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Proponowany plan"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "dostawca"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Dostawca"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Dostawca nie zgłosił użycia tokenów."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Predefiniowani dostawcy"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "dostawcy"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Dostawcy"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Pull ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Pull ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Operacja Pull nie została zakończona. Twoje lokalne zmiany pozostają w "
+"skrytce Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Pull nie powiódł się: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Pobrać z {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Pull z {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Pull ze źródła ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull Rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Opcje żądania ściągnięcia"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Push nie powiódł się: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Pytania"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Limit osiągnięty"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Skończyło się"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Skończyło się · resetuje się za {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Ograniczono liczbę żądań"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Osiągnięto limit żądań. Spróbuj ponownie wkrótce."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "Ponowne zastosowanie zmian lokalnych powoduje konflikty"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Zaloguj się ponownie"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Gotowy"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Gotowe do przeglądu"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Rozumowanie"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Najnowsze"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Najnowsze wątki"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Zrekonstruowane z lokalnych dzienników po stawkach publicznego API — "
+"nie odzwierciedla rzeczywistego rachunku za plany subskrypcyjne. "
+"Wyświetlane tylko w panelu użytkowania."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Odśwież"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Odśwież uwierzytelnianie {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Odśwież wykryte agenty"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Odśwież rejestr"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Odświeżaj użycie w tle co N minut. Ustaw na 0, aby wyłączyć (tylko "
+"ręcznie). Minimum 2 minuty respektuje limity żądań dostawcy."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Odświeżanie statusu uwierzytelnienia {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Odświeżanie stanu uwierzytelnienia {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Załaduj ponownie"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Zdalny"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Zdalna nazwa"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "Zdalny adres URL"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Usuń"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Usuń {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Usuń {0} z panelu"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Usuń {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Usuń akcję"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Usuń profil Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Usuń zmienną środowiskową"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Usuń z ulubionych"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Usuń z grupy"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Usuń z panelu"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Usuń model"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Usuń projekt"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Usunąć drzewo robocze?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Zmień nazwę"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Zmień nazwę grupy"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Zmień nazwę wątku"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Renderer uległ awarii"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Renderer nie powiódł się podczas uruchamiania"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Renderer napotkał błąd React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Moduł renderujący napotkał nieprzechwycony błąd"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Moduł renderujący napotkał nieobsłużone odrzucenie obietnicy"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Zmień kolejność {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Zmień kolejność {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Zgłoś problem"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "repozytorium"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Repozytorium"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Hak pre-receive repozytorium blokuje scalanie."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "Adres URL repozytorium"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Poproś o zmiany"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Szczegóły żądania"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "żądane zmiany"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Nie spełniono wymaganych recenzji, rozmów lub kontroli stanu."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "reset"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Zresetuj kolejność modeli"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Przywróć domyślne zmatowienie paska bocznego"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Przywróć domyślne"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Zmień rozmiar szuflady przeglądarki"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Zmień rozmiar kolumny"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Zmień rozmiar panelu git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Zmień rozmiar notatek i zadań"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Zmień rozmiar wiersza"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Zmień rozmiar paska bocznego"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Zmień rozmiar podziału"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Zmień rozmiar panelu terminali"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Rozwiązuje konflikty scalania podczas zmiany bazy lub scalania."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Przywróć"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Przywróć przeglądarkę"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Przywróć wątek"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Spróbuj ponownie z administratorem"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Wróć do aplikacji"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Pokaż w Eksploratorze plików"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Pokaż w drzewie plików"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Przywróć"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Przywróć wszystko"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Cofnij wszystkie zmiany"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Cofnij zmiany"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Powrócić do punktu kontrolnego?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Wróć do tego punktu kontrolnego"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Przejrzyj zmiany"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Komentarz recenzji"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Decyzja recenzji"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Recenzja na żądanie"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Przejrzyj PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Przejrzyj PR #{prNumber} dla {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Prawo"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Prawy panel"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Uruchom"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Uruchom {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Uruchom {0}, zanim ten wątek będzie mógł zostać uruchomiony."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Uruchom {loginCommand}, aby się zalogować."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Uruchom polecenie"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Uruchom w oddzielnym drzewie roboczym"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Uruchom lokalną transkrypcję na GPU, jeśli jest dostępna."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Uruchom polecenie terminala"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "uruchomiony"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Uruchamia się przed usunięciem drzewa roboczego (np. <0>rm -rf "
+"node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Uruchamia się w terminalu po utworzeniu nowego drzewa roboczego (np. "
+"<0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Wyczerpie się wcześnie"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Wyczerpie się za {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Czas wykonania"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Debugowanie w czasie wykonywania"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Opcje środowiska wykonawczego"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Zapisz"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Zapisz dane uwierzytelniające {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Zapisz profil Claude'a"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Zapisz plik"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Zapisane poświadczenia są udostępniane we wszystkich środowiskach."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Skanowanie {wslDistro} w poszukiwaniu zainstalowanych interfejsów CLI. "
+"Zwykle zajmuje to kilka sekund."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Skanowanie systemu Windows i WSL w poszukiwaniu zainstalowanych "
+"interfejsów CLI. Zwykle zajmuje to kilka sekund."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Skanowanie systemu w poszukiwaniu zainstalowanych interfejsów CLI. "
+"Zwykle zajmuje to kilka sekund."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Skrypty"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Mnożnik prędkości przewijania dla bufora przewijania terminala."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Przewiń w dół"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Szukaj"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Szukaj agentów"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Wyszukaj agentów..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Szukaj gałęzi..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Wyszukaj pliki"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Wyszukaj modele"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Wyszukaj modele..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Wyszukaj lub wpisz adres"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Przeszukaj repozytoria"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Przeszukaj repozytoria…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Wyszukaj elementy środowiska wykonawczego…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Przeszukaj wątki"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Przeszukaj wątki"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Szukaj…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Wyszukiwanie..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Wyszukiwanie…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Zobacz więcej"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Wybierz"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Wybierz plik z drzewa"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Wybierz plik, aby rozpocząć edycję."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Wybierz repozytorium."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Wybierz konto"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Wybierz agenta, aby zobaczyć jego monit i wynik."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Wybierz gałąź"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Wybierz urządzenie"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Wybierz model"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Wybierz projekt"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Wyślij wiadomość..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Wyślij wiadomość"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Wysłano zaznaczenie do terminala."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Oddziel konta Claude Code według katalogu konfiguracji lub skieruj "
+"profil na zewnętrznego dostawcę (z.ai, …). Otwórz profil, aby "
+"skonfigurować jego zmienne środowiskowe, modele i poziom rozumowania."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Ustaw lub wyświetl cel eksperymentalny"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Skrypt instalacyjny"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Udostępnij"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Udostępnij swoją aktywność"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Pokaż na pasku bocznym kompaktowy pierścień użycia według dostawcy."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Wyświetl bezprojektowy zakres główny dla sesji agenta na poziomie "
+"systemu operacyjnego."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Pokaż wszystko"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Pokaż pasek zakładek"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Pokaż kręgi na pasku bocznym"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Pokaż pole tworzenia wiadomości"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Pokaż szczegóły użycia kontekstu"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Pokaż szacunkowy koszt"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Pokaż w eksploratorze plików"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Pokaż mniej"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Pokaż więcej"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Pokaż powiadomienia"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Pokazuj powiadomienia, gdy zmieni się status wątku."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Pokaż otwarte linki w"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Pokaż podgląd"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Pokaż panel debugowania środowiska wykonawczego"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Pokaż pasek boczny"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Pokaż źródło"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Pokaż przycisk mikrofonu w kompozytorze."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Pokaż przycisk wprowadzania głosowego"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Zmatowienie paska bocznego"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Zaloguj się"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Konieczne zalogowanie się"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Wymagane zalogowanie się"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Zaloguj się za pomocą interfejsu CLI agenta."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Wyloguj się z {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Zalogowano"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Logowanie"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Logowanie…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Wylogowywanie z {env}. Wykryci agenci zostaną odświeżeni po "
+"zakończeniu."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Wylogowanie. Wykryci agenci zostaną odświeżeni po zakończeniu."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Umiejętność: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Umiejętności"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Poznane umiejętności"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Niektóre kontrole kończą się niepowodzeniem lub oczekują na realizację."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Sortuj według daty utworzenia"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Sortuj według ostatniej aktualizacji"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Sortuj wątki"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Podzielony terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Widok podzielony"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Przygotuj"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Przygotuj wszystko"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "przygotowane"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Przygotowane"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Przygotowane ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Zacznij"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Uruchom {appName}, aby zobaczyć użycie"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Rozpocznij nowy wątek od zaznaczonego tekstu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Rozpocznij nowy wątek od tego zadania"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Zacznij od zera"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Uruchom kompozytor zwinięty w wątkach natywnych dla terminala. Zwinięty "
+"kompozytor kieruje elementy przeglądarki bezpośrednio do terminala."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Rozpocznij wprowadzanie głosowe"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Zacznij bez kontekstu"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Rozpoczęto wątek {targetLabel}"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Rozpoczęcie"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Rozpoczęcie wprowadzania głosowego"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "uruchamianie…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Schowaj (stash) i pobierz (pull)"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Stan jest wnioskowany z wyjścia terminala (L2). Zainstaluj wtyczkę "
+"hooka w ustawieniach, aby otrzymywać aktualizacje strukturalne."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Status jest zapewniany przez protokół kontroli agenta (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Aktualizacje statusu pochodzą z wtyczki hooka CLI."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Stan:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Zatrzymaj"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Zatrzymaj odpowiedź"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Zatrzymaj zadanie"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Zatrzymaj wprowadzanie głosowe"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Przechowuj jako zwykły tekst"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Przechowuj jako sekret (szyfrowany w spoczynku)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Subagent"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Nie znaleziono subagenta."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Wynik subagenta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Subagenci"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Prześlij"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Prześlij opinię i zatwierdź połączenie tych zmian."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Prześlij opinię, którą należy uwzględnić przed połączeniem."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Prześlij opinię bez wyraźnej zgody."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Prześlij recenzję"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Nadzorowany"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Tryb wsparcia pojawi się po nawiązaniu połączenia sesji."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Wsparcie:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Zamień notatki i zadania"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Zmień gałąź"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Przełącz tryb"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Przełącz tryb: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Zmień projekt"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Przełącz ten czat w tryb agenta"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Przełącz ten czat w tryb planu"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Synchronizuj"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Synchronizuj (przebazuj)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Synchronizacja ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Synchronizacja nie powiodła się: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Opcje synchronizacji"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Synchronizuje się z Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "System"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Przeglądarka systemowa"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Domyślne systemowe"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Zrób zrzut ekranu"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Gałąź docelowa"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Dostawca docelowy"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Dane wyjściowe zadania"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Powiedz {0}, co ma dalej robić..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Powiedz dostawcy docelowemu, co ma dalej robić..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Terminal dla {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Dane wejściowe terminala"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Terminal nie jest gotowy — dodano zaznaczenie do pola tworzenia "
+"wiadomości."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Rozmiar czcionki panelu terminala"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Pozycja terminala"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Szybkość przewijania terminala"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Zakładki terminala"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Przetestuj mikrofon"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "agent"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "aplikacja"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "wybrany folder"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Nie można renderować normalnej powłoki aplikacji. Poniżej przedstawiono "
+"diagnostykę przed ponownym załadowaniem, aby można było zbadać awarię."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "docelowego dostawcy"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Motyw"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Myślenie"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Ten agent nie jest zainstalowany."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "to środowisko"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Ten plik jest za duży dla wbudowanego edytora."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Ten plik używa nieobsługiwanego kodowania."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Spowoduje to trwałe usunięcie gałęzi „{0}” ze zdalnego repozytorium."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Spowoduje to trwałe usunięcie gałęzi „{0}”."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Spowoduje to usunięcie późniejszych wiadomości i przywrócenie plików, "
+"gdy dostępna będzie migawka punktu kontrolnego."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Spowoduje to usunięcie drzewa roboczego na „{0}” i zamknięcie {1, "
+"plural, one {# powiązanego wątku} few {# powiązanych wątków} many {# "
+"powiązanych wątków} other {# powiązanych wątków}}, a następnie "
+"usunięcie gałęzi."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Spowoduje to usunięcie drzewa roboczego na „{0}”, a następnie usunięcie "
+"gałęzi."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "W tym wątku używane jest drzewo robocze <0>{0}0>. Usunąć także "
+"katalog drzewa roboczego?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "To drzewo robocze zawiera zmiany lokalne. Lightcode może je tymczasowo "
+"ukryć, pobrać z {0}, a następnie ponownie zastosować zmiany."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Myśl"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Wątek"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Wątek + drzewo robocze"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Użycie kontekstu wątku"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Dok wątku"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Nie udało się rozpocząć wątku."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Wątek został zakończony lub oczekuje na Twoje dane wejściowe."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Stacja dokująca celu wątku"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Wątek został już wyładowany."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Tryb wątku"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Tylko wątek"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Kolejność sortowania wątków"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Dok zadań wątku"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Wątki"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Wątki oznaczone jako zakończone, które nie były poruszane przez tyle "
+"dni, są automatycznie archiwizowane po uruchomieniu aplikacji. Ustaw na "
+"0, aby wyłączyć."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Generowanie tytułów"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Zadania"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Przełącz tryb szybki"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Wyłącz modele, aby ukryć je w selektorze."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Przełącz terminal"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokeny"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokeny z {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Wyszukiwanie narzędzi"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Łączna liczba promptów"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Łączna liczba użytych umiejętności"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Łączna liczba wątków"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Śledź wykorzystanie {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Śledź wykorzystanie sesyjne, tygodniowe i miesięczne dla każdego "
+"dostawcy. Okna są zgłaszane przez każdego dostawcę; szacowany koszt "
+"jest rekonstruowany na podstawie lokalnych dzienników."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Śledzenie wyłączone"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Transkrypcja głosu"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Półprzezroczysty pasek boczny"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Włącz lub wyłącz śledzenie dla każdego dostawcy. Wyłączeni dostawcy są "
+"pomijani podczas automatycznego odświeżania."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Wpisz polecenie"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Nie można uwierzytelnić {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Nie można utworzyć katalogu drzewa roboczego WSL „{path}”"
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Nie można zainstalować haków {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Nie można zainstalować {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Nie można wylogować {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Nie można otworzyć logowania {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Nie można otworzyć pliku"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Nie można odświeżyć statusu {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Nie można odświeżyć {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Nie można odświeżyć profili Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Nie można usunąć poświadczeń {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Nie można usunąć drzewa roboczego."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Nie można znaleźć katalogu domowego dla dystrybucji WSL „{distro}”"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Nie można zapisać danych uwierzytelniających {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Nie można zapisać profilu Claude {displayLabel}."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Nie można uruchomić {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Nie można zaktualizować {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Nie można zaktualizować {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Nie można zaktualizować haków {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Nie można zaktualizować {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Nie można zaktualizować {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Nie można zaktualizować {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Rozgrupuj wszystko"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Ujednolicony widok"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Odinstaluj"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Nieznany projekt"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Nieograniczony"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Zwolnij bezczynne wątki po"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Zwolnij bezczynne wątki po (minutach)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Zwolnij wątek"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Odznacz jako gotowe"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Odznacz jako gotowe"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Bez fazy:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Odepnij"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Wycofaj z poczekalni"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Wycofaj wszystko z poczekalni"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "wycofane z poczekalni"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Nieobsługiwane"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Aktualizacja"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Zaktualizuj {0} do {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Dostępna aktualizacja"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Zaktualizuj gałąź"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Błąd aktualizacji: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Metoda aktualizacji"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Aktualizuj zadanie"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Zaktualizuj do {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Zaktualizuj do {updateLabel} dla {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Aktualizacja do {updateLabel} dla {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Aktualizacja do wersji {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Aktualizacja do wersji {latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Zaktualizuj za pomocą commita scalającego"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Zaktualizuj za pomocą rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Zaktualizowano {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Aktualizowanie"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Aktualizowanie {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Aktualizowanie {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Użycie"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Użycie nie jest obsługiwane"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Ustawienia wykorzystania"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Nieznane wykorzystanie"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Użyj istniejącego folderu"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Użyj konfiguracji"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Użyć wykrytej sesji?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Użyj ignorowanych plików"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Użyj sesji"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Użyj tego konta do śledzenia użytkowania lub zmień użytkowników w "
+"przeglądarce, zanim przejdziesz dalej."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Użyj akceleracji WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Używany"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Używana jest wbudowana lista modeli Claude."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} dostępne"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "wartość"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Wersja"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "przez {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Zobacz"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Widoczne modele {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Widoczne modele"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Wprowadzanie głosowe nie jest dostępne w tym środowisku."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Język wprowadzania głosowego"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Model wprowadzania głosowego"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Poczekaj, aż wątek zakończy uruchamianie."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Oczekiwanie na uwierzytelnienie {authEnv} {authMethodName}. Wykryci "
+"agenci zostaną odświeżeni po zakończeniu."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Oczekiwanie na uwierzytelnienie {authMethodName}. Wykryci agenci "
+"zostaną odświeżeni po zakończeniu."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Oczekiwanie na uwierzytelnienie {env} {methodName}. Wykryci agenci "
+"zostaną odświeżeni po zakończeniu."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Oczekiwanie na uwierzytelnienie {methodName}. Wykryci agenci zostaną "
+"odświeżeni po zakończeniu."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "czekanie, aż agent się zatrzyma"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Oczekiwanie, aż przepływ pracy utworzy agentów…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Obudź się"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Obudź się za {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Obudź się za {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Obudź się: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Rozgrzewanie środowiska powłoki…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Rozgrzewanie środowisk powłoki..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Rozgrzewanie środowiska powłoki WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Wyszukiwanie w Internecie"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Strona internetowa"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Domyślna funkcja przycisku Utwórz PR: otwarcie okna dialogowego, w "
+"którym można najpierw edytować tytuł i opis, lub wygenerowanie ich "
+"automatycznie i utworzenie PR jednym kliknięciem. Można to także "
+"przełączyć z menu przycisku."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Po włączeniu wyszukiwanie uwzględnia wpisy <0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Gdy linki otwierają się na karcie przeglądarki Lightcode, wybierz "
+"miejsce, w którym przeglądarka ma być widoczna."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Gdy opcja ta jest wyłączona, pomija powiadomienia z wątków terminala, "
+"których status pochodzi z rezerwy OSC (brak wtyczki przechwytującej "
+"CLI)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Kiedy wyświetlać toasty w aplikacji dla widocznych wątków."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Po zamknięciu okna pozostaw Lightcode uruchomiony w zasobniku "
+"systemowym. Wyłącz, aby wyjść po zamknięciu."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Gdzie trafia wybór z selektora elementów przeglądarki w wątkach "
+"natywnych dla terminala. Zwinięty kompozytor zawsze kieruje do "
+"terminala."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Od czego chcesz zacząć?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Gdzie pojawia się panel terminali."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Będzie działać w {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "System Windows nie jest jeszcze obsługiwany. Zainstaluj w WSL lub na "
+"macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Praca"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Pracuj w bieżącym checkoucie"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Pracował przez {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Przepływ pracy"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Zakończono przepływ pracy. Agenci podrzędni działali w oddzielnym "
+"procesie i nie są jeszcze tutaj transmitowani."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Przepływ pracy działa w tle. Agenci podrzędni działają w oddzielnym "
+"procesie i nie są jeszcze tutaj przesyłani strumieniowo."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Fazy przepływu pracy"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Wyniki przepływu pracy"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Przepływ pracy: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Przepływy pracy"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Pracuje"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Praca przez {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Drzewo robocze czyste"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Pracuję…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Drzewo robocze"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Drzewo robocze + zmiany"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Tryb drzewa roboczego"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Drzewo robocze: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Drzewa robocze"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Zawijaj wiersze"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Napisz komentarz"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Napisz komentarz…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Napisz notatki do tego projektu…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Twoje imię"
diff --git a/src/renderer/locales/pt-BR/messages.po b/src/renderer/locales/pt-BR/messages.po
new file mode 100644
index 00000000..453c6474
--- /dev/null
+++ b/src/renderer/locales/pt-BR/messages.po
@@ -0,0 +1,6080 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: pt-BR\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Rascunho)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(sem mensagem)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# arquivo} other {# arquivos}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# provedor pronto} other {# provedores prontos}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {alvo} other {alvos}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# outros chats usam esta mesma árvore. A restauração "
+"de arquivos pode substituir suas alterações.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Compositor"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) já está atualizado."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) atualizado para v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) atualizado."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} autenticado."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Credenciais de {0} removidas."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "Credenciais de {0} salvas."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} dispositivos"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{0} hooks instalados para {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0} hooks instalados."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{0} hooks removidos para {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} destinos de instalação"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} já está atualizado."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "Limite de {0}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} desconectado."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} precisa de autenticação."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} prompt - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} prompts - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} execução"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} execuções"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} tokens"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} tokens - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} atualizado para v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} atualizado para v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} atualizado para v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} atualizado para v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} atualizado."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} usado"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% Cheio"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "há {0} meses"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Passe o mouse para ver os detalhes do "
+"status."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} dia"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} dias"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "há {days}d"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} precisa de autenticação."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} correspondências"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} ou {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Modo {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "hook {hook} falhou"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "há {hours}h"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# agente pronto} other {# agentes "
+"prontos}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "Uso de {label} — abrir o painel de uso"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel} de contexto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "há {minutes}min"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} precisa de autenticação."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"A limpeza da árvore de trabalho também falhou: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% cheio"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (desativado)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Configurações de {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# aberto} other {# abertos}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# resultado} other {# resultados}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "há {seconds}s"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} tokens"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} tokens"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} tokens"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} tokens"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} de {totalCount} visíveis"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Todos os direitos reservados."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> de {0} verificações aprovadas"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · est."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% até a redefinição"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "um agente de codificação compatível"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Abortar mesclagem"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "Sobre"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Aceitar ambas as alterações"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Aceitar a alteração atual"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Aceitar alteração recebida"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Conta"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Opções de conta"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Contas"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Agentes ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Comando de ação"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Ação para o botão de remoção rápida nos tópicos da barra lateral."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Nome da ação"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Ações"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Ativo"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Atividade"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Análises de atividade"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Métrica de atividade"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Adicionar"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Adicione um projeto antes de instalar um agente."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Adicione um projeto antes de fazer login."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Adicione um projeto para começar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Adicione uma tarefa…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Adicionar ação"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Adicionar anexo ou recurso"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Adicionar perfil do Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Adicione credenciais antes que este tópico possa ser executado."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Adicionar modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Adicionar padrão"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Adicionar perfil"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Adicionar projeto"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Adicionar projeto"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Adicionar opções de projeto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Adicionar remoto"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Adicionar ao compositor"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Adicionar aos favoritos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Agente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Agente ({subagent}):{description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Bate-papo do agente (ACP / markdown). As linhas de comando usam esse "
+"tamanho menos 1 px; linhas de ferramenta e plano menos 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "O agente encontrou um erro."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "O agente está ativo e pronto"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "O agente está desativado no momento"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Agente não encontrado"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Registro de Agente"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Tamanho da fonte do terminal do agente"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Atualização do agente disponível"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Agente:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Agente:{subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Agentes"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Agentes · Geral"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "IA"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Orquestrador de agentes de IA — gerencie agentes de codificação via "
+"Terminal e ACP nativo."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Ações de git com IA"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Todas as contas"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Todos os dispositivos"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Todos os níveis de esforço"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Todos os arquivos"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Permitir"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Permitir que os agentes leiam/escrevam cookies e armazenamento"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Permitir avaliação"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Sempre"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Sempre excluído"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Outro chat usa esta mesma árvore. A restauração de arquivos pode "
+"substituir as alterações do bate-papo."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Navegador de aplicativos"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Aparência"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Modo de aparência"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Aplicar predefinição de provedor"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Aprovação ou resposta exigida de você."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Aprovar"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "aprovado"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Aprovado"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Arquivar"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Arquivar {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Arquivar tudo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Arquivar Tópico"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Tópicos arquivados"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Tem certeza de que deseja reverter <0>{0}0>? Isto não pode ser "
+"desfeito."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Tem certeza de que deseja reverter <0>{path}0>? Isto não pode ser "
+"desfeito."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Tem certeza de que deseja reverter todas as alterações não preparadas? "
+"Isto não pode ser desfeito."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Pergunte a {0} qualquer coisa sobre este espaço de trabalho"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Pergunte sempre"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Faça uma pergunta"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Anexar"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Anexar arquivos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Anexar ao tópico"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Anexar o painel de tarefas ao compositor"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Seleção de navegador anexada."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Áudio"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Autenticação"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Autenticação necessária"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Automático"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Aprovação automática"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Arquivar automaticamente os tópicos concluídos depois"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Arquivar automaticamente tópicos concluídos após (dias)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Gerar automaticamente"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Atualização automática (minutos)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Intervalo de atualização automática em minutos, 0 para desligar"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Revisão automática"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Mostrar painel do terminal automaticamente"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Mostrar automaticamente o painel do terminal ao executar comandos ou "
+"criar árvores de trabalho."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "disponível"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Agentes ACP disponíveis"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Cor do avatar"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Cor do avatar {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Voltar"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "O processo em segundo plano foi encerrado inesperadamente"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "O processo em segundo plano não está em execução"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Processo em segundo plano reiniciado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Tarefas em segundo plano"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "A ramificação base está à frente — a ramificação deve ser atualizada "
+"primeiro."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Tamanho de fonte base para terminais de agente. Encolhe automaticamente "
+"em painéis estreitos ou curtos."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Tamanho base da fonte do painel do terminal. Encolhe automaticamente em "
+"painéis estreitos ou curtos."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Saída do bash"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Básico (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Melhor (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Melhores atualizações de status enquanto os agentes são executados."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Binário"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Arquivo binário — visualização indisponível."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Arquivo binário ou nenhuma comparação disponível"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Arquivos binários não podem ser editados aqui."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "bloqueado:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Negrito"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Inferior"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "Branch '{branch}' tem alterações não confirmadas em '{path}' - confirme "
+"ou guarde-as antes de mesclar"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "Branch <0>{0}0> tem alterações não mescladas:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Branch não totalmente mesclado"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "As regras de proteção de branch bloquearam essa mesclagem."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Branches"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Procure a pasta pai"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Navegue pelos seus repositórios do GitHub ou cole uma URL de clonagem."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Navegador"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "MCP do navegador"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "MCP do navegador habilitado para OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "MCP do navegador ativado para este tópico"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Menu do navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Destino de seleção do navegador (threads CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Destino escolhido pelo navegador para threads CLI"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Limite de orçamento atingido"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Construindo diferenças…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "por <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "por prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "por tokens"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Ignorar regras de proteção de branch"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Ignorar regras de proteção de branch (mesclagem de administrador)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Cancelar novo perfil de Claude"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Cancelar redirecionamento pendente"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Cancelar seletor"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "cancelado"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Não é possível criar um caminho de worktree padrão sem um nome de "
+"branch"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Não é possível alternar entre branches — faça commit ou stash das suas "
+"alterações primeiro"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Alterar usuário"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Registro de alterações"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Mudanças"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Mudanças ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Alterações no PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Alterações solicitadas"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Canal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Chat"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Comandos de bate-papo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Verificação"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Verifique se há atualizações"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Verifique o nível de entrada ao vivo do dispositivo selecionado."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Verificando…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Verificações"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Escolha uma pasta…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Escolha como fazer login em {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Escolha como fazer login."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Escolha o idioma de exibição da interface do Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Escolha o tópico ao qual anexar"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Escolha se os links do Lightcode e os pop-ups do navegador permanecem "
+"no Lightcode ou abrem externamente."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Perfil do Claude {0} salvo."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Perfil do Claude {displayName} adicionado."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Diretório de configuração do perfil Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Nome do perfil de Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Perfil de Claude removido."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Script de limpeza"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Limpar histórico de navegação"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Limpar Cache"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Limpar cookies"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Limpar pesquisa"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Ganchos CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Clonar"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Clonar um repositório"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "URL de clonagem"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Clonando {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Clonando…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Fechar"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Fechar terminal {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Fechar navegador"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Fechar editor"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Fechar guia do editor"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Fechar meta"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Fechar grupo"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Fechar painel"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Fechar painel"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Fechar plano"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Fechar PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Fechar visualização"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Fechar pesquisa"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Fechar divisão"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Fechar subagente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Fechar subagentes"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Fechar painel de subagentes"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Fechar guia"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Minimizar para a bandeja"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Fechar detalhes de uso"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Fechado"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Código copiado."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Recolher"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Recolher {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Recolher tudo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Recolher tudo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Recolher todas as pastas"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Recolher compositor"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Recolher erro"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Recolher o compositor do terminal"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Recolher dock de tarefas"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Comando"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Comando (por exemplo, npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Comandos"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Comentário"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Comentário postado"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "comentou"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Fazer commit e criar PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Idioma de commit e PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Fazer commit e push"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Falha no commit: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Mensagem de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Mensagem de commit (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Geração de mensagem de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Opções de commit"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commits"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Compactando contexto"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Completo"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Conclua o login {0} antes que este thread possa ser executado."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Conclua o login de {0} para {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Conclua o login {0} ou salve as credenciais {1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Conclua o login {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Preencha os prompts neste terminal. Fecha quando terminar."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "concluído"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Diretório de configuração"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Resolvedor de Conflitos"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Conflitos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Console"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Contexto"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Contexto compactado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Contexto compactado de {before} tokens"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Contexto compactado: {before} → {after} tokens"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Extração de contexto ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Contexto compactado manualmente a partir de {before} tokens"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Contexto compactado manualmente: {before} → {after} tokens"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Contexto transferido para {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Uso de contexto"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Continuar"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Continuar em outro provedor"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Continuar em..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Controle quais arquivos aparecem na pesquisa de menção @file. As "
+"substituições por projeto estão disponíveis nas configurações de cada "
+"projeto."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Conversa"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Copiado"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Copiado para a área de transferência"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Copiar"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Copiar código do dispositivo {0} {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Copiar URL atual"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Copiar detalhes"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Copiar diagnóstico"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Falha na cópia"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Copiar arquivos ignorados"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Copiar imagem"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Copiar mensagem"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Copiar caminho"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Copiar caminho relativo"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Copiar alterações não commitadas aqui (mantém-nas neste branch)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Não foi possível cancelar a mesclagem: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Não foi possível concluir a mesclagem"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Não foi possível extrair o contexto."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Não foi possível gerar mensagem de commit: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Não foi possível ler o arquivo."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Não foi possível clonar o repositório."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Não foi possível copiar suas alterações não commitadas para o novo "
+"worktree — elas permanecem no branch atual."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Não foi possível criar o projeto."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Não foi possível listar os repositórios."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Não foi possível carregar as estatísticas do seu perfil."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Criar PR rascunho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Criar arquivo"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Criar novo branch"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Criar novo branch..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Criar PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Criar PR (automático)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Ação de criar PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Criar PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Criar projeto"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Criar Pull Request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Criar tarefa"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Criar:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Criou uma árvore de trabalho em \"{newBranch}\", mas as alterações "
+"entraram em conflito e permanecem em um git stash — resolva-as na "
+"árvore de trabalho."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "As credenciais estão configuradas."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Créditos"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "sequência atual"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Sequência atual"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Personalizado"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Comandos personalizados disponíveis no menu de contexto do projeto "
+"(clique com o botão direito)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Escuro"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Recusar"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Padrão"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Ação de criação de PR padrão"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Novo tópico padrão"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Permissões padrão"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Remoção de thread padrão"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Excluir"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Excluir {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Excluir branch?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Excluir arquivo"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Excluir permanentemente"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Excluir tópico"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Excluir tópico"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Excluir tópico?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Excluir tarefa"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Excluir árvore de trabalho"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Excluir árvore de trabalho {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Excluir:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Excluindo"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Negar"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Negue e diga ao agente o que fazer de diferente…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Descrição"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Descrição (opcional)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Detectado <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Detectado <0>(local)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Detectado <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Detectando agentes…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Dev"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Substituições apenas de desenvolvimento. Visível apenas na compilação "
+"LIGHTCODE DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Dispositivo usado pelo botão de entrada de voz do compositor."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Desativar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Desativar esforço {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Desativar MCP do navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Desativar plug-in de gancho CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Desativar projeto"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Desative níveis que um provedor externo agrupa (ex.: manter apenas High "
+"e Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Desativado"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Descartar alterações não salvas em {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Descartar alterações não salvas do editor?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Descobrindo agentes de codificação…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Dispensar"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Ignorar erro"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "revisão rejeitada"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Nome de exibição na barra lateral."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Documentação"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Não pergunte novamente"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Não mostrar proposta de instalação de gancho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "feito"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Concluído"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Concluído · Aguardando sua resposta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Baixar imagem"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Baixando em “{0}”. Isso pode demorar um pouco para repositórios "
+"grandes."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Baixando modelo de voz {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Baixando modelo de voz..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Baixando{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Baixando{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Rascunho"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Arraste para reordenar como os provedores aparecem no seletor de "
+"modelos."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Arraste para reordenar; clique duas vezes para editar"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Solte aqui para anexar"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Descarta envelopes de gancho recebidos no supervisor para que os "
+"agentes retornem ao L2 (progresso do OSC 9;4) sem tocar nas "
+"notificações de instalação ou do iTerm2. Entra em vigor no próximo "
+"evento de gancho — não é necessário reiniciar."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "por exemplo, Trabalho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Editar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Editar arquivo"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Editar perfil"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Editar:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Editor"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "Editor LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Guias do editor"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Esforço e contexto"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Níveis de esforço"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Habilitar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Ativar esforço {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Habilite o suporte a language server para verificação de tipos, "
+"autocompletar e diagnósticos. Requer um language server instalado."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Ative o acesso ao microfone nas configurações do sistema e tente "
+"novamente."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Habilitar notificações"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Habilitar Projeto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Habilite provedores nas configurações"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Ativa <0>cookies0> e <1>armazenamento1>. Os cookies podem conter "
+"tokens de sessão e o armazenamento geralmente mantém o estado de "
+"autenticação – ativado apenas quando você confia no agente e nos sites "
+"que ele visita."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Aprimorado (ganchos)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Insira um URL do repositório."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Entrar no modo de plano"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Ambiente"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Nome da variável de ambiente"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Valor da variável de ambiente"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Variáveis de ambiente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "erro"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Erro"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Erro · O agente encontrou um erro"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Padrões de exclusão"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Sair do modo de plano"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Saiu com o código {0}. Feche para tentar novamente."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Expandir"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Expandir {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Expandir tudo"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Expandir erro"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Expandir dock de tarefas"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Externo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Provedor externo"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Extra Alto"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Extraindo contexto de {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "falhou"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Falha ao fechar pull request: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Falha ao criar pull request: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Falha ao carregar as estatísticas do perfil."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Falha ao mesclar pull request: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Rápido"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Modo rápido"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Mais rápido (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "O mais rápido usa o Whisper tiny; o Melhor usa o Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Favoritos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Buscar"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Arquivo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "As alterações no arquivo aparecerão aqui."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "O arquivo é muito grande para ser visualizado."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "O arquivo não existe mais no disco."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Arquivo muito grande para exibir ({0, plural, one {# linha alterada} "
+"other {# linhas alteradas}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "O arquivo usa uma codificação não suportada."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Arquivos"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Arquivos para {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Os arquivos que correspondem a esses globs ficam ocultos na pesquisa de "
+"menção @file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Conclua sua avaliação"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Concluído"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Concluído · Aguardando sua resposta"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Integração CLI Antigravity de primeira classe usando tempo de execução "
+"nativo do Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Integração de primeira classe com Claude Code usando o tempo de "
+"execução SDK nativo do Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Integração Codex CLI de primeira classe usando o tempo de execução "
+"nativo do servidor de aplicativos do Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Integração de primeira classe da CLI Command Code usando o tempo de "
+"execução nativo do Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Integração Grok Build CLI de primeira classe usando o tempo de execução "
+"nativo do Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Integração OpenCode de primeira classe usando o tempo de execução SDK "
+"nativo do Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Correção no agente"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Nome da pasta"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Forçar exclusão"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Forçar exclusão? As alterações não mescladas serão perdidas."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Formatar arquivos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Avançar"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Encontrada uma sessão {0} conectada."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Aplica o efeito fosco à barra lateral com o material de desfoque do "
+"sistema (vibrância), à semelhança do macOS recente. Recorre a um tom "
+"translúcido onde não houver suporte."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Efeito fosco da barra lateral no modo {appearance} sobre o desfoque do "
+"sistema. Maior mantém a cor do tema; menor mostra mais do que está "
+"atrás."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Acesso total"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Sobreposição de tela cheia"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Geral"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Gerar mensagem de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Gerar resumo de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Gere com IA"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Imagem gerada"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Gera mensagens de commit a partir de alterações preparadas."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Gera títulos curtos para novos tópicos."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Obter tarefa"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} falhou: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Revisão do Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Modo de revisão do Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Status do Git para {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Status do Git para {0}: não é um repositório Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Repositório GitHub"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Arquivos gitignorados para copiar do projeto principal para cada nova "
+"árvore de trabalho. Padrões estilo Gitignore, um por linha (por "
+"exemplo, <0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (rótulo opcional)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Objetivo"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Metas definidas"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Grupo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Agrupar tópicos abertos"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Tamanho da fonte do bate-papo da GUI"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "identificador"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Identificador"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Recarregar forçado"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Tópicos recuperáveis ocultos são varridos a cada 5 minutos e "
+"descarregados após esse período ocioso."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Esconder"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Ocultar tudo"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Ocultar navegador"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Ocultar o inspetor de itens de tempo de execução canônico"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Ocultar detalhes de uso do contexto"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Oculte os modelos que você não usa no seletor de modelos de todos os "
+"provedores."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Ocultar painel"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Ocultar painel de depuração de tempo de execução"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Ocultar barra lateral"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Ocultar terminal"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Página inicial"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Escopo inicial"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Inativo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Imagem"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Visualização da imagem"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Inativo"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "herdado"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Herdando a configuração global (atualmente {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Inicializar repositório"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Nível de entrada"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Inspecione itens de tempo de execução canônicos"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "instalar"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Instalar"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Instale {0} para {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Instale {0} para criar um tópico."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Instale {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Instalar {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Instale ganchos CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Instalar no WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Instale os provedores nativos primeiro; use ACP para agentes de "
+"protocolo adicionais."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Instalar no Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Instalar pacotes"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Instalar atualização"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Instalar v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Instalar v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Instalado"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Instalando"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Instalando neste terminal. Fecha quando terminar."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Interrompida: a sessão do agente terminou antes da conclusão."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Itálico"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "agora mesmo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Manter branch"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Mantém o sistema ativo enquanto qualquer thread estiver trabalhando "
+"ativamente."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Encerrar bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Idioma"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Idioma das mensagens de commit e dos resumos de pull request gerados "
+"por IA. Os títulos dos tópicos sempre seguem o idioma do aplicativo."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Idioma que o modelo de fala deve esperar ao transcrever o ditado do "
+"compositor."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Última ferramenta: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Iniciar tópico"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Iniciando…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Deixe um comentário"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Menos"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Permite que os agentes chamem <0>eval0> para executar JavaScript "
+"arbitrário dentro da página incorporada. Desativado por padrão – ative "
+"somente quando você confiar nos sites carregados e no agente."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Licença"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "tokens acumulados"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Tokens acumulados"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Claro"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Lista"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Listar pacotes"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Listar tarefas"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Carregando"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Carregando contas…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Carregando diferenças..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Carregando editor…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Carregando arquivo…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Carregando notas…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Carregando PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Carregando registro..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Carregando…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "local"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Locais"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "As alterações locais precisam ser armazenadas (stash) antes de fazer "
+"pull de {branch}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Localização"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Fazendo login"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Saindo"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "login"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Login"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Entrar {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Login necessário"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Sair"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Sair {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "maior sequência"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Maior sequência"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Tarefa mais longa"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Torna a barra lateral translúcida — o material de desfoque do sistema "
+"no Windows 11, um tom translúcido nas demais plataformas."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Ordem manual"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Marcar tudo como concluído"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Marcar como concluído"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Marcar como não concluído"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Marcar como concluído"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Marcar como concluído"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Acompanhar o idioma do aplicativo"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Combine com seu sistema ou force claro ou escuro."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Maximizar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Maximizar o navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Servidores MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Mesclar e remover"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Os conflitos de mesclagem devem ser resolvidos."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Falha na mesclagem"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "A mesclagem tem conflitos"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "A mesclagem tem conflitos:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Mesclar localmente e remover árvore de trabalho"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Método de mesclagem"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Opções de mesclagem"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Mesclar PR: Confirmar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Mesclar PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Mesclar PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Mesclar com a fonte"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Mesclar árvore de trabalho"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Mesclado"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "A mesclagem está bloqueada"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Mensagens enviadas"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Microfone"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Microfone {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "O acesso ao microfone está desativado."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Nível de entrada do microfone"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "A permissão do microfone foi negada."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "O teste de microfone não está disponível neste ambiente."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Minimizar o navegador para o painel direito"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Minimizar para painel"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Modo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "ID do modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Rótulo do modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Ordem do modelo"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Uso de modelos"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Modelos"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Modos"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Mais"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Mais opções de aprovação"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Mais opções de commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Mais ações de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Mais opções de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Mais opções de solicitação pull"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Mais opções de sincronização"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Hora mais ativa"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Plugins mais usados"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Provedor mais usado"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Raciocínio mais usado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Mover"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Mover alterações para uma nova árvore de trabalho"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Mover dock de tarefas para o painel direito"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Movemos suas alterações para uma nova árvore de trabalho em "
+"\"{newBranch}\". \"{currentBranch}\" agora está limpo."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Movendo mudanças…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Nome"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Dê um nome ao seu projeto e escolha onde criá-lo."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Nativo"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Provedores nativos"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Suporte nativo"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Precisa de aprovação"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Precisa de atenção"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Precisa de atenção · Aprovação necessária"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Precisa de atenção · Resposta obrigatória"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Precisa de resposta"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Novo comando de ação"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Novo nome de ação"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Novo nome de branch..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Novo diretório de configuração do perfil Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Novo nome de perfil de Claude"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Novo arquivo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Novo projeto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Nova guia"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Novo tópico"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Novo tópico"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Novo tópico —{projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Novo tópico (rascunho)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Novo tópico desta tarefa"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Novo tópico na árvore de trabalho"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Nova árvore de trabalho"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Próxima imagem"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Nenhuma guia do navegador ativa"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Nenhuma sessão ativa"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Nenhuma atividade ainda."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Nenhum perfil adicional de Claude."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Nenhum agente disponível para gerar o resumo de PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "Nenhum agente nesta fase."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Nenhum agente instalado ainda"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Nenhum agente instalado."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Nenhum commit, PR ou resolução de conflito por IA registrado ainda."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Nenhum tópico arquivado."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Nenhuma branch encontrada"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Nenhuma guia do navegador aberta"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Sem alterações"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Nenhuma alteração na exibição"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Nenhuma verificação relatada para este PR."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Nenhum comando encontrado"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Nenhum commit encontrado."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Nenhum fluxo de conteúdo."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Nenhuma conversa ainda. Seja o primeiro a comentar."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Ainda não há dados"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Nenhum dado ainda."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Sem descrição"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Nenhuma diferença disponível para {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Sem diferença para {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Nenhum ponto de verificação de arquivo é armazenado para esta mensagem."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Nenhum arquivo corresponde a \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Nenhuma conta GitHub CLI encontrada. Faça login com <0>gh auth "
+"login0> ou <1>cole um URL clone1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Nenhuma correspondência para “{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Nenhuma correspondência."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Nenhum agente correspondente."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Não há tópicos correspondentes"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Nenhuma ferramenta MCP usada ainda."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Nenhuma mensagem ainda"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Nenhum microfone encontrado."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Nenhum modelo encontrado"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Nenhum outro agente instalado"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Sem padrões."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Ainda não há fases."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Sem avisos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Nenhum provedor está sendo rastreado."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Nenhum provedor pronto ainda"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Nenhum controle remoto configurado. Adicione um controle remoto para "
+"ativar push e pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Nenhum repositório encontrado."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Ainda não há itens de tempo de execução para este tópico."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Nenhuma skill usada ainda."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Nenhuma fala detectada."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Nenhuma alteração no stage"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Nenhum subagente usado ainda."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Nenhum agente compatível detectado"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Sem tópicos"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Nenhuma thread ainda."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Nenhuma janela relatada"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Sem árvore de trabalho"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Sem quebra de linha"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Nenhum"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Não é um repositório git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Não é um repositório Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Não encontrado"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Não instalado"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Não está em execução"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Não conectado"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Não compatível"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Notas"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Nada registrado ainda. Aparecerá aqui conforme você usar."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Notificações"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Notificar sobre tópicos CLI L2"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Notificar-me sobre"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "desligado"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Mais antigo"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "ativado"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Somente quando estiver fora de foco"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Abrir"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Abrir {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Abrir um terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Abra um tópico primeiro para anexar a ele."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Abrir tudo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Abrir tudo no grupo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Abrir como página"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Abrir como painel"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Abrir navegador"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Abrir verificação"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Abrir paleta de comandos"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Abrir commit no GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Abrir resolvedor de conflitos em"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Abrir caixa de diálogo"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Abrir arquivo"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Abrir arquivos"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Abrir tela inteira"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Abrir painel Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Abrir revisão do Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Abra a revisão do Git como um painel do lado direito ou uma página "
+"inteira."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Abrir prévia da imagem"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Abrir no editor"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Abrir links em"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Abrir nova aba"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Abra novos tópicos como uma página inteira ou um painel lado a lado."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Abrir PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Abrir PR no GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Abrir prévia"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Abrir configurações do projeto"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Solicitações abertas"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Abrir URL necessária"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Abrir configurações"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Abrir configurações"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Abrir subagente: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Abra o seletor de esforço"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Abra o seletor de modelo"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Aberto {0} (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Ganchos de status opcionais. Os ganchos instalados são atualizados "
+"automaticamente; ganchos ausentes nunca são instalados automaticamente."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Opções"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Ou escreva uma resposta personalizada"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Resultado"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Acima do ritmo — acaba cedo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Substitua os padrões do Claude — ex.: ANTHROPIC_BASE_URL e "
+"ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Substituindo a configuração global para este projeto."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Configuração do pacote"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Gerenciador de pacotes"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Página"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Painel"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Colar"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Cole <0>{0}0> aqui. Clique para copiar."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Colar na entrada"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Pausado"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "dia de pico"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Dia de pico"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "pendente"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "revisão pendente"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Orientação pendente"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "permissão"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Escolher elemento"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Escolha o ícone"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Falha no seletor"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "O seletor não retornou nenhum anexo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Fixar no topo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Fixado"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plano"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Reproduzir um som quando uma notificação for exibida."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Reproduzir som de notificação"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Aponte este perfil para um provedor não Anthropic (z.ai, …) com "
+"variáveis de ambiente, nomes de modelo e níveis de esforço "
+"personalizados."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Temas de editores populares adaptados ao Lightcode. Cada um segue o "
+"modo claro ou escuro acima."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "Ações de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Opções de PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Revisão de PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "Seções de PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Título PR (deixe em branco para gerar automaticamente)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Falha no gancho de pré-confirmação"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Predefinições"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Impedir suspensão durante o trabalho"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Visualizar {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Imagem anterior"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Perfil"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Perfis"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Projeto"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Nome do projeto"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Notas do projeto"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Configurações do projeto"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Substituições específicas do projeto nas configurações de pesquisa "
+"global."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompts"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Plano proposto"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "provedor"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Provedor"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "O provedor não relatou o uso de token."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Predefinições de provedor"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "provedores"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Provedores"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Puxar ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Puxar ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "O pull não foi concluído. Suas alterações locais permanecem em um stash "
+"do Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Falha ao puxar: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Puxar de {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Puxar de {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Puxar da origem ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull Rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Opções de pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Falha no envio: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Perguntas"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Cota atingida"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Acabou"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Acabou · reinicia em {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Limite de taxa atingido"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Limite de taxa atingido. Tente novamente em breve."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "A reaplicação de alterações locais apresenta conflitos"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Faça login novamente"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Pronto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Pronto para revisão"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Raciocínio"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Recente"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Tópicos recentes"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Reconstruído a partir de registros locais com taxas de API públicas — "
+"não reflete sua fatura real em planos de assinatura. Mostrado apenas no "
+"painel de uso."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Atualizar"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Atualizar autenticação de {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Atualizar agentes detectados"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Atualizar registro"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Atualize o uso em segundo plano a cada N minutos. Defina como 0 para "
+"desligar (somente manual). O piso de 2 minutos respeita os limites de "
+"tarifa do provedor."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Atualizando o status de autenticação de {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Atualizando o status de autenticação {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Recarregar"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Remoto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Nome remoto"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "URL remota"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Remover"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Remover {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Remover {0} do painel"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Remover {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Remover ação"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Remover perfil do Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Remover variável de ambiente"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Remover dos favoritos"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Remover do grupo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Remover do painel"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Remover modelo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Remover projeto"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Remover árvore de trabalho?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Renomear"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Renomear grupo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Renomear tópico"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "O renderizador travou"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "O renderizador falhou durante a inicialização"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "O renderizador atingiu um erro de React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "O renderizador encontrou um erro não capturado"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "O renderizador atingiu uma rejeição de promessa não tratada"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Reordenar {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Reordenar {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Informar um problema"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "repositório"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Repositório"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "O gancho de pré-recebimento do repositório está bloqueando a mesclagem."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "URL do repositório"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Solicitar alterações"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Solicitar detalhes"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "alterações solicitadas"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Avaliações, conversas ou verificações de status necessárias não "
+"atendidas."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "redefinir"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Redefinir ordem do modelo"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Redefinir efeito fosco da barra lateral para o padrão"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Redefinir para o padrão"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Redimensionar gaveta do navegador"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Redimensionar coluna"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Redimensionar painel git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Redimensionar notas e tarefas"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Redimensionar linha"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Redimensionar barra lateral"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Redimensionar divisão"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Redimensionar painel terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Resolve conflitos de mesclagem durante rebase ou mesclagem."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Restaurar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Restaurar navegador"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Restaurar tópico"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Tentar novamente como administrador"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Voltar ao aplicativo"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Revelar no Explorador de Arquivos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Revelar na árvore de arquivos"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Reverter"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Reverter tudo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Reverter todas as alterações"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Reverter alterações"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Reverter para o ponto de verificação?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Reverter para este ponto de verificação"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Revisar alterações"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Comentário de revisão"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Rever decisão"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Revisão mediante solicitação"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Revisar PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Revisar PR #{prNumber} para {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Direita"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Painel direito"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Executar"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Executar {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Execute {0} antes que este thread possa ser executado."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Execute {loginCommand} para fazer login."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Executar comando"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Execute em uma árvore de trabalho separada"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Execute a transcrição local na GPU quando disponível."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Execute o comando do terminal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "em execução"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "É executado antes que uma árvore de trabalho seja removida (por "
+"exemplo, <0>rm -rf node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "É executado em um terminal após a criação de uma nova árvore de "
+"trabalho (por exemplo, <0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Esgota antes"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Esgota em {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Tempo de execução"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Depuração de tempo de execução"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Opções de tempo de execução"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Salvar"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Salve as credenciais {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Salvar perfil do Claude"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Salvar arquivo"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "As credenciais salvas são compartilhadas em todos os ambientes."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Verificando {wslDistro} em busca de CLIs instaladas. Isso geralmente "
+"leva alguns segundos."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Verificando Windows e WSL em busca de CLIs instaladas. Isso geralmente "
+"leva alguns segundos."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Verificando seu sistema em busca de CLIs instaladas. Isso geralmente "
+"leva alguns segundos."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Scripts"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Multiplicador de velocidade de rolagem para o buffer de rolagem do "
+"terminal."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Rolar até o fim"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Pesquisar"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Pesquisar agentes"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Procurar agentes..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Pesquisar branches..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Pesquisar arquivos"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Pesquisar modelos"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Pesquisar modelos..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Pesquise ou digite o endereço"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Pesquisar repositórios"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Pesquisar repositórios…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Pesquisar itens de tempo de execução…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Pesquisar tópicos"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Pesquisar tópicos"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Pesquisar…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Procurando..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Procurando…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Ver mais"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Selecione"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Selecione um arquivo da árvore"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Selecione um arquivo para começar a editar."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Selecione um repositório."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Selecione a conta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Selecione um agente para ver seu prompt e resultado."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Selecionar branch"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Selecionar dispositivo"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Selecione o modelo"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Selecione o projeto"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Envie uma mensagem..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Enviar mensagem"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Seleção enviada para o terminal."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Separe contas do Claude Code por diretório de configuração ou aponte um "
+"perfil para um provedor externo (z.ai, …). Abra um perfil para "
+"configurar suas variáveis de ambiente, modelos e esforço."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Definir ou visualizar uma meta experimental"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Configurações"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Script de configuração"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Compartilhar"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Compartilhe sua atividade"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Mostre um anel de uso compacto por provedor na barra lateral."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Mostre um escopo inicial sem projeto para sessões de agente no nível do "
+"sistema operacional."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Mostrar tudo"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Mostrar barra de favoritos"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Mostrar círculos na barra lateral"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Mostrar compositor"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Mostrar detalhes de uso do contexto"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Mostrar custo estimado"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Mostrar no explorador de arquivos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Mostrar menos"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Mostrar mais"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Mostrar notificações"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Mostrar notificações quando o status do tópico for alterado."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Mostrar links abertos em"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Mostrar visualização"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Mostrar painel de depuração em tempo de execução"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Mostrar barra lateral"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Mostrar fonte"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Mostre o botão do microfone no compositor."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Mostrar botão de entrada de voz"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Efeito fosco da barra lateral"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Faça login"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "É necessário fazer login"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "É necessário fazer login"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Faça login com a CLI do agente."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Sair de {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Conectado"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Fazendo login"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Fazendo login…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Saindo de {env}. Os agentes detectados serão atualizados quando "
+"terminar."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Saindo. Os agentes detectados serão atualizados quando terminar."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Habilidade: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Skills"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Skills exploradas"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Algumas verificações estão falhando ou pendentes."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Classificar por data de criação"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Classificar pela última atualização"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Classificar tópicos"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Terminal dividido"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Visualização dividida"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Adicionar ao stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Adicionar tudo ao stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "em stage"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Em stage"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Em stage ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Começar"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Inicie o {appName} para ver o uso"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Inicie um novo tópico a partir do texto selecionado"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Inicie um novo tópico com esta tarefa"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Comece do zero"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Inicie o compositor recolhido em threads nativos do terminal. Um "
+"compositor recolhido encaminha as seleções de elementos do navegador "
+"direto para o terminal."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Iniciar entrada de voz"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Comece sem contexto"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Tópico {targetLabel} iniciado"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Começando"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Iniciando entrada de voz"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "começando…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Stash e Pull"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "O status é inferido da saída do terminal (L2). Instale o plugin hook "
+"nas configurações para atualizações estruturadas."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "O status é fornecido pelo protocolo de controle de agente (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "As atualizações de status vêm do plugin CLI hook."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Estado:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Parar"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Parar resposta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Parar tarefa"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Parar a entrada de voz"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Armazenar como texto simples"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Armazenar como segredo (criptografado em repouso)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Subagente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Subagente não encontrado."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Resultado do Subagente"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Subagentes"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Enviar"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Envie comentários e aprove a mesclagem dessas alterações."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Envie feedback que deve ser resolvido antes do merge."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Envie feedback sem aprovação explícita."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Enviar avaliação"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Supervisionado"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "O modo de suporte aparece quando a sessão é conectada."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Suporte:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Alternar entre notas e tarefas"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Mudar de branch"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Mudar de modo"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Mudar de modo: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Trocar projeto"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Mude este chat para o modo de agente"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Mude este chat para o modo de planejamento"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Sincronizar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Sincronizar (Rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Sincronizar ↓{behind}↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Falha na sincronização: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Opções de sincronização"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Sincroniza com o Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Sistema"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Navegador do sistema"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Padrão do sistema"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Tirar captura de tela"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Branch de destino"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Provedor de destino"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Saída da tarefa"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Diga a {0} o que fazer a seguir..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Diga ao provedor alvo o que fazer a seguir..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Terminal para {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Entrada do terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Terminal não pronto — seleção adicionada ao compositor."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Tamanho da fonte do painel do terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Posição do terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Velocidade de rolagem do terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Guias de terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Testar microfone"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "o agente"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "o aplicativo"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "a pasta escolhida"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "O shell normal do aplicativo não pôde ser renderizado. Os diagnósticos "
+"abaixo são mostrados antes da recarga para que a falha possa ser "
+"investigada."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "o provedor alvo"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Tema"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Pensando"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Este agente não está instalado."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "este ambiente"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Este arquivo é muito grande para o editor integrado."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Este arquivo usa uma codificação não suportada."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Isso exclui permanentemente o branch \"{0}\" do remoto dele."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Isso exclui permanentemente o branch \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Isso remove mensagens posteriores e restaura arquivos quando um "
+"instantâneo do ponto de verificação estiver disponível."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Isso remove a árvore de trabalho em \"{0}\" e fecha {1, plural, one {# "
+"tópico vinculado} other {# tópicos vinculados}}, e depois exclui o "
+"branch."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Isso remove a árvore de trabalho em \"{0}\" e depois exclui o branch."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Este tópico usa a árvore de trabalho <0>{0}0>. Remover também o "
+"diretório da árvore de trabalho?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "Esta árvore de trabalho possui alterações locais. O Lightcode pode "
+"armazená-las temporariamente, fazer pull de {0} e depois reaplicar suas "
+"alterações."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Pensamento"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Tópico"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Tópico + Árvore de Trabalho"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Uso de contexto do tópico"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Doca do tópico"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Falha ao iniciar o tópico."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Tópico finalizado ou aguardando sua entrada."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Doca de meta do tópico"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "O tópico já está descarregado."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Modo de tópico"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Apenas tópico"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Ordem de classificação de tópicos"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Doca de tarefas do tópico"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Tópicos"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Tópicos marcados como concluídos que não foram tocados por tantos dias "
+"são arquivados automaticamente na inicialização do aplicativo. Defina "
+"como 0 para desativar."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Geração de Título"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Tarefas"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Alternar modo rápido"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Desative os modelos para ocultá-los do seletor."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Alternar terminal"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokens"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokens de {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Pesquisa de ferramentas"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Total de prompts"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Total de skills usadas"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Total de threads"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Rastrear o uso de {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Acompanhe a sessão por provedor, o uso semanal e mensal. As janelas são "
+"informadas por cada provedor; o custo estimado é reconstruído a partir "
+"de registros locais."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Rastreamento desativado"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Transcrevendo voz"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Barra lateral translúcida"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Ative ou desative o rastreamento por provedor. Provedores desativados "
+"são ignorados pela atualização automática."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Digite um comando"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Não foi possível autenticar {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Não foi possível criar o diretório da árvore de trabalho WSL \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Não foi possível instalar os ganchos do {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Não foi possível instalar {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Não foi possível desconectar {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Não foi possível abrir o login do {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Não foi possível abrir o arquivo"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Não foi possível atualizar o status do {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Não foi possível atualizar {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Não foi possível atualizar os perfis do Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Não foi possível remover as credenciais do {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Não foi possível remover a árvore de trabalho."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Não foi possível resolver o diretório inicial da distribuição WSL "
+"\"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Não foi possível salvar as credenciais do {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Não foi possível salvar o perfil {displayLabel} do Claude."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Não foi possível iniciar {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Não foi possível atualizar {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Não foi possível atualizar {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Não foi possível atualizar os ganchos do {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Não foi possível atualizar {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Não foi possível atualizar {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Não foi possível atualizar {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Desagrupar tudo"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Visão unificada"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Projeto desconhecido"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Ilimitado"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Descarregar tópicos ociosos após"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Descarregar tópicos inativos após (minutos)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Descarregar tópico"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Desmarcar como concluído"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Desmarcar como concluído"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Sem fase:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Desafixar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Remover do stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Remover tudo do stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "fora do stage"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Não compatível"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Atualizar"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Atualizar {0} para {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Atualização disponível"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Atualizar branch"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Erro de atualização: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Método de atualização"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Atualizar tarefa"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Atualizar para {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Atualizar para {updateLabel} para {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Atualizar para {updateLabel} para {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Atualizar para v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Atualizar para v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Atualizar com commit de mesclagem"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Atualizar com rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Atualizado {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Atualizando"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Atualizando {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Atualizando {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Uso"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Uso não suportado"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Configurações de uso"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Uso desconhecido"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Use uma pasta existente"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Usar configuração"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Usar sessão detectada?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Usar arquivos de ignore"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Usar sessão"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Use esta conta para monitorar o uso ou altere os usuários no navegador "
+"antes de continuar."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Use aceleração WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Usado"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Usando a lista de modelos integrada do Claude."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} disponível"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "valor"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Versão"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "via {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Visualizar"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Modelos {0} visíveis"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Modelos visíveis"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "A entrada de voz não está disponível neste ambiente."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Idioma de entrada de voz"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Modelo de entrada de voz"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Aguarde o tópico terminar de iniciar."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Aguardando autenticação {authEnv} {authMethodName}. Os agentes "
+"detectados serão atualizados quando terminar."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Aguardando autenticação {authMethodName}. Os agentes detectados serão "
+"atualizados quando terminar."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Aguardando autenticação {env} {methodName}. Os agentes detectados serão "
+"atualizados quando terminar."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Aguardando autenticação {methodName}. Os agentes detectados serão "
+"atualizados quando terminar."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "esperando o agente parar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Aguardando o fluxo de trabalho gerar agentes…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Despertar"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Despertar em {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Despertar em {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Despertar: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Aquecendo o ambiente shell…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Aquecendo ambientes shell..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Aquecendo o ambiente shell WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Pesquisa na web"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Site"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "O que o botão Criar PR faz por padrão: abra uma caixa de diálogo para "
+"editar primeiro o título e a descrição ou gere-os automaticamente e "
+"crie o PR com um clique. Você também pode mudar isso no menu do botão."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Quando ativada, a pesquisa respeita as entradas <0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Quando os links são abertos em uma guia do navegador Lightcode, escolha "
+"onde o navegador é revelado."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Quando desativado, suprime notificações de tópicos de terminal cujo "
+"status vem do fallback OSC (sem plug-in de gancho CLI)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Quando exibir alertas no aplicativo para tópicos visíveis."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Ao fechar a janela, mantenha o Lightcode em execução na bandeja do "
+"sistema. Desative para sair ao fechar."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Para onde vai uma seleção do seletor de elementos do navegador em "
+"tópicos nativos do terminal. Um compositor recolhido sempre roteia para "
+"o terminal."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Por onde você quer começar?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Onde o painel do terminal aparece."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Será executado em {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Janelas"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "O Windows ainda não é compatível. Instale dentro do WSL ou no "
+"macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Trabalho"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Trabalhar no checkout atual"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Trabalhou por {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Fluxo de trabalho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Fluxo de trabalho concluído. Os agentes filhos foram executados em um "
+"processo separado e ainda não foram transmitidos aqui."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "O fluxo de trabalho está sendo executado em segundo plano. Os agentes "
+"filhos são executados em um processo separado e ainda não são "
+"transmitidos aqui."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Fases do fluxo de trabalho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Resultados do fluxo de trabalho"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Fluxo de trabalho: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Fluxos de trabalho"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Trabalhando"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Trabalhando por {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Árvore de trabalho limpa"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Trabalhando…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Árvore de trabalho"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Árvore de trabalho + alterações"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Modo árvore de trabalho"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Árvore de trabalho: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Árvores de trabalho"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Quebrar linhas"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Escreva um comentário"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Escreva um comentário…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Escreva notas para este projeto…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Seu nome"
diff --git a/src/renderer/locales/ru/messages.po b/src/renderer/locales/ru/messages.po
new file mode 100644
index 00000000..59bc9ab8
--- /dev/null
+++ b/src/renderer/locales/ru/messages.po
@@ -0,0 +1,6070 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-15 03:02-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: ru\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Черновик)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(нет сообщения)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# файл} few {# файла} many {# файлов} other {# файла}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# провайдер готов} few {# провайдера готовы} many {# "
+"провайдеров готовы} other {# провайдера готовы}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {цель} few {цели} many {целей} other {цели}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# других чатов используют это же дерево. "
+"Восстановление файлов может перезаписать их изменения.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Composer"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Терминал"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) уже обновлён."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) обновлён до v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) обновлён."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} аутентифицирован."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Учётные данные {0} удалены."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "Учётные данные {0} сохранены."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "Устройств: {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "Хуки {0} установлены для {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "Хуки {0} установлены."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "Хуки {0} удалены для {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} целей установки"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} уже обновлён."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "Лимит {0}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} вышел из системы."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} требует аутентификации."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} запрос - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} запросов - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} запуск"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} запусков"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} токенов"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} токенов - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} обновлён до v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} обновлён до v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} обновлён до v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} обновлён до v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} обновлён."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} использовано"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% заполнено"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0} мес. назад"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Наведите для подробностей о статусе."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} день"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} дн."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days}д назад"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} требует аутентификации."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "Совпадений: {filteredCount} / {totalCount}"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} или {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Режим {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "Сбой хука {hook}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours}ч назад"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# агент готов} few {# агента готовы} many "
+"{# агентов готовы} other {# агента готовы}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "Использование {label} — открыть панель использования"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "Контекст {maxLabel}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes}м назад"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} требует аутентификации."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Очистка worktree также завершилась с ошибкой: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% заполнено"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (отключено)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Настройки {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# открыт} few {# открыто} many {# открыто} "
+"other {# открыто}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# результат} few {# результата} many {# "
+"результатов} other {# результата}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds}с назад"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} токенов"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} токенов"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} токенов"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} токенов"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} из {totalCount} видимых"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Все права защищены."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> из {0} проверок пройдено"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · прибл."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% к сбросу"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "поддерживаемый агент кодирования"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Прервать слияние"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "О программе"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Принять оба изменения"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Принять текущее изменение"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Принять входящее изменение"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Аккаунт"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Параметры аккаунта"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Аккаунты"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Агенты ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Команда действия"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Действие кнопки быстрого удаления у тредов на боковой панели."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Имя действия"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Действия"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Активно"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Активность"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Статистика активности"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Метрика активности"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Добавить"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Добавьте проект перед установкой агента."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Добавьте проект перед входом."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Добавьте проект, чтобы начать"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Добавить задачу…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Добавить действие"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Добавить вложение или возможность"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Добавить профиль Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Добавьте учётные данные, прежде чем этот тред сможет запуститься."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Добавить модель"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Добавить шаблон"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Добавить профиль"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Добавить проект"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Добавить проект"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Параметры добавления проекта"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Добавить удалённый репозиторий"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Добавить в Composer"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Добавить в избранное"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Агент"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Агент ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Чат агента (ACP / markdown). Строки команд используют этот размер минус "
+"1 px; строки инструментов и планов — минус 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Агент столкнулся с ошибкой."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Агент активен и готов"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Агент сейчас отключён"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Агент не найден"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Реестр агентов"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Размер шрифта терминала агента"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Доступно обновление агента"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Агент: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Агент: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Агенты"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Агенты · Общие"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Оркестратор AI-агентов — управление кодирующими агентами через терминал "
+"и нативный ACP."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Действия ИИ в Git"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Все аккаунты"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Все устройства"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Все уровни рассуждений"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Все файлы"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Разрешить"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Разрешить агентам читать и записывать cookie и хранилище"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Разрешить eval"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Всегда"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Всегда исключено"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Другой чат использует это же дерево. Восстановление файлов может "
+"перезаписать изменения этого чата."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Встроенный браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Оформление"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Режим оформления"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Применить пресет провайдера"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Требуется ваше подтверждение или ответ."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Одобрить"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "одобрено"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Одобрено"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Архивировать"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Архивировать {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Архивировать всё"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Архивировать тред"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Архив тредов"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Вы уверены, что хотите откатить <0>{0}0>? Это нельзя отменить."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Вы уверены, что хотите откатить <0>{path}0>? Это нельзя отменить."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Вы уверены, что хотите откатить все непроиндексированные изменения? Это "
+"нельзя отменить."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Спросите {0} о чём угодно в этом рабочем пространстве"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Спрашивать каждый раз"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Задать вопрос"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Прикрепить"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Прикрепить файлы"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Прикрепить к треду"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Прикрепить панель задач к Composer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Выбор в браузере прикреплён."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Звук"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Аутентификация"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Требуется аутентификация"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Авто"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Автоодобрение"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Автоархивировать завершённые треды через"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Автоархивировать завершённые треды через (дней)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Создавать автоматически"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Автообновление (минуты)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Интервал автообновления в минутах, 0 — отключить"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Автопроверка"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Автопоказ панели терминала"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Автоматически показывать панель терминала при выполнении команд или "
+"создании рабочих деревьев."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "доступно"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Доступные агенты ACP"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Цвет аватара"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Цвет аватара {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Назад"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Фоновый процесс завершился неожиданно"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Фоновый процесс не запущен"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Фоновый процесс перезапущен"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Фоновые задачи"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Базовая ветка опережает — сначала нужно обновить ветку."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Базовый размер шрифта для терминалов агентов. Автоматически уменьшается "
+"в узких или низких панелях."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Базовый размер шрифта для панели терминала. Автоматически уменьшается в "
+"узких или низких панелях."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Вывод Bash"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Базовый (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Лучше (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Более качественные обновления статуса во время работы агентов."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Бинарный"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Бинарный файл — предпросмотр недоступен."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Бинарный файл или diff недоступен"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Бинарные файлы нельзя редактировать здесь."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "заблокировано:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Полужирный"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Снизу"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "В ветке '{branch}' есть незакоммиченные изменения в '{path}' — "
+"закоммитьте их или поместите в stash перед слиянием"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "В ветке <0>{0}0> есть несмердженные изменения:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Ветка не полностью смерджена"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Правила защиты ветки заблокировали это слияние."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Ветки"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Выбрать родительскую папку"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Просмотрите свои репозитории GitHub или вставьте URL для клонирования."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Браузер"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Browser MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Browser MCP включён для OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Browser MCP включён для этого треда"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Меню браузера"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Цель выбора из браузера (CLI-треды)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Цель выбора из браузера для CLI-тредов"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Достигнут лимит бюджета"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Построение diff…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "автор: <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "по запросам"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "по токенам"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Обойти правила защиты ветки"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Обойти правила защиты ветки (слияние администратором)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Отмена"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Отменить новый профиль Claude"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Отменить ожидающую корректировку"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Отменить выбор"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "отменено"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Невозможно создать путь worktree по умолчанию без имени ветки"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Невозможно переключить ветки — сначала закоммитьте изменения или "
+"поместите их в stash"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Сменить пользователя"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Список изменений"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Изменения"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Изменения ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Изменения в PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Запрошены изменения"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Канал"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Чат"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Команды чата"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Проверить"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Проверить обновления"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Проверить уровень входного сигнала с выбранного устройства в реальном "
+"времени."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Проверка…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Проверки"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Выберите папку…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Выберите способ входа для {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Выберите способ входа."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Выберите язык интерфейса Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Выберите тред для прикрепления"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Выберите, остаются ли ссылки из Lightcode и всплывающие окна браузера "
+"внутри Lightcode или открываются во внешнем приложении."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Профиль Claude {0} сохранён."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Профиль Claude {displayName} добавлен."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Каталог конфигурации профиля Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Имя профиля Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Профиль Claude удалён."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Скрипт очистки"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Очистить историю просмотров"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Очистить кэш"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Очистить cookies"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Очистить поиск"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Хуки CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Клонировать"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Клонировать репозиторий"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "URL для клонирования"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Клонирование {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Клонирование…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Закрыть"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Закрыть терминал {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Закрыть браузер"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Закрыть редактор"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Закрыть вкладку редактора"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Закрыть цель"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Закрыть группу"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Закрыть панель"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Закрыть панель"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Закрыть план"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Закрыть PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Закрыть предпросмотр"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Закрыть поиск"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Закрыть разделение"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Закрыть субагент"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Закрыть субагенты"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Закрыть панель субагентов"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Закрыть вкладку"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Сворачивать в трей"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Закрыть детали использования"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Закрыто"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Код скопирован. "
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Свернуть"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Свернуть {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Свернуть все"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Свернуть все"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Свернуть все папки"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Свернуть Composer"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Свернуть ошибку"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Сворачивать поле ввода терминала"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Свернуть панель задач"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Команда"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Команда (напр., npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Команды"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Комментарий"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Комментарий опубликован"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "прокомментировал"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Коммит"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Коммит и создать PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Язык коммитов и PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Коммит и push"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Сбой коммита: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Сообщение коммита"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Сообщение коммита (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Генерация сообщения коммита"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Параметры коммита"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Коммиты"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Сжатие контекста"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Завершено"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Завершите вход в {0}, прежде чем этот тред сможет запуститься."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Завершите вход в {0} для {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Завершите вход в {0} или сохраните учётные данные {1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Завершите вход в {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Выполните подсказки в этом терминале. Он закроется после завершения."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "завершено"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Поле ввода"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Каталог конфигурации"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Разрешение конфликтов"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Конфликты"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Консоль"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Контекст"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Контекст сжат"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Контекст сжат с {before} токенов"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Контекст сжат: {before} → {after} токенов"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Извлечение контекста ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Контекст вручную сжат с {before} токенов"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Контекст вручную сжат: {before} → {after} токенов"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Контекст передан в {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Использование контекста"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Продолжить"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Продолжить в другом провайдере"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Продолжить в..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Управляйте тем, какие файлы появляются в поиске по упоминанию @file. "
+"Переопределения для каждого проекта находятся в настройках "
+"соответствующего проекта."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Разговор"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Скопировано"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Скопировано в буфер обмена"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Копировать"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Копировать код устройства {0} {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Копировать текущий URL"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Копировать сведения"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Копировать диагностику"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Не удалось скопировать"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Копировать игнорируемые файлы"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Копировать изображение"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Копировать сообщение"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Копировать путь"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Копировать относительный путь"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Копировать незакоммиченные изменения сюда (оставляет их в этой ветке)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Не удалось прервать слияние: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Не удалось завершить слияние"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Не удалось извлечь контекст."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Не удалось сгенерировать сообщение коммита: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Не удалось прочитать файл."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Не удалось клонировать репозиторий."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Не удалось скопировать ваши незакоммиченные изменения в новый worktree "
+"— они остаются в текущей ветке."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Не удалось создать проект."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Не удалось получить список репозиториев."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Не удалось загрузить статистику профиля."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Создать черновик PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Создать файл"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Создать новую ветку"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Создать новую ветку..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Создать PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Создать PR (авто)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Действие создания PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Создать PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Создать проект"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Создать pull request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Создать задачу"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Создать:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Worktree создан на \"{newBranch}\", но изменения вызвали конфликт и "
+"остаются в git stash — разрешите их в worktree."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Учётные данные настроены."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Кредиты"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "текущая серия"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Текущая серия"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Пользовательский"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Пользовательские команды доступны из контекстного меню проекта (правый "
+"клик)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Тёмная"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Отклонить"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "По умолчанию"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Действие создания PR по умолчанию"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Новый тред по умолчанию"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Разрешения по умолчанию"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Удаление тредов по умолчанию"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Удалить"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Удалить {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Удалить ветку?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Удалить файл"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Удалить безвозвратно"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Удалить тред"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Удалить тред"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Удалить тред?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Удалить задачу"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Удалить worktree"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Удалить worktree {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Удалить:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Удаление"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Запретить"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Запретить и сказать агенту, что сделать иначе…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Описание"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Описание (необязательно)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Обнаружено <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Обнаружено <0>(local)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Обнаружено <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Обнаружение агентов…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Разработчик"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Переопределения только для разработки. Видны только в сборке LIGHTCODE "
+"DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Устройство, используемое кнопкой голосового ввода в поле ввода."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Отключить"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Отключить уровень рассуждений {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Отключить Browser MCP"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Отключить плагин хука CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Отключить проект"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Отключите уровни, которые внешний провайдер объединяет (например, "
+"оставьте только High и Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Отключено"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Отменить несохранённые изменения в {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Отменить несохранённые изменения в редакторе?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Поиск агентов для кодирования…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Закрыть"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Закрыть ошибку"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "проверка отклонена"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Отображаемое имя в боковой панели."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Документация"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Больше не спрашивать"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Не показывать предложение установки хука"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "готово"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Готово"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Готово · Ожидается ваш ввод"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Скачать изображение"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Загрузка в «{0}». Для больших репозиториев это может занять некоторое "
+"время."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Загрузка голосовой модели {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Загрузка голосовой модели..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Загрузка{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Загрузка{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Черновик"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Перетащите, чтобы изменить порядок отображения провайдеров в выборе "
+"модели."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Перетащите для изменения порядка; двойной щелчок для редактирования"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Перетащите сюда, чтобы прикрепить"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Отбрасывает входящие конверты хуков на супервизоре, чтобы агенты "
+"переходили на L2 (прогресс OSC 9;4) без влияния на установку или "
+"уведомления iTerm2. Вступает в силу при следующем событии хука — "
+"перезапуск не требуется."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "напр. Работа"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Редактировать"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Изменить файл"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Редактировать профиль"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Изменить:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Редактор"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "LSP редактора"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Вкладки редактора"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Усилие и контекст"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Уровни рассуждений"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Включить"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Включить уровень рассуждений {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Включить поддержку языкового сервера для проверки типов, автодополнения "
+"и диагностики. Требуется установленный языковой сервер."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Включите доступ к микрофону в настройках системы и повторите попытку."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Включить уведомления"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Включить проект"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Включить провайдеров в настройках"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Включено"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Включает <0>cookie0> и <1>хранилище1>. Cookie могут содержать "
+"токены сессии, а в хранилище часто хранится состояние аутентификации — "
+"включайте, только если доверяете и агенту, и сайтам, которые он "
+"посещает."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Расширенный (Hooks)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Введите URL репозитория."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Войти в режим плана"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Окружение"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Имя переменной окружения"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Значение переменной окружения"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Переменные окружения"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "ошибка"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Ошибка"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Ошибка · Агент столкнулся с ошибкой"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Шаблоны исключения"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Выйти из режима плана"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Завершился с кодом {0}. Закройте, чтобы повторить."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Развернуть"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Развернуть {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Развернуть всё"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Развернуть ошибку"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Развернуть панель задач"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Внешний"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Внешний провайдер"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Очень высокий"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Извлечение контекста из {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "не удалось"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Не удалось закрыть pull request: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Не удалось создать pull request: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Не удалось загрузить статистику профиля."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Не удалось выполнить слияние pull request: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Быстрый"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Быстрый режим"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Быстрее всего (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "Режим «Быстрее всего» использует Whisper tiny; «Лучше» — Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Избранное"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Получить"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Файл"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Изменения файлов появятся здесь."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Файл слишком большой для предпросмотра."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Файл больше не существует на диске."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Файл слишком большой для отображения ({0, plural, one {изменена # "
+"строка} few {изменено # строки} many {изменено # строк} other {изменено "
+"# строки}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Файл использует неподдерживаемую кодировку."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Файлы"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Файлы для {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Файлы, соответствующие этим glob-шаблонам, скрыты из поиска упоминаний "
+"@file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Завершите проверку"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Завершено"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Завершено · Ожидается ваш ввод"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Первоклассная интеграция Antigravity CLI с использованием нативной "
+"среды выполнения Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Первоклассная интеграция Claude Code с использованием нативной среды "
+"выполнения SDK Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Первоклассная интеграция Codex CLI с использованием нативной среды "
+"выполнения app-server Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Первоклассная интеграция Command Code CLI с использованием нативной "
+"среды выполнения Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Первоклассная интеграция Grok Build CLI с использованием нативной среды "
+"выполнения Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Первоклассная интеграция OpenCode с использованием нативной среды "
+"выполнения SDK Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Исправить в агенте"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Имя папки"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Принудительно удалить"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Принудительно удалить? Несведённые изменения будут потеряны."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Развилка"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Форматировать файлы"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Вперёд"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Найдена сессия {0} с выполненным входом."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Сделать боковую панель матовой за счёт системного размытия (vibrancy) в "
+"духе свежих версий macOS. При отсутствии поддержки используется "
+"полупрозрачный оттенок."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Матовость боковой панели в режиме {appearance} поверх системного "
+"размытия. Выше — сохраняется цвет темы; ниже — больше виден фон позади."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Полный доступ"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Полноэкранное наложение"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Общие"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Сгенерировать сообщение коммита"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Сгенерировать сводку PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Сгенерировать с помощью AI"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Сгенерированное изображение"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Генерирует сообщения коммитов из подготовленных изменений."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Генерирует короткие заголовки для новых тредов."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Получить задачу"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Сбой Git {command}: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Проверка Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Режим просмотра Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Состояние Git для {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Состояние Git для {0}: не репозиторий Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Репозиторий GitHub"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Игнорируемые Git файлы для копирования из основного проекта в каждый "
+"новый worktree. Шаблоны в стиле gitignore, по одному на строку (напр., "
+"<0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (необязательная метка)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Цель"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Поставлено целей"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Группа"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Группировать открытые треды"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Размер шрифта чата в GUI"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "никнейм"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Никнейм"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Жёсткая перезагрузка"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Скрытые возобновляемые треды проверяются каждые 5 минут и выгружаются "
+"по достижении этого времени простоя."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Скрыть"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Скрыть всё"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Скрыть браузер"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Скрыть инспектор элементов канонической среды выполнения"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Скрыть детали использования контекста"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Скрывает модели, которые вы не используете, из выбора модели для всех "
+"провайдеров."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Скрыть панель"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Скрыть панель отладки среды выполнения"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Скрыть боковую панель"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Скрыть терминал"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Главная"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Домашняя область"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Ожидание"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Изображение"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Предпросмотр изображения"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Неактивно"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "наследовано"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Наследуется глобальная настройка (сейчас {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Инициализировать репозиторий"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Уровень входного сигнала"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Проверить канонические элементы среды выполнения"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "установки"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Установить"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Установить {0} для {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Установить {0}, чтобы создать тред."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Установить {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Установить {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Установить хуки CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Установить в WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Сначала установите нативные провайдеры; используйте ACP для "
+"дополнительных протокольных агентов."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Установить в Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Установить пакеты"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Установить обновление"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Установить v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Установить v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Установлено"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Установка"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Установка выполняется в этом терминале. Он закроется после завершения."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Прервано: сессия агента завершилась до окончания."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Курсив"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "только что"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Сохранить ветку"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Не давать системе засыпать, пока хотя бы один тред активно работает."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Завершить bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Язык"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Язык сообщений коммитов и сводок pull request, создаваемых ИИ. "
+"Заголовки тредов всегда следуют языку приложения."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Язык, который должна ожидать модель распознавания речи при "
+"транскрибировании диктовки в поле ввода."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Последний инструмент: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Запустить тред"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Запуск…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Оставить комментарий"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Меньше"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Позволяет агентам вызывать <0>eval0> для выполнения произвольного "
+"JavaScript внутри встроенной страницы. По умолчанию отключено — "
+"включайте, только если доверяете загруженным сайтам и агенту."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Лицензия"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "токенов за всё время"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Токенов за всё время"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Светлая"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Список"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Список пакетов"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Список задач"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Загрузка"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Загрузка аккаунтов…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Загрузка различий..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Загрузка редактора…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Загрузка файла…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Загрузка заметок…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Загрузка PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Загрузка реестра..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Загрузка…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "локальный"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Локальный"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Перед выполнением pull из {branch} локальные изменения нужно поместить "
+"в stash"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Расположение"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Вход в систему"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Выход из системы"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "вход"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Войти"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Войти {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Требуется вход"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Выйти"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Выйти {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "самая длинная серия"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Самая длинная серия"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Самая длинная задача"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Сделать боковую панель полупрозрачной — системное размытие в Windows "
+"11, полупрозрачный оттенок в остальных системах."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Ручной порядок"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Отметить всё как выполненное"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Отметить как выполненное"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Отметить как невыполненное"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Отметить выполненным"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Отметить выполненным"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Как в приложении"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Следовать настройкам системы либо принудительно использовать светлую "
+"или тёмную тему."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Развернуть"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Развернуть браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Серверы MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Слить и удалить"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Конфликты слияния должны быть разрешены."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Сбой слияния"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "В слиянии есть конфликты"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "В слиянии есть конфликты:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Слить локально и удалить worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Метод слияния"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Параметры слияния"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Слить PR: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Слить PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Слить PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Слить в источник"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Слить worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Слито"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Слияние заблокировано"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Отправлено сообщений"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Микрофон"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Микрофон {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Доступ к микрофону отключён."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Уровень сигнала микрофона"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Доступ к микрофону отклонён."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Проверка микрофона недоступна в этой среде."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Свернуть браузер в правую панель"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Свернуть в панель"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Режим"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "ID модели"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Метка модели"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Порядок моделей"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Использование моделей"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Модели"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Режимы"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Больше"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Больше параметров одобрения"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Больше параметров коммита"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Больше действий с PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Больше параметров PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Больше параметров pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Больше параметров синхронизации"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Самый активный час"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Самые используемые плагины"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Самый используемый провайдер"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Самый используемый уровень рассуждений"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Переместить"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Переместить изменения в новый worktree"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Переместить панель задач в правую панель"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Ваши изменения перемещены в новый worktree на \"{newBranch}\". "
+"\"{currentBranch}\" теперь чист."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Перемещение изменений…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Имя"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Назовите проект и выберите, где его создать."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Нативный"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Нативные провайдеры"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Нативная поддержка"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Требует подтверждения"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Требует внимания"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Требует внимания · Нужно одобрение"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Требует внимания · Нужен ответ"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Требует ответа"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Новая команда действия"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Новое имя действия"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Имя новой ветки..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Новый каталог конфигурации профиля Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Новое имя профиля Claude"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Новый файл"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Новая папка"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Новый проект"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Новая вкладка"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Новый тред"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Новый тред"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Новый тред — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Новый тред (черновик)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Новый тред из этой задачи"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Новый тред в worktree"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Новый worktree"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Следующее изображение"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Нет активной вкладки браузера"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Нет активной сессии"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Активности пока нет."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Дополнительных профилей Claude нет."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Нет доступного агента для генерации сводки PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "В этой фазе нет агентов."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Агенты ещё не установлены"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Нет установленных агентов."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Пока нет отслеженных коммитов, PR или разрешений конфликтов от ИИ."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Нет архивированных тредов."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Ветки не найдены"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Нет открытых вкладок браузера"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Нет изменений"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Нет изменений для отображения"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Для этого PR не сообщено о проверках."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Команды не найдены"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Коммиты не найдены."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Нет потоков содержимого."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Беседы ещё нет. Прокомментируйте первым."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Данных пока нет"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Данных пока нет."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Без описания"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Нет доступного diff для {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Нет diff для {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Для этого сообщения не сохранена контрольная точка файлов."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Нет файлов, соответствующих \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Учётные записи GitHub CLI не найдены. Войдите с помощью <0>gh auth "
+"login0> или <1>вставьте URL для клонирования1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Нет совпадений для “{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Совпадений нет."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Подходящих агентов нет."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Подходящих тредов нет"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Инструменты MCP пока не использовались."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Сообщений пока нет"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Микрофон не найден."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Модели не найдены"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Других установленных агентов нет"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Нет шаблонов."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Фаз пока нет."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Нет промптов"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Провайдеры не отслеживаются."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Готовых провайдеров пока нет"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Удалённый репозиторий не настроен. Добавьте удалённый репозиторий, "
+"чтобы включить push и pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Репозитории не найдены."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Для этого треда пока нет runtime-элементов."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Навыки пока не использовались."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Речь не обнаружена."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Нет подготовленных изменений"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Субагенты пока не использовались."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Поддерживаемые агенты не обнаружены"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Нет тредов"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Тредов пока нет."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Окна не сообщены"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Нет worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Без переноса"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Нет"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Не репозиторий git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Не репозиторий Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Не найдено"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Не установлено"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Не запущено"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Вход не выполнен"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Не поддерживается"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Заметки"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Пока ничего не отслежено. Данные появятся здесь по мере использования."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Уведомления"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Уведомлять о CLI-тредах L2"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Уведомлять меня о"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "выкл"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Старее"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "вкл"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Только когда окно неактивно"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Открыть"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Открыть {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Открыть терминал"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Сначала откройте тред, чтобы прикрепить к нему."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Открыть всё"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Открыть всё в группе"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Открыть как страницу"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Открыть как панель"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Открыть браузер"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Открыть проверку"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Открыть палитру команд"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Открыть коммит на GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Открыть средство разрешения конфликтов в"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Открывать диалог"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Открыть файл"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Открыть файлы"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Открыть в полноэкранном режиме"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Открыть панель Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Открыть проверку Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Открывать просмотр Git как панель справа или как полную страницу."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Открыть предпросмотр изображения"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Открыть в редакторе"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Открывать ссылки в"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Открыть новую вкладку"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Открывать новые треды как полную страницу или как панель сбоку."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Открыть PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Открыть PR на GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Открыть предпросмотр"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Открыть настройки проекта"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Открытые запросы"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Открыть требуемый URL"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Открыть настройки"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Открыть настройки"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Открыть субагента: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Открыть выбор усилия"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Открыть выбор модели"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Открыто {0} (№{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Дополнительные хуки статуса. Установленные хуки обновляются "
+"автоматически; отсутствующие хуки никогда не устанавливаются "
+"автоматически."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Параметры"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Или напишите свой ответ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Результат"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Темп превышен — закончится раньше"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Переопределить значения Claude по умолчанию — например, "
+"ANTHROPIC_BASE_URL и ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Переопределение глобальной настройки для этого проекта."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Конфигурация пакета"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Менеджер пакетов"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Страница"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Панель"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Вставить"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Вставьте <0>{0}0> сюда. Нажмите, чтобы скопировать."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Вставить в поле ввода"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Приостановлено"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "пиковый день"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Пиковый день"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "ожидание"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "ожидает проверки"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Ожидающее направление"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "разрешение"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Выбрать элемент"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Выбрать значок"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Сбой выбора"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Выбор не вернул вложение"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Закрепить вверху"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Закреплено"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "План"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Воспроизводить звук при показе уведомления."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Звук уведомления"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Направьте этот профиль на провайдера, отличного от Anthropic (z.ai, …), "
+"с пользовательскими переменными окружения, именами моделей и уровнями "
+"рассуждений."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Популярные темы редакторов, адаптированные для Lightcode. Каждая "
+"следует светлому или тёмному режиму, выбранному выше."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "Действия PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Параметры PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Проверка PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "Разделы PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Заголовок PR (оставьте пустым для автогенерации)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Сбой хука pre-commit"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Пресеты"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Запрещать сон во время работы"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Предпросмотр {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Предыдущее изображение"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Профиль"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Профили"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Проект"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Название проекта"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Заметки проекта"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Настройки проекта"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Переопределения для конкретного проекта поверх глобальных настроек "
+"поиска."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Промпт"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Запросы"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Предложенный план"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "провайдер"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Провайдер"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Провайдер не сообщил об использовании токенов."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Пресеты провайдеров"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "провайдеры"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Провайдеры"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Pull ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Pull ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Pull не завершён. Ваши локальные изменения остались в stash Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Сбой pull: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Выполнить pull из {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Pull из {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Pull из источника ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull с rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Параметры pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Сбой push: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Вопросы"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Квота исчерпана"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Исчерпано"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Исчерпано · сброс через {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Превышен лимит запросов"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Превышен лимит запросов. Повторите чуть позже."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "При повторном применении локальных изменений возникли конфликты"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Войти снова"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Готово"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Готово к проверке"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Рассуждения"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Недавние"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Недавние треды"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Реконструировано из локальных логов по публичным тарифам API — не "
+"отражает ваш реальный счёт по подписочным планам. Показывается только "
+"на панели использования."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Обновить"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Обновить аутентификацию {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Обновить список обнаруженных агентов"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Обновить реестр"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Обновлять данные об использовании в фоне каждые N минут. Установите 0, "
+"чтобы отключить (только вручную). Нижний предел в 2 минуты учитывает "
+"ограничения частоты запросов провайдера."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Обновление статуса аутентификации {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Обновление статуса аутентификации {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Перезагрузить"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Удалённый"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Имя удалённого репозитория"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "URL удалённого репозитория"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Удалить"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Удалить {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Удалить {0} с панели"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Удалить {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Удалить действие"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Удалить профиль Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Удалить переменную окружения"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Удалить из избранного"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Удалить из группы"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Удалить с панели"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Удалить модель"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Удалить проект"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Удалить worktree?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Переименовать"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Переименовать группу"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Переименовать тред"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Рендерер аварийно завершился"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Рендерер не запустился"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Рендерер столкнулся с ошибкой React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Рендерер столкнулся с неперехваченной ошибкой"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Рендерер столкнулся с необработанным отклонением промиса"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Изменить порядок {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Изменить порядок {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Сообщить о проблеме"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "репозиторий"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Репозиторий"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Хук pre-receive репозитория блокирует слияние."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "URL репозитория"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Запросить изменения"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Сведения о запросе"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "запрошенные изменения"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Не выполнены обязательные проверки, обсуждения или статусные проверки."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "сброс"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Сбросить порядок моделей"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Сбросить матовость боковой панели к значению по умолчанию"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Сбросить к значению по умолчанию"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Изменить размер панели браузера"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Изменить размер столбца"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Изменить размер панели git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Изменить размер заметок и задач"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Изменить размер строки"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Изменить размер боковой панели"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Изменить размер разделения"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Изменить размер панели терминала"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Разрешает конфликты слияния во время rebase или слияния."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Восстановить"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Восстановить браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Восстановить тред"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Повторить с правами администратора"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Вернуться в приложение"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Показать в Проводнике"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Показать в дереве файлов"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Откатить"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Откатить всё"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Откатить все изменения"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Откатить изменения"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Откатить к контрольной точке?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Откатить к этой контрольной точке"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Просмотреть изменения"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Комментарий к ревью"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Решение по ревью"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Ревью по запросу"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Просмотреть PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Просмотреть PR #{prNumber} для {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Справа"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Панель справа"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Запустить"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Запустить {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Запустите {0}, прежде чем этот тред сможет выполниться."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Запустите {loginCommand}, чтобы войти."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Выполнить команду"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Запустить в отдельном worktree"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Выполнять локальную транскрипцию на GPU, когда доступно."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Выполнить команду терминала"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "выполняется"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Выполняется перед удалением worktree (например, <0>rm -rf "
+"node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Выполняется в терминале после создания нового worktree (например, "
+"<0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Закончится раньше"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Закончится через {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Среда выполнения"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Отладка среды выполнения"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Параметры среды выполнения"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Сохранить"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Сохранить учётные данные {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Сохранить профиль Claude"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Сохранить файл"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Сохранённые учётные данные используются во всех средах."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Сканирование {wslDistro} на наличие установленных CLI. Обычно это "
+"занимает пару секунд."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Сканирование Windows и WSL на наличие установленных CLI. Обычно это "
+"занимает пару секунд."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Сканирование вашей системы на наличие установленных CLI. Обычно это "
+"занимает пару секунд."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Скрипты"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Множитель скорости прокрутки для буфера обратной прокрутки терминала."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Прокрутить вниз"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Поиск"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Поиск агентов"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Поиск агентов..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Поиск веток..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Поиск файлов"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Поиск моделей"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Поиск моделей..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Поиск или ввод адреса"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Поиск репозиториев"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Поиск репозиториев…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Поиск runtime-элементов…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Поиск тредов"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Поиск тредов"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Поиск…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Поиск..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Поиск…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Показать больше"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Выбрать"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Выберите файл из дерева"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Выберите файл, чтобы начать редактирование."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Выберите репозиторий."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Выбрать аккаунт"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Выберите агента, чтобы увидеть его промпт и результат."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Выбрать ветку"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Выбрать устройство"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Выбрать модель"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Выбрать проект"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Отправить сообщение..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Отправить сообщение"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Выбор отправлен в терминал."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Разделяйте аккаунты Claude Code по каталогу конфигурации или "
+"направляйте профиль на внешнего провайдера (z.ai, …). Откройте профиль, "
+"чтобы настроить его переменные окружения, модели и уровни рассуждений."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Задать или просмотреть экспериментальную цель"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Настройки"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Скрипт настройки"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Поделиться"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Поделитесь своей активностью"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Показывать компактное кольцо использования по каждому провайдеру на "
+"боковой панели."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Показывать домашнюю область без проекта для сессий агентов на уровне "
+"OS."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Показать всё"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Показать панель закладок"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Показывать круги на боковой панели"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Показать Composer"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Показать детали использования контекста"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Показывать оценочную стоимость"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Показать в проводнике"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Показать меньше"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Показать больше"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Показывать уведомления"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Показывать уведомления при изменении статуса треда."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Показывать открытые ссылки в"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Показать предпросмотр"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Показать панель отладки среды выполнения"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Показать боковую панель"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Показать источник"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Показывать кнопку микрофона в поле ввода."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Показывать кнопку голосового ввода"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Матовость боковой панели"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Войти"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Требуется вход"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Требуется вход"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Войдите через CLI агента."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Выйти {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Вход выполнен"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Выполняется вход"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Выполняется вход…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Выход из {env}. Обнаруженные агенты обновятся по завершении."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Выход. Обнаруженные агенты обновятся по завершении."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Навык: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Навыки"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Изучено навыков"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Некоторые проверки не пройдены или ожидают выполнения."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Сортировать по дате создания"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Сортировать по последнему обновлению"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Сортировать треды"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Разделить терминал"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Разделённый вид"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Индексировать"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Индексировать всё"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "проиндексировано"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Подготовлено"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Подготовлено ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Начать"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Запустите {appName}, чтобы увидеть статистику использования"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Создать новый тред из выделенного текста"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Создать новый тред из этой задачи"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Начать с нуля"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Начинать с свёрнутым полем ввода в терминальных тредах. Свёрнутое поле "
+"ввода направляет выбор элементов из браузера сразу в терминал."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Начать голосовой ввод"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Запустить без контекста"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Тред {targetLabel} запущен"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Запуск"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Запуск голосового ввода"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "запуск…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Спрятать и получить (pull)"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Статус определяется по выводу терминала (L2). Установите плагин хуков в "
+"настройках для получения структурированных обновлений."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Статус предоставляется протоколом управления агентом (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Обновления статуса поступают от плагина хуков CLI."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Статус:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Остановить"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Остановить ответ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Остановить задачу"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Остановить голосовой ввод"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Хранить как обычный текст"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Хранить как секрет (шифруется при хранении)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Субагент"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Субагент не найден."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Результат субагента"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Субагенты"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Отправить"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Отправьте отзыв и одобрите слияние этих изменений."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Отправьте отзыв, который необходимо учесть перед слиянием."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Отправьте отзыв без явного одобрения."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Отправить проверку"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Под наблюдением"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Режим поддержки появляется после подключения сессии."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Поддержка:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Поменять местами заметки и задачи"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Переключить ветку"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Переключить режим"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Переключить режим: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Переключить проект"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Переключить этот чат в режим агента"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Переключить этот чат в режим плана"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Синхронизировать"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Синхронизировать (rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Синхронизировать ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Сбой синхронизации: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Параметры синхронизации"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Синхронизируется с Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Системная"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Системный браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Системное по умолчанию"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Сделать снимок экрана"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Целевая ветка"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Целевой провайдер"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Вывод задачи"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Укажите {0}, что делать дальше..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Укажите целевому провайдеру, что делать дальше..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Терминал"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Терминал для {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Ввод в терминал"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Терминал не готов — выбор добавлен в композер."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Размер шрифта панели терминала"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Положение терминала"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Скорость прокрутки терминала"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Вкладки терминала"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Проверить микрофон"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "агент"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "приложение"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "выбранная папка"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Обычная оболочка приложения не смогла отрендериться. Диагностика ниже "
+"показана перед перезагрузкой, чтобы проблему можно было исследовать."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "целевой провайдер"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Тема"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Размышление"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Этот агент не установлен."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "это окружение"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Этот файл слишком большой для встроенного редактора."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Этот файл использует неподдерживаемую кодировку."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Это безвозвратно удалит ветку \"{0}\" из её удалённого репозитория."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Это безвозвратно удалит ветку \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Это удаляет последующие сообщения и восстанавливает файлы, если "
+"доступен снимок контрольной точки."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Это удаляет worktree в \"{0}\" и закрывает {1, plural, one {# связанный "
+"тред} few {# связанных треда} many {# связанных тредов} other {# "
+"связанных треда}}, а затем удаляет ветку."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Это удаляет worktree в \"{0}\", а затем удаляет ветку."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Этот тред использует рабочее дерево <0>{0}0>. Также удалить каталог "
+"рабочего дерева?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "В этом worktree есть локальные изменения. Lightcode может временно "
+"спрятать их, получить изменения из {0}, а затем повторно применить ваши "
+"изменения."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Мысль"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Тред"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Тред + рабочее дерево"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Использование контекста треда"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Панель треда"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Не удалось запустить тред."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Тред завершён или ожидает вашего ввода."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Панель цели треда"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Тред уже выгружен."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Режим треда"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Только тред"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Порядок сортировки тредов"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Панель задач треда"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Треды"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Треды, помеченные как завершённые и не затронутые указанное число дней, "
+"автоматически архивируются при запуске приложения. Установите 0, чтобы "
+"отключить."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Генерация заголовков"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Задачи"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Переключить быстрый режим"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Отключите модели, чтобы скрыть их из селектора."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Переключить терминал"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Токены"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Токены от {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Поиск инструментов"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Всего запросов"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Всего использовано навыков"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Всего тредов"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Отслеживать использование {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Отслеживайте использование по каждому провайдеру за сессию, неделю и "
+"месяц. Временные окна сообщаются каждым провайдером; оценочная "
+"стоимость реконструируется из локальных логов."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Отслеживание выключено"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Транскрибирование голоса"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Полупрозрачная боковая панель"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Включайте или выключайте отслеживание для каждого провайдера. "
+"Отключённые провайдеры пропускаются при автообновлении."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Введите команду"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Не удалось аутентифицировать {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Не удалось создать каталог worktree WSL \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Не удалось установить хуки {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Не удалось установить {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Не удалось выйти из {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Не удалось открыть вход в {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Не удалось открыть файл"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Не удалось обновить статус {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Не удалось обновить {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Не удалось обновить профили Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Не удалось удалить учётные данные {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Не удалось удалить worktree."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Не удалось определить домашний каталог для дистрибутива WSL "
+"\"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Не удалось сохранить учётные данные {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Не удалось сохранить профиль Claude {displayLabel}."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Не удалось запустить {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Не удалось обновить {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Не удалось обновить {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Не удалось обновить хуки {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Не удалось обновить {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Не удалось обновить {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Не удалось обновить {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Разгруппировать все"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Единое представление"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Удалить"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Неизвестный проект"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Без ограничений"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Выгружать неактивные треды через"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Выгружать неактивные треды через (минут)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Выгрузить тред"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Снять отметку «готово»"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Снять отметку «готово»"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Без фазы:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Открепить"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Убрать из индекса"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Убрать всё из индекса"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "не в индексе"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Не поддерживается"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Обновить"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Обновить {0} до {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Доступно обновление"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Обновить ветку"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Ошибка обновления: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Способ обновления"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Обновить задачу"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Обновить до {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Обновить до {updateLabel} для {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Обновить до {updateLabel} для {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Обновить до v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Обновить до v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Обновить с коммитом слияния"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Обновить через rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Обновлено {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Обновление"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Обновление {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Обновление {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Использование"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Использование не поддерживается"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Настройки использования"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Использование неизвестно"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Использовать существующую папку"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Использовать конфигурацию"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Использовать обнаруженную сессию?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Использовать файлы ignore"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Использовать сессию"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Используйте эту учётную запись для отслеживания использования или "
+"смените пользователя в браузере перед продолжением."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Использовать ускорение WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Использовано"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Используется встроенный список моделей Claude."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "Доступна v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "значение"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Версия"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "через {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Просмотр"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Видимые модели {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Видимые модели"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Голосовой ввод недоступен в этой среде."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Язык голосового ввода"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Модель голосового ввода"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Подождите, пока тред завершит запуск."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Ожидание аутентификации {authMethodName} в {authEnv}. Обнаруженные "
+"агенты обновятся по завершении."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Ожидание аутентификации {authMethodName}. Обнаруженные агенты обновятся "
+"по завершении."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Ожидание аутентификации {methodName} в {env}. Обнаруженные агенты "
+"обновятся по завершении."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Ожидание аутентификации {methodName}. Обнаруженные агенты обновятся по "
+"завершении."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "ожидание остановки агента"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Ожидание создания агентов рабочим процессом…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Разбудить"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Разбудить через {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Разбудить через {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Разбудить: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Подготовка окружения оболочки…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Подготовка окружений оболочки..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Подготовка окружения оболочки WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Веб-поиск"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Веб-сайт"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Что по умолчанию делает кнопка создания PR: сначала открыть диалог для "
+"редактирования заголовка и описания или сгенерировать их автоматически "
+"и создать PR в один клик. Это также можно переключить из меню кнопки."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Если включено, поиск учитывает записи <0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Когда ссылки открываются во вкладке браузера Lightcode, выберите, где "
+"появляется браузер."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Когда выключено, подавлять уведомления от терминальных тредов, статус "
+"которых поступает из резервного механизма OSC (без плагина CLI-хуков)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Когда показывать всплывающие уведомления в приложении для видимых "
+"тредов."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "При закрытии окна оставлять Lightcode работать в системном трее. "
+"Отключите, чтобы выходить из приложения при закрытии."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Куда направляется выбор элемента браузера в терминальных тредах. "
+"Свёрнутое поле ввода всегда направляет его в терминал."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "С чего вы хотите начать?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Где появляется панель терминала."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Будет выполнено в {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows пока не поддерживается. Установите в WSL или на macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Работа"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Работать в текущем checkout"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Работал {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Рабочий процесс"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Рабочий процесс завершён. Дочерние агенты выполнялись в отдельном "
+"процессе и пока не транслируются здесь."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Рабочий процесс выполняется в фоне. Дочерние агенты выполняются в "
+"отдельном процессе и пока не транслируются здесь."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Фазы рабочего процесса"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Результаты рабочего процесса"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Рабочий процесс: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Рабочие процессы"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Работает"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Работает {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Рабочее дерево чистое"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Выполняется…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Worktree"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Worktree + изменения"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Режим worktree"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Worktree: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Worktrees"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Переносить строки"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Написать комментарий"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Написать комментарий…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Напишите заметки для этого проекта…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Ваше имя"
diff --git a/src/renderer/locales/tr/messages.po b/src/renderer/locales/tr/messages.po
new file mode 100644
index 00000000..8996393d
--- /dev/null
+++ b/src/renderer/locales/tr/messages.po
@@ -0,0 +1,6071 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: tr\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Taslak)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(mesaj yok)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# dosya} other {# dosya}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# sağlayıcı hazır} other {# sağlayıcı hazır}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {hedef} other {hedef}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# diğer sohbetler de aynı ağacı kullanır. Dosya geri "
+"yüklemesi değişikliklerin üzerine yazılabilir.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Yazım Alanı"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) zaten güncel."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) v{newVersion} sürümüne güncellendi."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) güncellendi."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} kimliği doğrulandı."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "{0} kimlik bilgileri kaldırıldı."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0} kimlik bilgileri kaydedildi."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} cihaz"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "{envName} için {0} kancaları kuruldu."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0} kancaları kuruldu."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "{0} kancaları {envName} için kaldırıldı."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} yükleme hedefi"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} zaten güncel."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0} sınırı"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} oturumu kapatıldı."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} kimlik doğrulaması gerektiriyor."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} istem - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} istem - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} çalıştırma"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} çalıştırma"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} jeton"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} token - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} v{1} sürümüne güncellendi."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} v{latestRegistryVersion} sürümüne güncellendi."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} v{newVersion} sürümüne güncellendi."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} v{resolvedLatest} sürümüne güncellendi."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} güncellendi."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} kullanıldı"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "%{0} Dolu"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0} ay önce"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Durum ayrıntıları için fareyle üzerine "
+"gelin."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} gün"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} gün"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days} gün önce"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} kimlik doğrulaması gerektiriyor."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} eşleşme"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} veya {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "{heading} modu"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "{hook} kancası başarısız oldu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours} saat önce"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# aracı hazır} other {# aracı hazır}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label} kullanımı — kullanım panelini aç"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel} bağlam"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes} dk önce"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} kimlik doğrulaması gerektiriyor."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Worktree temizliği de başarısız oldu: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "%{percent} dolu"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (devre dışı)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "{projectName} Ayarları"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# açık} other {# açık}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# sonuç} other {# sonuç}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds} sn önce"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} jeton"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} jeton"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} jeton"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} jeton"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{totalCount} öğeden {visibleCount} tanesi görünür"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Tüm hakları saklıdır."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "{0} kontrolden <0>{passed}0> tanesi başarılı oldu"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · tahmini"
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "sıfırlamaya kadar ≈%{0}"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "desteklenen bir kodlama aracısı"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Birleştirmeyi İptal Et"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "Hakkında"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Her İki Değişikliği de Kabul Et"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Mevcut Değişikliği Kabul Et"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Gelen Değişikliği Kabul Et"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Hesap"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Hesap seçenekleri"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Hesaplar"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "ACP Temsilcileri"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Eylem komutu"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Kenar çubuğundaki ileti dizilerindeki hızlı kaldırma düğmesi için "
+"eylem."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "İşlem adı"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Eylemler"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Aktif"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Etkinlik"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Etkinlik içgörüleri"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Etkinlik metriği"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Ekle"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Bir aracıyı yüklemeden önce bir proje ekleyin."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Oturum açmadan önce bir proje ekleyin."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Başlamak için bir proje ekleyin"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Yapılacak iş ekleyin…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "İşlem ekle"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Ek veya yetenek ekleyin"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Claude profili ekle"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Bu ileti dizisi çalışabilmesi için kimlik bilgilerini ekleyin."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Model ekle"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Desen ekle"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Profil ekle"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Proje ekle"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Proje Ekle"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Proje seçeneklerini ekle"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Uzak Depo Ekle"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Yazım alanına ekle"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Favorilere ekle"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Temsilci"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Temsilci ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Temsilci sohbeti (ACP / markdown). Komut satırları bu boyutu eksi "
+"1 piksel kullanır; araç ve plan satırları 2 piksel eksiğini kullanır."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Temsilci bir hatayla karşılaştı."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Temsilci aktif ve hazır"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Temsilci şu anda devre dışı"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Temsilci bulunamadı"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Temsilci Kaydı"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Temsilci terminali yazı tipi boyutu"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Temsilci güncellemesi mevcut"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Temsilci: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Temsilci: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Temsilciler"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Temsilciler · Genel"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "Yapay Zeka"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "AI aracı orkestratörü — kodlama aracılarını Terminal ve Yerel ACP "
+"aracılığıyla yönetin."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Yapay zeka git işlemleri"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Tüm hesaplar"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Tüm cihazlar"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Tüm efor düzeyleri"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Tüm dosyalar"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "İzin ver"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Aracıların çerezleri ve depolamayı okumasına/yazmasına izin ver"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Değerlendirmeye izin ver"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Her zaman"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Her zaman hariç tutuldu"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Başka bir sohbet de aynı ağacı kullanıyor. Dosya geri yükleme, "
+"sohbetteki değişikliklerin üzerine yazabilir."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Uygulama Tarayıcısı"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Görünüm"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Görünüm modu"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Sağlayıcı hazır ayarını uygula"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Onayınız veya yanıtınız isteniyor."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Onayla"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "onaylandı"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Onaylandı"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Arşiv"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Arşiv {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Tümünü Arşivle"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "İleti Dizisini Arşivle"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Arşivlenmiş İleti Dizileri"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "<0>{0}0> işlemini geri almak istediğinizden emin misiniz? Bu geri "
+"alınamaz."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "<0>{path}0> işlemini geri almak istediğinizden emin misiniz? Bu geri "
+"alınamaz."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Aşamalandırılmamış tüm değişiklikleri geri almak istediğinizden emin "
+"misiniz? Bu geri alınamaz."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "{0} öğesine bu çalışma alanıyla ilgili her şeyi sorun"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Her seferinde sor"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Soru Sor"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Ekle"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Dosya ekle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "İleti dizisine ekle"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Yapılacaklar panelini yazım alanına sabitle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Ekli tarayıcı seçimi."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Ses"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Kimlik doğrulama"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Kimlik doğrulama gerekli"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Otomatik"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Otomatik Onayla"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Tamamlanan ileti dizilerini şu süreden sonra otomatik olarak arşivle:"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Tamamlanan ileti dizilerini (gün) sonra otomatik olarak arşivle"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Otomatik oluştur"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Otomatik yenileme (dakika)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Dakika cinsinden otomatik yenileme aralığı, kapatmak için 0"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Otomatik inceleme"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Terminal panelini otomatik göster"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Komutları çalıştırırken veya çalışma ağaçları oluştururken terminal "
+"panelini otomatik olarak gösterin."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "mevcut"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Mevcut ACP Temsilcileri"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Avatar rengi"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Avatar rengi {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Geri"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Arka plan işleminden beklenmedik şekilde çıkıldı"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Arka plan işlemi çalışmıyor"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Arka plan işlemi yeniden başlatıldı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Arka plan görevleri"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Ana şube önde; önce şubenin güncellenmesi gerekiyor."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Aracı terminalleri için temel yazı tipi boyutu. Dar veya kısa "
+"bölmelerde otomatik olarak küçülür."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Terminal paneli için temel yazı tipi boyutu. Dar veya kısa bölmelerde "
+"otomatik olarak küçülür."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Bash çıkışı"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Temel (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Daha iyi (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Temsilciler çalışırken daha iyi durum güncellemeleri."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "İkili"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "İkili dosya — önizleme kullanılamıyor."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "İkili dosya veya fark yok"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "İkili dosyalar burada düzenlenemez."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "engellendi:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Kalın"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Alt"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "'{branch}' şubesinde '{path}'de kaydedilmemiş değişiklikler var — "
+"birleştirmeden önce bunları kaydedin veya saklayın"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "<0>{0}0> şubesinde birleştirilmemiş değişiklikler var:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Şube tam olarak birleştirilmedi"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Dal koruma kuralları bu birleştirmeyi engelledi."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Şubeler"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Ana klasöre göz atın"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "GitHub depolarınıza göz atın veya bir klon URL'si yapıştırın."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Tarayıcı"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Tarayıcı MCP'si"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "OpenCode için tarayıcı MCP'si etkinleştirildi"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Bu konu için Tarayıcı MCP'si etkinleştirildi"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Tarayıcı menüsü"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Tarayıcı seçim hedefi (CLI konuları)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "CLI konuları için tarayıcı seçim hedefi"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Bütçe sınırına ulaşıldı"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Fark oluşturuluyor…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "<0>{author}0> tarafından"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "isteme göre"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "token'a göre"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Dal koruma kurallarını atla"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Şube koruma kurallarını atla (yönetici birleştirme)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "İptal"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Yeni Claude profilini iptal et"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Bekleyen yönlendirmeyi iptal et"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Seçiciyi iptal et"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "iptal edildi"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Dal adı olmadan varsayılan çalışma ağacı yolu oluşturulamıyor"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Dallar değiştirilemiyor; önce değişikliklerinizi commit edin veya "
+"saklayın (stash)"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Kullanıcıyı Değiştir"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Değişiklik günlüğü"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Değişiklikler"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Değişiklikler ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "PR'deki değişiklikler"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Talep edilen değişiklikler"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Kanal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Sohbet"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Sohbet Komutları"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Kontrol et"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Güncellemeleri kontrol edin"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Seçilen cihazdan canlı giriş seviyesini kontrol edin."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Kontrol ediliyor…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Kontroller"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Bir klasör seçin…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "{env} için nasıl oturum açacağınızı seçin."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Nasıl oturum açılacağını seçin."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Lightcode'un arayüzü için görüntüleme dilini seçin."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Eklenecek konuyu seçin"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Lightcode ve tarayıcı açılır pencerelerindeki bağlantıların "
+"Lightcode'da mı kalacağını yoksa harici olarak mı açılacağını seçin."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Claude {0} profili kaydedildi."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Claude {displayName} profili eklendi."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Claude profili yapılandırma dizini"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Claude profil adı"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Claude profili kaldırıldı."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Temizleme komut dosyası"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Tarama Geçmişini Temizle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Önbelleği Temizle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Çerezleri Temizle"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Aramayı temizle"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "CLI kancaları"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Klonla"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Bir depo klonla"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "Klon URL'si"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "{cloneTarget} klonlanıyor"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Klonlanıyor…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Kapat"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "{purposeNoun} terminalini kapat"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Tarayıcıyı kapat"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Düzenleyiciyi kapat"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Düzenleyici Sekmesini Kapat"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Hedefi kapat"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Grubu kapat"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Bölmeyi kapat"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Bölmeyi Kapat"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Planı kapat"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "PR'yi kapat"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Önizlemeyi kapat"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Aramayı kapat"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Bölmeyi Kapat"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Alt aracıyı kapat"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Alt aracıları kapat"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Alt aracılar panelini kapat"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Sekmeyi kapat"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Tepsiye küçült"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Kullanım ayrıntılarını kapat"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Kapalı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Kod kopyalandı."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Daralt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "{label} daralt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Tümünü daralt"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Tümünü Daralt"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Tüm klasörleri daralt"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Yazma alanını daralt"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Hatayı daralt"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Terminal yazma alanını daralt"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Yapılacaklar panelini daralt"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Komut"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Komut (ör. npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Komutlar"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Yorum"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Yorum gönderildi"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "yorum yaptı"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Commit Et ve PR Oluştur"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Commit ve PR dili"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Commit Et ve Push'la"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Commit başarısız oldu: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Commit mesajı"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Commit mesajı (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Commit Mesajı Oluşturma"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Commit seçenekleri"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Commit'ler"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Bağlam sıkıştırılıyor"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Tamamlandı"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Bu konunun çalıştırılabilmesi için {0} oturum açma işlemini tamamlayın."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "{env} için {0} oturum açma işlemini tamamlayın."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "{0} oturum açma işlemini tamamlayın veya {1} kimlik bilgilerini "
+"kaydedin."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "{0} oturum açma işlemini tamamlayın."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Bu terminaldeki istemleri tamamlayın. Bittiğinde kapanır."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "tamamlandı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Yapılandırma dizini"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Çatışma Çözücü"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Çatışmalar"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Konsol"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Bağlam"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Bağlam sıkıştırılmış"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Bağlam {before} belirteçten sıkıştırıldı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Bağlam sıkıştırıldı: {before} → {after} belirteç"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Bağlam çıkarma ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Bağlam {before} belirteçten manuel olarak sıkıştırıldı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Bağlam manuel olarak sıkıştırıldı: {before} → {after} belirteç"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Bağlam {targetLabel} hedefine aktarıldı"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Bağlam kullanımı"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Devam et"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Başka bir sağlayıcıda devam et"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Şurada devam et..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "@file bahsetme aramasında hangi dosyaların görüneceğini kontrol edin. "
+"Projeye özel geçersiz kılmalar her projenin ayarlarında bulunur."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Konuşma"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Kopyalandı"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Panoya kopyalandı"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Kopyala"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "{0} cihaz kodunu kopyala {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Mevcut URL'yi Kopyala"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Ayrıntıları kopyala"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Tanılamayı kopyala"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Kopyalama başarısız oldu"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Yoksayılan dosyaları kopyala"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Görseli kopyala"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Mesajı kopyala"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Yolu Kopyala"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Göreli Yolu Kopyala"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Taahhüt edilmemiş değişiklikleri buraya kopyalayın (onları bu dalda "
+"tutar)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Birleştirme iptal edilemedi: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Birleştirme tamamlanamadı"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Bağlam çıkarılamadı."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Commit mesajı oluşturulamadı: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Dosya okunamadı."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Depo klonlanamadı."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Taahhüt edilmemiş değişiklikleriniz yeni çalışma ağacına kopyalanamadı; "
+"bunlar mevcut dalda kalıyor."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Proje oluşturulamadı."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Depolar listelenemedi."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Profil istatistikleriniz yüklenemedi."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Taslak PR Oluştur"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Dosya oluştur"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Yeni şube oluştur"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Yeni şube oluştur..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "PR oluştur"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "PR Oluştur (Otomatik)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "PR oluşturma eylemi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "PR oluştur…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Proje oluştur"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Çekme İsteği Oluştur"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Görev oluştur"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Oluştur:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "\"{newBranch}\" üzerinde bir çalışma ağacı oluşturuldu, ancak "
+"değişiklikler çakıştı ve bir git stash'inde kaldı; bunları çalışma "
+"ağacında çözün."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Kimlik bilgileri yapılandırıldı."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Krediler"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "güncel seri"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Güncel seri"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Özel"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Proje içerik menüsünden erişilebilen özel komutlar (sağ tıklama)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Karanlık"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Reddet"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Varsayılan"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Varsayılan PR Oluşturma eylemi"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Varsayılan yeni konu"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Varsayılan izinler"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Varsayılan konu kaldırma"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Sil"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "{0} sil"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Şube silinsin mi?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Dosyayı sil"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Kalıcı olarak sil"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Konuyu sil"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Konuyu Sil"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Konu silinsin mi?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Yapılacak işi sil"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Çalışma Ağacını Sil"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "{0} çalışma ağacını sil"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Sil:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Siliniyor"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Reddet"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Reddet ve aracıya neyi farklı yapması gerektiğini söyle…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Açıklama"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Açıklama (isteğe bağlı)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Algılandı <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "<0>(yerel)0> algılandı"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Algılandı <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Aracılar algılanıyor…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Geliştirici"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Yalnızca geliştirme amaçlı geçersiz kılmalar. Yalnızca LIGHTCODE DEV "
+"yapısında görünür."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Oluşturucu ses giriş düğmesi tarafından kullanılan cihaz."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Devre dışı bırak"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "{tierLabel} efor düzeyini devre dışı bırak"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Tarayıcı MCP'yi Devre Dışı Bırak"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "CLI kanca eklentisini devre dışı bırak (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Projeyi Devre Dışı Bırak"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Harici bir sağlayıcının birleştirdiği düzeyleri devre dışı bırakın (ör. "
+"yalnızca High ve Max'i tutun)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Devre dışı"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "{path} dosyasındaki kaydedilmemiş değişiklikler silinsin mi?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Kaydedilmemiş düzenleyici değişiklikleri silinsin mi?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Kodlama aracıları keşfediliyor…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Kapat"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Hatayı kapat"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "reddedilen inceleme"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Kenar çubuğunda görünen ad."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Dokümanlar"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Bir daha sorma"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Kanca yükleme teklifini gösterme"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "bitti"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Bitti"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Bitti · Girişinizi bekliyorum"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Görseli indir"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "“{0}” içine indiriliyor. Büyük depolar için bu biraz zaman alabilir."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Ses modeli indiriliyor {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Ses modeli indiriliyor..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "İndiriliyor{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "{versionLabel} indiriliyor"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Taslak"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Sağlayıcıların model seçicide nasıl görüneceğini yeniden sıralamak için "
+"sürükleyin."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Yeniden sıralamak için sürükleyin; düzenlemek için çift tıklayın"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Eklemek için buraya bırakın"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Aracıların kurulum veya iTerm2 bildirimlerine dokunmadan L2'ye (OSC 9;4 "
+"ilerlemesi) geri dönmesi için gelen kanca zarflarını denetleyicide "
+"bırakır (yok sayar). Bir sonraki kanca olayında etkili olur; yeniden "
+"başlatmaya gerek yoktur."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "örneğin İş"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Düzenle"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Dosyayı düzenle"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Profili düzenle"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Düzenle:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Editör"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "LSP Düzenleyicisi"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Düzenleyici sekmeleri"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Çaba ve bağlam"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Efor düzeyleri"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Etkinleştir"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "{tierLabel} efor düzeyini etkinleştir"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Tür denetimi, tamamlamalar ve tanılama için dil sunucusu desteğini "
+"etkinleştirin. Bir dil sunucusunun kurulu olmasını gerektirir."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Sistem ayarlarınızdan mikrofon erişimini etkinleştirin ve tekrar "
+"deneyin."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Bildirimleri etkinleştir"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Projeyi Etkinleştir"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Ayarlarda sağlayıcıları etkinleştirin"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Etkin"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "<0>Çerezler0>'i ve <1>depolamayı1> etkinleştirir. Çerezler oturum "
+"belirteçleri içerebilir ve depolama genellikle kimlik doğrulama "
+"durumunu tutar; yalnızca hem aracıya hem de onun ziyaret ettiği "
+"sitelere güvendiğinizde etkinleştirilir."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Geliştirilmiş (Kancalar)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Bir depo URL'si girin."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Plan moduna girin"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Ortam"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Ortam değişkeni adı"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Ortam değişkeni değeri"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Ortam değişkenleri"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "hata"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Hata"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Hata · Temsilci bir hatayla karşılaştı"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Kalıpları hariç tut"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Plan modundan çık"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "{0} koduyla çıkıldı. Yeniden denemek için kapatın."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Genişlet"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "{label} genişlet"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Tümünü genişlet"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Hatayı genişlet"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Yapılacaklar iskelesini genişlet"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Harici"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Harici sağlayıcı"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Ekstra Yüksek"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "{0} öğesinden bağlam çıkarılıyor..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "başarısız oldu"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Çekme isteği kapatılamadı: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Çekme isteği oluşturulamadı: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Profil istatistikleri yüklenemedi."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Çekme isteği birleştirilemedi: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Hızlı"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Hızlı mod"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "En hızlı (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "En hızlı, Whisper tiny modelini kullanır; Daha iyi, Whisper base "
+"modelini kullanır."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Favoriler"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Getir"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Dosya"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Dosya değişiklikleri burada görünecektir."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Dosya önizlenemeyecek kadar büyük."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Dosya artık diskte mevcut değil."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Görüntülenemeyecek kadar büyük dosya ({0, plural, one {# satır değişti} "
+"other {# satır değişti}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Dosya desteklenmeyen bir kodlama kullanıyor."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Dosyalar"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "{0} için dosyalar"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Bu glob'larla eşleşen dosyalar, @file bahsetme aramasında gizlenir."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "İncelemenizi tamamlayın"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Bitti"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Bitti · Girişinizi bekliyorum"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Lightcode'un yerel çalışma zamanını kullanan birinci sınıf Antigravity "
+"CLI entegrasyonu."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Lightcode'un yerel SDK çalışma zamanını kullanan birinci sınıf Claude "
+"Code entegrasyonu."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Lightcode'un yerel uygulama sunucusu çalışma zamanını kullanan birinci "
+"sınıf Codex CLI entegrasyonu."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Lightcode'un yerel çalışma zamanını kullanan birinci sınıf Command Code "
+"CLI entegrasyonu."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Lightcode'un yerel çalışma zamanını kullanan birinci sınıf Grok Build "
+"CLI entegrasyonu."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Lightcode'un yerel SDK çalışma zamanını kullanan birinci sınıf OpenCode "
+"entegrasyonu."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Aracıda Düzelt"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Klasör adı"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Silmeye Zorla"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Silmeye zorlansın mı? Birleştirilmeyen değişiklikler kaybolacak."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Dosyaları biçimlendir"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "İleri"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Oturum açılmış bir {0} oturumu bulundu."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Kenar çubuğunu, son macOS sürümlerini andıran sistem bulanıklık "
+"materyaliyle (vibrancy) buzlu cama dönüştürün. Desteklenmediğinde yarı "
+"saydam bir tona geri döner."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "{appearance} modundaki kenar çubuğunun sistem bulanıklığı üzerindeki "
+"buzlu cam yoğunluğu. Yüksek değer tema rengini korur; düşük değer "
+"arkadakini daha çok gösterir."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Tam erişim"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Tam ekran yer paylaşımı"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Genel"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Commit mesajı oluştur"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "PR özeti oluştur"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Yapay zeka ile oluşturun"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Oluşturulan görsel"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Hazırlanmış (staged) değişikliklerden commit mesajları oluşturur."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Yeni konular için kısa başlıklar oluşturur."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Görev al"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} başarısız oldu: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Git İncelemesi"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Git inceleme modu"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "{0} için Git durumu"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "{0} için Git durumu: Git deposu değil"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "GitHub Deposu"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Ana projeden her yeni çalışma ağacına kopyalanacak Git yok sayılan "
+"dosyalar. Gitignore tarzı desenler, her satıra bir tane (ör. "
+"<0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (isteğe bağlı etiket)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Hedef"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Belirlenen hedefler"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Grup"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Açık konuları gruplandır"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "GUI sohbet yazı tipi boyutu"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "kullanıcı adı"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Kullanıcı adı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Sert Yeniden Yükleme"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Gizli devam ettirilebilir konular her 5 dakikada bir taranır ve bu "
+"boşta kalma süresinden sonra bellekten kaldırılır."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Gizle"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Tümünü gizle"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Tarayıcıyı gizle"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Kanonik çalışma zamanı öğe denetçisini gizle"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Bağlam kullanım ayrıntılarını gizle"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Kullanmadığınız modelleri her sağlayıcıdaki model seçiciden gizleyin."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Paneli gizle"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Çalışma zamanı hata ayıklama panelini gizle"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Kenar çubuğunu gizle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Terminali gizle"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Ana sayfa"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Ana kapsam"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "Kimlik: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Boşta"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Resim"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Resim önizlemesi"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Etkin değil"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "miras alınan"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Genel ayar devralınıyor (şu anda {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Depoyu Başlat"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Giriş seviyesi"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Kanonik çalışma zamanı öğelerini incele"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "yükle"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Yükle"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "{env} için {0} yükleyin."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Bir konu oluşturmak için {0} yükleyin."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "{0} yükleyin."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "{env}'i yükleyin"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "CLI kancalarını yükle"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "WSL'ye yükleyin: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Önce yerel sağlayıcıları yükleyin; ek protokol aracıları için ACP'yi "
+"kullanın."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Windows'a yükleyin"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Paketleri yükle"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Güncellemeyi yükle"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "v{updateVersion} sürümünü yükle"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "v{version} sürümünü yükle"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Yüklendi"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Kuruluyor"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Bu terminale kuruluyor. Bittiğinde kapanır."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Kesintiye uğradı: Ajan oturumu tamamlanmadan sona erdi."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "italik"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "şimdi"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Şubeyi Koru"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Herhangi bir konu aktif olarak çalışırken sistemi uyanık tutun."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Bash'ı öldür"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Dil"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Yapay zeka tarafından oluşturulan commit mesajları ve çekme isteği "
+"özetleri için dil. İleti dizisi başlıkları her zaman uygulama dilini "
+"izler."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Yazma alanı diktesini yazıya dökerken konuşma modelinin beklemesi "
+"gereken dil."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Son araç: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Konuyu başlat"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Başlatılıyor…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Yorum bırak"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Az"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Aracıların, gömülü sayfa içinde rastgele JavaScript çalıştırması için "
+"<0>eval0> çağrısını yapmasına olanak tanır. Varsayılan olarak kapalı "
+"— yalnızca yüklü sitelere ve aracıya güvendiğinizde açın."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Lisans"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "toplam token"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Toplam token"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Açık"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Liste"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Paketleri listele"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Görevleri listele"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Yükleniyor"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Hesaplar yükleniyor…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Fark yükleniyor..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Düzenleyici yükleniyor…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Dosya yükleniyor…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Notlar yükleniyor…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "PR yükleniyor…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Kayıt defteri yükleniyor..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Yükleniyor…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "yerel"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Yerel"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "{branch}'dan çekilmeden önce yerel değişikliklerin saklanması gerekiyor"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Konum"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Oturum açılıyor"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Oturum kapatılıyor"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "giriş yapmak"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Giriş yapmak"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Giriş {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Giriş gerekli"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Oturumu kapat"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Oturumu kapat {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "en uzun seri"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "En uzun seri"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "En uzun görev"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Kenar çubuğunu yarı saydam yapın — Windows 11'de sistem bulanıklık "
+"materyali, diğerlerinde yarı saydam bir ton."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Manuel sıralama"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Tümünü Tamamlandı Olarak İşaretle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Tamamlandı olarak işaretle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Tamamlanmadı olarak işaretle"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Tamamlandı olarak işaretle"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Tamamlandı Olarak İşaretle"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Uygulama diliyle eşleştir"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Sisteminizle eşleştirin veya açık veya koyu olanı zorlayın."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Büyüt"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Tarayıcıyı büyüt"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "MCP sunucuları"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Birleştir ve Kaldır"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Birleştirme çakışmaları çözülmelidir."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Birleştirme başarısız oldu"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "Birleştirmede çakışmalar var"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "Birleştirmede çakışmalar var:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Yerel Olarak Birleştir ve Worktree'yi Kaldır"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Birleştirme yöntemi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Birleştirme seçenekleri"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "PR Birleştir: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "PR Birleştirme: Yeniden Temellendirme"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "PR Birleştirme: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Kaynağa Birleştir"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Worktree'yi Birleştir"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Birleştirilmiş"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Birleştirme engellendi"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Gönderilen mesajlar"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Mikrofon"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Mikrofon {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Mikrofon erişimi kapalı."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Mikrofon giriş seviyesi"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Mikrofon izni reddedildi."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Bu ortamda mikrofon testi yapılamaz."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Tarayıcıyı sağ panele küçült"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Panele küçült"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Mod"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "Model kimliği"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Model etiketi"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Model sırası"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Model kullanımı"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Modeller"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Modlar"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Çok"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Daha fazla onay seçeneği"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Daha fazla commit seçeneği"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Daha fazla PR eylemi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Daha fazla PR seçeneği"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Daha fazla çekme isteği seçeneği"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Daha fazla senkronizasyon seçeneği"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "En etkin saat"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "En çok kullanılan eklentiler"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "En çok kullanılan sağlayıcı"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "En çok kullanılan akıl yürütme"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Taşı"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Değişiklikleri yeni bir çalışma ağacına taşı"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Yapılacaklar panelini sağ panele taşı"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Değişiklikleriniz \"{newBranch}\" üzerindeki yeni bir çalışma ağacına "
+"taşındı. \"{currentBranch}\" artık temiz."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Değişiklikler taşınıyor…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Ad"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Projenize bir ad verin ve nerede oluşturulacağını seçin."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Yerel"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Yerel Sağlayıcılar"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Yerel destek"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Onay gerekiyor"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Dikkat Gerekiyor"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Dikkat Edilmesi Gerekiyor · Onay gerekiyor"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Dikkat Edilmesi Gerekiyor · Yanıt gerekli"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Yanıt gerekiyor"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Yeni eylem komutu"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Yeni işlem adı"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Yeni şube adı..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Yeni Claude profili yapılandırma dizini"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Yeni Claude profil adı"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Yeni Dosya"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Yeni Klasör"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Yeni proje"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Yeni sekme"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Yeni konu"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Yeni Konu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Yeni konu — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Yeni konu (taslak)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Bu yapılacaklardan yeni konu"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Worktree'de Yeni Konu"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Yeni çalışma ağacı"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Sonraki resim"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Etkin tarayıcı sekmesi yok"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Aktif oturum yok"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Henüz etkinlik yok."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Ek Claude profili yok."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "PR özeti oluşturacak temsilci yok"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "Bu aşamada hiçbir aracı yok."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Henüz hiçbir aracı yüklenmedi"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Hiçbir aracı yüklü değil."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Henüz yapay zeka commit'leri, PR'ları veya çakışma çözümleri izlenmedi."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Arşivlenmiş konu yok."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Şube bulunamadı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Tarayıcı sekmesi açık değil"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Değişiklik yok"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Görüntülenecek değişiklik yok"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Bu PR için herhangi bir kontrol raporlanmadı."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Hiçbir komut bulunamadı"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Hiçbir commit bulunamadı."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "İçerik akışı yok."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Henüz konuşma yok. İlk yorum yapan siz olun."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Henüz veri yok"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Henüz veri yok."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Açıklama yok"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "{0} için fark mevcut değil"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "{visiblePath} için fark yok"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Bu mesaj için hiçbir dosya kontrol noktası saklanmadı."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "\"{0}\" ile eşleşen dosya yok."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "GitHub CLI hesabı bulunamadı. <0>gh auth login0> ile oturum açın veya "
+"<1>bir klon URL'si yapıştırın1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "“{query}” için eşleşme yok."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Eşleşme yok."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Eşleşen temsilci yok."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Eşleşen konu yok"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Henüz MCP aracı kullanılmadı."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Henüz mesaj yok"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Mikrofon bulunamadı."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Hiçbir model bulunamadı"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Başka aracı yüklü değil"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Desen yok."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Henüz aşama yok."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "İstem yok"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Hiçbir sağlayıcı izlenmiyor."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Henüz hazır sağlayıcı yok"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Uzak ayarlanmamış. Push ve pull işlemlerini etkinleştirmek için bir "
+"uzak (remote) ekleyin."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Hiçbir depo bulunamadı."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Bu konu için henüz çalışma zamanı öğesi yok."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Henüz beceri kullanılmadı."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Konuşma algılanmadı."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Aşamalı değişiklik yok"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Henüz alt aracı kullanılmadı."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Desteklenen aracı algılanmadı"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Konu yok"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Henüz konuşma yok."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Hiçbir pencere bildirilmedi"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Çalışma ağacı yok"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Satır kaydırma yok"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Yok"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Git deposu değil"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Git deposu değil"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Bulunamadı"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Kurulu değil"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Çalışmıyor"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Oturum açılmadı"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Desteklenmiyor"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Notlar"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Henüz hiçbir şey izlenmedi. Kullandıkça burada görünecek."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Bildirimler"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "L2 CLI konuları için bildirim"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Beni bilgilendir"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "kapalı"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Daha eski"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "açık"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Yalnızca odaklanmadığında"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Açık"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "{label} öğesini aç"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Bir terminal aç"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Eklemek için önce bir konu açın."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Tümünü Aç"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Gruptakilerin tümünü aç"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Sayfa olarak aç"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Panel Olarak Aç"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Tarayıcıyı aç"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Kontrolü aç"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Komut Paletini Aç"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Commit'i GitHub'da aç"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Çakışma çözümleyiciyi şurada açın"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "İletişim kutusunu aç"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Dosyayı Aç"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Dosyaları Aç"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Tam ekranı aç"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Git panelini aç"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Git İncelemesini Aç"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Git incelemesini sağ taraftaki panel veya tam sayfa olarak açın."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Görsel önizlemesini aç"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Düzenleyicide aç"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Bağlantıları şurada aç:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Yeni sekme aç"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Yeni konuları tam sayfa veya yan yana panel olarak açın."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "PR #{0}'ı açın"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "PR'ı GitHub'da aç"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Önizlemeyi aç"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Proje Ayarlarını Aç"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "İstekleri aç"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Gerekli URL'yi aç"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Ayarları aç"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Ayarları Aç"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Alt aracıyı aç: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Çaba seçiciyi aç"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Model seçiciyi açın"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "{0} açıldı (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "İsteğe bağlı durum kancaları. Kurulu kancalar otomatik olarak "
+"güncellenir; eksik kancalar hiçbir zaman otomatik olarak kurulmaz."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Seçenekler"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Veya özel bir cevap yazın"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Sonuç"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Aşırı tempo — erken biter"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Claude varsayılanlarını geçersiz kılın — ör. ANTHROPIC_BASE_URL ve "
+"ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Bu proje için genel ayar geçersiz kılınıyor."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Paket yapılandırması"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Paket yöneticisi"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Sayfa"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Panel"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Yapıştır"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "<0>{0}0> öğesini buraya yapıştırın. Kopyalamak için tıklayın."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Girişe yapıştır"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Duraklatıldı"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "en yoğun gün"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "En yoğun gün"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "beklemede"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "inceleme bekleniyor"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Yönlendirme bekleniyor"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "izin"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Öğeyi seç"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Simge seç"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Seçici başarısız oldu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Seçici hiçbir ek döndürmedi"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "En üste sabitle"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Sabitlendi"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "Plan"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Bir bildirim gösterildiğinde ses çalın."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Bildirim sesini çal"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Bu profili özel ortam değişkenleri, model adları ve efor düzeyleriyle "
+"Anthropic dışı bir sağlayıcıya (z.ai, …) yönlendirin."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Lightcode'a uyarlanmış popüler editör temaları. Her biri yukarıdaki "
+"açık veya karanlık modunu takip eder."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "PR eylemleri"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "PR seçenekleri"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "PR İncelemesi"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "PR bölümleri"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "PR başlığı (otomatik oluşturmak için boş bırakın)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Pre-commit kancası başarısız oldu"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Hazır ayarlar"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Çalışırken uykuyu önleyin"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Önizleme {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Önceki resim"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Profil"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Profiller"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Proje"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Proje adı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Proje notları"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Proje Ayarları"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Genel arama ayarlarının yanı sıra projeye özel geçersiz kılmalar."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "İstem"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "İstemler"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Önerilen plan"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "sağlayıcı"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Sağlayıcı"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Sağlayıcı token kullanımını bildirmedi."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Sağlayıcı hazır ayarları"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "sağlayıcılar"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Sağlayıcılar"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Çek"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Çek ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Çek ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Çek ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Çekme tamamlanmadı. Yerel değişiklikleriniz bir Lightcode zulasında "
+"(stash) kalır."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Çekme başarısız oldu: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "{0}'dan çekilsin mi?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "{sourceBranch} ({sourceAhead}) kaynağından çek"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Kaynaktan Çek ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Rebase ile Çek ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Çekme isteği seçenekleri"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Push başarısız oldu: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Sorular"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Kotaya ulaşıldı"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "bitti"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Bitti · {resets} içinde sıfırlanıyor"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Hız sınırlı"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Hız sınırlı. Kısa süre sonra tekrar deneyin."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "Yerel değişikliklerin yeniden uygulanmasında çakışmalar var"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Yeniden giriş yap"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Hazır"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "İncelemeye Hazır"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Akıl yürütme"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Son"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Son konular"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Yerel günlüklerden genel API oranlarıyla yeniden oluşturulmuştur; "
+"abonelik planlarındaki gerçek faturanızı yansıtmaz. Yalnızca kullanım "
+"panelinde gösterilir."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Yenile"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "{0} kimlik doğrulamasını yenile"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Algılanan aracıları yenile"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Kayıt defterini yenile"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Arka planda kullanımı her N dakikada bir yenileyin. Kapatmak için 0'a "
+"ayarlayın (yalnızca manuel). 2 dakikalık alt sınır, sağlayıcının hız "
+"limitlerine uyar."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "{0} kimlik doğrulama durumu yenileniyor."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "{env} {0} kimlik doğrulama durumu yenileniyor."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Yeniden yükle"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Uzak"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Uzak ad"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "Uzak URL"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Kaldır"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "{0} öğesini kaldır"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "{0} öğesini panelden kaldırın"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "{pattern} öğesini kaldır"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Eylemi kaldır"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Claude profilini kaldır"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Ortam değişkenini kaldır"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Favorilerden kaldır"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Gruptan kaldır"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Panelden kaldır"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Modeli kaldır"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Projeyi Kaldır"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Çalışma ağacı kaldırılsın mı?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Yeniden adlandır"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Grubu Yeniden Adlandır"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Konuyu yeniden adlandır"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Oluşturucu çöktü"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Oluşturucu başlatma sırasında başarısız oldu"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Oluşturucu bir React hatasıyla karşılaştı"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Oluşturucu yakalanmamış bir hatayla karşılaştı"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Oluşturucu işlenmeyen bir promise reddiyle karşılaştı"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "{0} öğesini yeniden sırala"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "{label} öğesini yeniden sırala"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Sorun Bildir"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "depo"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Depo"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Depo ön alma kancası birleştirmeyi engelliyor."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "Depo URL'si"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Değişiklik iste"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Ayrıntıları talep et"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "talep edilen değişiklikler"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Gerekli incelemeler, görüşmeler veya durum kontrolleri karşılanmadı."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "sıfırlama"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Model sırasını sıfırla"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Kenar çubuğu buzlu cam efektini varsayılana sıfırla"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Varsayılana sıfırla"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Tarayıcı çekmecesini yeniden boyutlandır"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Sütunu yeniden boyutlandır"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Git panelini yeniden boyutlandır"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Notları ve yapılacak işleri yeniden boyutlandırın"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Satırı yeniden boyutlandır"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Kenar çubuğunu yeniden boyutlandır"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Bölmeyi yeniden boyutlandır"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Terminal panelini yeniden boyutlandır"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Yeniden temel alma veya birleştirme sırasındaki birleştirme "
+"çakışmalarını çözer."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Geri yükle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Tarayıcıyı geri yükle"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Konuyu geri yükle"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Yönetici ile tekrar dene"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Uygulamaya dön"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Dosya Gezgini'nde Göster"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Dosya ağacında göster"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Geri al"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Tümünü geri al"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Tüm değişiklikleri geri al"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Değişiklikleri geri al"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Kontrol noktasına geri dönülsün mü?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Bu kontrol noktasına geri dön"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Değişiklikleri İncele"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Yorumu incele"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Kararı inceleyin"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Talep üzerine inceleme"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "PR'ı incele"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "{0} için PR #{prNumber}'ı inceleyin"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Sağ"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Sağ panel"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Çalıştır"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "{0} komutunu çalıştırın"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Bu iş parçacığının çalıştırılabilmesi için önce {0} komutunu "
+"çalıştırın."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Oturum açmak için {loginCommand} komutunu çalıştırın."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Komutu çalıştır"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Ayrı bir çalışma ağacında çalıştır"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Mümkün olduğunda GPU'da yerel transkripsiyonu çalıştırın."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Terminal Komutunu Çalıştır"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "çalışıyor"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Bir çalışma ağacı kaldırılmadan önce çalışır (ör. <0>rm -rf "
+"node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Yeni bir çalışma ağacı oluşturulduktan sonra terminalde çalışır "
+"(örneğin, <0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Erken tükeniyor"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "{runOut} içinde biter"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Çalışma zamanı"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Çalışma zamanı hata ayıklaması"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Çalışma zamanı seçenekleri"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Kaydet"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "{0} kimlik bilgilerini kaydedin."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Claude profilini kaydet"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Dosyayı Kaydet"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Kaydedilen kimlik bilgileri tüm ortamlarda paylaşılır."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Yüklü CLI'ler için {wslDistro} taranıyor. Bu genellikle birkaç saniye "
+"sürer."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Yüklü CLI'ler için Windows ve WSL taranıyor. Bu genellikle birkaç "
+"saniye sürer."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Kurulu CLI'ler için sisteminiz taranıyor. Bu genellikle birkaç saniye "
+"sürer."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Komut dosyaları"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Terminal geri kaydırma arabelleği için kaydırma hızı çarpanı."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Aşağıya doğru kaydır"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Ara"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Aracıları ara"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Aracıları ara..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Şube ara..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Dosyaları arayın"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Modelleri ara"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Modelleri ara..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Adres arayın veya girin"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Depolarda ara"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Depolarda ara…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Çalışma zamanı öğelerini ara…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Konuları ara"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Konuları Ara"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Ara…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Aranıyor..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Aranıyor…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Daha fazlasını gör"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Seç"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Ağaçtan bir dosya seçin"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Düzenlemeye başlamak için bir dosya seçin."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Bir depo seçin."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Hesap seçin"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "İstemini ve sonucunu görmek için bir aracı seçin."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Şube seç"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Cihaz seç"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Modeli seçin"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Proje seçin"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Mesaj gönder..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Mesaj gönder"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Seçim terminale gönderildi."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Claude Code hesaplarını yapılandırma dizinine göre ayırın ya da bir "
+"profili harici bir sağlayıcıya (z.ai, …) yönlendirin. Ortam "
+"değişkenlerini, modellerini ve efor düzeyini yapılandırmak için bir "
+"profili açın."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Deneysel bir hedef belirleyin veya görüntüleyin"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Kurulum komut dosyası"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Paylaş"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Etkinliğinizi paylaşın"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Kenar çubuğunda sağlayıcı başına kompakt bir kullanım halkası gösterin."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "İşletim sistemi düzeyindeki aracı oturumları için projesiz bir Ana "
+"Sayfa kapsamı gösterin."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Tümünü göster"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Yer İşareti Çubuğunu Göster"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Kenar çubuğunda daireleri göster"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Composer'ı göster"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Bağlam kullanım ayrıntılarını göster"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Tahmini maliyeti göster"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Dosya gezgininde göster"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Daha az göster"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Daha fazlasını göster"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Bildirimleri göster"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Konu durumu değiştiğinde bildirimleri göster."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Açılan bağlantıları şurada göster:"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Önizlemeyi göster"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Çalışma zamanı hata ayıklama panelini göster"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Kenar çubuğunu göster"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Kaynağı göster"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Composer'da mikrofon düğmesini gösterin."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Ses girişi düğmesini göster"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Kenar çubuğu buzlu cam efekti"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Oturum aç"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Oturum açmanız gerekiyor"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Oturum açmanız gerekiyor"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Aracı CLI ile oturum açın."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "{label} oturumunu kapat"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Oturum açıldı"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Oturum açılıyor"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Oturum açılıyor…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "{env} oturumu kapatılıyor. Algılanan aracılar tamamlandığında "
+"yenilenecektir."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Çıkış yapılıyor. Algılanan aracılar tamamlandığında yenilenecektir."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Beceri: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Beceriler"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Keşfedilen beceriler"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Bazı kontroller başarısız oluyor veya beklemede."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Oluşturulana göre sırala"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Son güncellemeye göre sırala"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Konuları sırala"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Bölünmüş Terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Bölünmüş görünüm"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Hazırla"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Tümünü hazırla"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "hazırlanmış"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Hazırlanmış"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Hazırlanmış ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Başlat"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Kullanımı görmek için {appName} uygulamasını başlatın"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Seçilen metinden yeni bir konu başlatın"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Bu yapılacaklardan yeni bir konu başlatın"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Sıfırdan başla"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Composer'ı terminal-yerel iş parçacıklarında daraltılmış olarak "
+"başlatın. Daraltılmış bir composer, tarayıcı öğesi seçimlerini doğrudan "
+"terminale yönlendirir."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Ses girişini başlat"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Bağlam Olmadan Başlayın"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "{targetLabel} iş parçacığı başlatıldı"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Başlatılıyor"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Ses girişi başlatılıyor"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "başlıyor…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Sakla ve Çek"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Durum terminal çıkışından (L2) anlaşılır. Yapılandırılmış güncellemeler "
+"için ayarlara kanca eklentisini yükleyin."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Durum, aracı kontrol protokolü (ACP) tarafından sağlanır."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Durum güncellemeleri CLI hook eklentisinden gelir."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Durum:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Durdur"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Yanıtı durdur"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Görevi durdur"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Ses girişini durdur"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Düz metin olarak sakla"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Gizli olarak sakla (beklemede şifrelenir)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Alt aracı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Alt aracı bulunamadı."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Alt Aracı Sonucu"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Alt aracılar"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Gönder"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Geri bildirim gönderin ve bu değişikliklerin birleştirilmesini "
+"onaylayın."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Birleştirmeden önce ele alınması gereken geri bildirimleri gönderin."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Açık onay olmadan geri bildirim gönderin."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "İncelemeyi gönder"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Denetlenen"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Oturum bağlandığında destek modu görünür."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Destek:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Notları ve yapılacak işleri değiştir"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Şubeyi değiştir"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Mod değiştir"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Mod değiştir: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Projeyi değiştir"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Bu sohbeti temsilci moduna geçir"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Bu sohbeti plan moduna geçir"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Senkronizasyon"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Senkronizasyon (Yeniden Temelleme)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Senkronizasyon ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Senkronizasyon başarısız oldu: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Senkronizasyon seçenekleri"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Cloud ile senkronize olur"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Sistem"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Sistem Tarayıcısı"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Sistem varsayılanı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Ekran Görüntüsü Al"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Hedef şube"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Hedef sağlayıcı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Görev çıkışı"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "{0}'a bundan sonra ne yapacağını söyle..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Hedef sağlayıcıya bundan sonra ne yapacağını söyleyin..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "{0} için terminal"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Terminal girişi"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Terminal hazır değil — seçim Composer'a eklendi."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Terminal paneli yazı tipi boyutu"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Terminal konumu"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Terminal kaydırma hızı"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Terminal sekmeleri"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Mikrofonu test edin"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "aracı"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "uygulama"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "seçilen klasör"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Normal uygulama kabuğu oluşturulamadı. Arızanın araştırılabilmesi için "
+"aşağıdaki teşhisler yeniden yüklemeden önce gösterilir."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "hedef sağlayıcı"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Tema"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Düşünme"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Bu aracı yüklü değil."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "bu ortam"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Bu dosya yerleşik düzenleyici için çok büyük."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Bu dosya desteklenmeyen bir kodlama kullanıyor."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Bu, \"{0}\" dalını uzak deposundan kalıcı olarak siler."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Bu, \"{0}\" dalını kalıcı olarak siler."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Bu, daha sonraki mesajları kaldırır ve bir denetim noktası anlık "
+"görüntüsü mevcut olduğunda dosyaları geri yükler."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Bu, \"{0}\" üzerindeki çalışma ağacını kaldırır ve {1, plural, one {# "
+"bağlı konuyu} other {# bağlı konuyu}} kapatır, ardından dalı siler."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Bu, \"{0}\" üzerindeki çalışma ağacını kaldırır, ardından dalı siler."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Bu iş parçacığı <0>{0}0> çalışma ağacını kullanıyor. Ayrıca çalışma "
+"ağacı dizini de kaldırılsın mı?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "Bu çalışma ağacında yerel değişiklikler var. Lightcode bunları geçici "
+"olarak saklayabilir, {0} öğesinden çekebilir ve ardından "
+"değişikliklerinizi yeniden uygulayabilir."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Düşünce"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Konu"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Konu + Çalışma Ağacı"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Konu içeriği kullanımı"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Konu yuvası"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Konu başlatılamadı."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Konu bitti veya girişinizi bekliyor."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Konu hedefi yuvası"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Konu zaten kaldırıldı."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Konu modu"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Yalnızca Konu"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Konu sıralama düzeni"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Konu yapılacaklar yuvası"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Konular"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Bu kadar gün boyunca dokunulmayan ve tamamlandı olarak işaretlenen "
+"konular, uygulama başlatıldığında otomatik olarak arşivlenir. Devre "
+"dışı bırakmak için 0'a ayarlayın."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Başlık Oluşturma"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Yapılacaklar"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Hızlı modu aç/kapat"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Seçiciden gizlemek için modelleri kapatın."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Terminali Aç/Kapat"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Token"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "{0} kaynağından token"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Araç arama"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Toplam istem"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Kullanılan toplam beceri"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Toplam konuşma"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "{label} kullanımını takip edin"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Sağlayıcı başına oturum, haftalık ve aylık kullanımı izleyin. "
+"Pencereler her sağlayıcı tarafından raporlanır; tahmini maliyet yerel "
+"günlüklerden yeniden oluşturulur."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Takip kapalı"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Sesi yazıya dökme"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Yarı saydam kenar çubuğu"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Sağlayıcıya göre izlemeyi açın veya kapatın. Devre dışı bırakılan "
+"sağlayıcılar otomatik yenileme tarafından atlanır."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Bir komut yazın"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "{0} kimlik doğrulaması yapılamıyor."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "\"{path}\" WSL çalışma ağacı dizini oluşturulamıyor"
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "{0} kancaları yüklenemiyor."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "{0} yüklenemiyor."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "{0} oturumu kapatılamıyor."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "{0} oturum açma işlemi açılamıyor."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Dosya açılamıyor"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "{0} durumu yenilenemiyor."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "{0} yenilenemiyor."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Claude profilleri yenilenemiyor."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "{0} kimlik bilgileri kaldırılamıyor."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Çalışma ağacı kaldırılamıyor."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "\"{distro}\" WSL dağıtımı için giriş dizini çözümlenemiyor"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "{0} kimlik bilgileri kaydedilemiyor."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Claude {displayLabel} profili kaydedilemedi."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "{label} başlatılamıyor."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "{0} ({envName}) güncellenemiyor: {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "{0} ({envName}) güncellenemiyor."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "{0} kancaları güncellenemiyor."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "{0} güncellenemiyor: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "{0} güncellenemiyor: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "{0} güncellenemiyor."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Tüm grupları çöz"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Birleşik görünüm"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Kaldır"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Bilinmiyor"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Bilinmeyen proje"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Sınırsız"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Boşta kalan konuları şu süreden sonra kaldır"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Boşta kalan konuları şu süreden sonra kaldır (dakika)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Konuyu Kaldır"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Tamamlandı işaretini kaldır"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Bitti işaretini kaldır"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Aşamasız:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Sabitlemeyi kaldır"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Hazırlamayı geri al"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Tümünü hazırlamadan çıkar"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "hazırlanmamış"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Desteklenmiyor"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Güncelleme"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "{0} öğesini {updateLabel} olarak güncelleyin"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Güncelleme mevcut"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Şubeyi güncelle"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Güncelleme hatası: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Güncelleme yöntemi"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Görevi güncelle"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "{updateLabel} sürümüne güncelle"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "{0} için {updateLabel} güncellemesi"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "{0} ({env}) için {updateLabel} güncellemesi"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "v{0}'ye güncelleme"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "v{latestRegistryVersion}'ye güncelleme"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Birleştirme taahhüdüyle güncelleme"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Rebase ile güncelleme"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "{0} güncellendi"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Güncelleniyor"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "{0} güncelleniyor"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "{0} ({env}) güncelleniyor"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Kullanım"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Kullanım desteklenmiyor"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Kullanım ayarları"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Bilinmeyen kullanım"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Mevcut bir klasörü kullan"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Yapılandırmayı kullan"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Algılanan oturum kullanılsın mı?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Yoksayılan dosyaları kullan"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Oturumu Kullan"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Kullanım takibi için bu hesabı kullanın veya devam etmeden önce "
+"tarayıcıdaki kullanıcıları değiştirin."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "WebGPU hızlandırmasını kullanın"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Kullanılmış"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Yerleşik Claude model listesi kullanılıyor."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} mevcut"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "değer"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Sürüm"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "{0} aracılığıyla"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Görüntüle"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Görünür {0} modelleri"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Görünür modeller"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Bu ortamda ses girişi kullanılamaz."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Ses giriş dili"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Ses girişi modeli"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Konunun başlatılmasının bitmesini bekleyin."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "{authEnv} {authMethodName} kimlik doğrulaması bekleniyor. "
+"Tamamlandığında algılanan aracılar yenilenecektir."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "{authMethodName} kimlik doğrulaması bekleniyor. Tamamlandığında "
+"algılanan aracılar yenilenecektir."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "{env} {methodName} kimlik doğrulaması bekleniyor. Tamamlandığında "
+"algılanan aracılar yenilenecektir."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "{methodName} kimlik doğrulaması bekleniyor. Tamamlandığında algılanan "
+"aracılar yenilenecektir."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "aracının durması bekleniyor"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "İş akışının aracıları oluşturması bekleniyor…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Uyan"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "{interval} içinde uyan"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "{interval} içinde uyan: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Uyan: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Kabuk ortamı ısınıyor…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Kabuk ortamları ısınıyor..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "WSL kabuk ortamı ısınıyor…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Web araması"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Web sitesi"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "PR Oluştur düğmesinin varsayılan olarak yaptığı şey: Önce başlığı ve "
+"açıklamayı düzenlemek için bir iletişim kutusu açın veya bunları "
+"otomatik olarak oluşturun ve tek tıklamayla PR oluşturun. Bunu düğmenin "
+"menüsünden de değiştirebilirsiniz."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Etkinleştirildiğinde, arama <0>.gitignore0> girişlerine saygı duyar."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Bağlantılar Lightcode tarayıcı sekmesinde açıldığında, tarayıcının "
+"nerede görüntüleneceğini seçin."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Kapalıyken, durumu OSC yedeğinden alınan terminal konularının "
+"bildirimlerini gizleyin (CLI kanca eklentisi yok)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Görünür konular için uygulama içi bildirimlerin ne zaman "
+"görüntüleneceği."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Pencereyi kapattığınızda Lightcode'u sistem tepsisinde çalışır durumda "
+"tutun. Kapatınca çıkmak için devre dışı bırakın."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Tarayıcı öğe seçici seçiminin terminal yerel konularında nereye "
+"gittiği. Daraltılmış bir oluşturucu her zaman terminale yönlendirir."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Nereden başlamak istiyorsunuz?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Terminal panelinin göründüğü yer."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "{0} içinde çalışacak:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows henüz desteklenmiyor. WSL'nin içine veya macOS/Linux'a "
+"yükleyin."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "İş"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Mevcut çalışma kopyasında çalışın"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "{elapsed} boyunca çalıştı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "İş akışı"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "İş akışı tamamlandı. Alt aracılar ayrı bir süreçte çalıştırıldı ve "
+"henüz burada yayınlanmadı."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Arka planda iş akışı çalışıyor. Alt aracılar ayrı bir süreçte çalışır "
+"ve henüz burada yayınlanmaz."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "İş akışı aşamaları"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "İş akışı sonuçları"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "İş akışı: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "İş akışları"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Çalışıyor"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "{elapsed} boyunca çalışıyor"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Çalışma ağacı temiz"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Çalışıyor…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Çalışma Ağacı"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Çalışma ağacı + değişiklikler"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Çalışma ağacı modu"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Çalışma Ağacı: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Çalışma ağaçları"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Satırları kaydır"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Yorum yaz"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Bir yorum yazın…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Bu proje için notlar yazın…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Adınız"
diff --git a/src/renderer/locales/uk/messages.po b/src/renderer/locales/uk/messages.po
new file mode 100644
index 00000000..9fb238c2
--- /dev/null
+++ b/src/renderer/locales/uk/messages.po
@@ -0,0 +1,6065 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-15 03:02-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: uk\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Чернетка)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(немає повідомлення)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# файл} few {# файли} many {# файлів} other {# файлу}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# провайдер готовий} few {# провайдери готові} many {# "
+"провайдерів готові} other {# провайдера готові}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {ціль} few {цілі} many {цілей} other {цілі}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# інших чатів використовують це саме дерево. "
+"Відновлення файлів може перезаписати їхні зміни.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Composer"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Термінал"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) вже оновлено."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) оновлено до v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) оновлено."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} автентифіковано."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Облікові дані {0} видалено."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "Облікові дані {0} збережено."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "Пристроїв: {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "Хуки {0} встановлено для {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "Хуки {0} встановлено."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "Хуки {0} видалено для {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} цілей встановлення"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} вже оновлено."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "Ліміт {0}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} вийшов із системи."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} потребує автентифікації."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} запит - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} запитів - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} запуск"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} запусків"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} токенів"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} токенів - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} оновлено до v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} оновлено до v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} оновлено до v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} оновлено до v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} оновлено."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "{0} використано"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% заповнено"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0} міс. тому"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Наведіть для деталей статусу."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} день"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} днів"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days}д тому"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} потребує автентифікації."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "Збігів: {filteredCount} / {totalCount}"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head} або {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Режим {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "Збій хука {hook}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours}год тому"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# агент готовий} few {# агенти готові} "
+"many {# агентів готові} other {# агента готові}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "Використання {label} — відкрити панель використання"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "Контекст {maxLabel}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes}хв тому"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} потребує автентифікації."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Очищення worktree також завершилося з помилкою: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% заповнено"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (вимкнено)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Налаштування {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# відкрито} few {# відкрито} many {# відкрито} "
+"other {# відкрито}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# результат} few {# результати} many {# "
+"результатів} other {# результату}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds}с тому"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} токенів"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} токенів"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} токенів"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} токенів"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} із {totalCount} видимих"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Усі права захищено."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> із {0} перевірок пройдено"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · прибл."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% до скидання"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "підтримуваний агент кодування"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Перервати злиття"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "Про програму"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Прийняти обидві зміни"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Прийняти поточну зміну"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Прийняти вхідну зміну"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Обліковий запис"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Параметри облікового запису"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Облікові записи"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Агенти ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Команда дії"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Дія для кнопки швидкого видалення тредів на бічній панелі."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Назва дії"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Дії"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Активно"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Активність"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Аналітика активності"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Метрика активності"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Додати"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Додайте проєкт перед встановленням агента."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Додайте проєкт перед входом."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Додайте проєкт, щоб почати"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Додати завдання…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Додати дію"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Додати вкладення або можливість"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Додати профіль Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Додайте облікові дані, перш ніж цей тред зможе запуститися."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Додати модель"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Додати шаблон"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Додати профіль"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Додати проєкт"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Додати проєкт"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Параметри додавання проєкту"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Додати віддалений репозиторій"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Додати до Composer"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Додати до обраного"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Агент"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Агент ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Чат агента (ACP / markdown). Рядки команд використовують цей розмір "
+"мінус 1 px; рядки інструментів і планів — мінус 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Агент натрапив на помилку."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Агент активний і готовий"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Агент зараз вимкнено"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Агента не знайдено"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Реєстр агентів"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Розмір шрифту термінала агента"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Доступне оновлення агента"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Агент: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Агент: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Агенти"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Агенти · Загальні"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Оркестратор AI-агентів — керуйте агентами для кодування через термінал "
+"і нативний ACP."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Дії AI у git"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Усі облікові записи"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Усі пристрої"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Усі рівні зусиль"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Усі файли"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Дозволити"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Дозволити агентам читати/записувати файли cookie та сховище"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Дозволити eval"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Завжди"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Завжди виключено"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Інший чат використовує це саме дерево. Відновлення файлів може "
+"перезаписати зміни цього чату."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Браузер у програмі"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Зовнішній вигляд"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Режим зовнішнього вигляду"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Застосувати пресет провайдера"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Потрібне ваше підтвердження або відповідь."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Схвалити"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "схвалено"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Схвалено"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Архівувати"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Архівувати {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Архівувати все"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Архівувати тред"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Архівовані треди"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Ви впевнені, що хочете відкотити <0>{0}0>? Це неможливо скасувати."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Ви впевнені, що хочете відкотити <0>{path}0>? Це неможливо скасувати."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Ви впевнені, що хочете відкотити всі непроіндексовані зміни? Це "
+"неможливо скасувати."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Запитайте {0} про що завгодно в цьому робочому просторі"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Питати щоразу"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Поставити запитання"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Прикріпити"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Прикріпити файли"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Прикріпити до треду"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Прикріпити панель завдань до Composer"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Вибір у браузері прикріплено."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Звук"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Автентифікація"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Потрібна автентифікація"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Авто"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Автосхвалення"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Автоархівувати завершені треди через"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Автоархівувати завершені треди через (днів)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Генерувати автоматично"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Автооновлення (хвилин)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Інтервал автооновлення у хвилинах, 0 — вимкнути"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Автоперевірка"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Автоматично показувати панель термінала"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Автоматично показувати панель термінала під час виконання команд або "
+"створення робочих дерев."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "доступно"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Доступні агенти ACP"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Колір аватара"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Колір аватара {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Назад"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Фоновий процес несподівано завершився"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Фоновий процес не запущено"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Фоновий процес перезапущено"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Фонові завдання"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Базова гілка випереджає — спершу потрібно оновити гілку."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Базовий розмір шрифту для терміналів агента. Автоматично зменшується у "
+"вузьких або низьких панелях."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Базовий розмір шрифту для панелі термінала. Автоматично зменшується у "
+"вузьких або низьких панелях."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Вивід Bash"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Базовий (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Краще (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Кращі оновлення статусу під час роботи агентів."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Двійковий"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Двійковий файл — попередній перегляд недоступний."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Бінарний файл або diff недоступний"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Двійкові файли не можна редагувати тут."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "заблоковано:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Жирний"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Знизу"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "У гілці '{branch}' є незакомічені зміни в '{path}' — закомітьте їх або "
+"помістіть у stash перед злиттям"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "У гілці <0>{0}0> є незмерджені зміни:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Гілку не повністю змерджено"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Правила захисту гілки заблокували це злиття."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Гілки"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Вибрати батьківську папку"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Перегляньте свої репозиторії GitHub або вставте URL для клонування."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Браузер"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "Browser MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "Browser MCP увімкнено для OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Browser MCP увімкнено для цього треду"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Меню браузера"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Ціль вибору в браузері (треди CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Ціль вибору в браузері для тредів CLI"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Досягнуто ліміту бюджету"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Побудова diff…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "автор: <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "за запитами"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "за токенами"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Обійти правила захисту гілки"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Обійти правила захисту гілки (злиття адміністратором)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Скасувати новий профіль Claude"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Скасувати очікувану корекцію"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Скасувати вибір"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "скасовано"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Неможливо створити шлях worktree за замовчуванням без імені гілки"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Неможливо перемкнути гілки — спочатку закомітьте зміни або помістіть їх "
+"у stash"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Змінити користувача"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Список змін"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Зміни"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Зміни ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Зміни в PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Запитано зміни"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Канал"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Чат"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Команди чату"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Перевірити"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Перевірити наявність оновлень"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Перевірте поточний рівень вхідного сигналу з обраного пристрою."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Перевірка…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Перевірки"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Виберіть папку…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Виберіть спосіб входу для {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Виберіть спосіб входу."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Виберіть мову відображення інтерфейсу Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Виберіть тред для прикріплення"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Виберіть, чи посилання з Lightcode і спливні вікна браузера залишаються "
+"в Lightcode, чи відкриваються зовні."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Профіль Claude {0} збережено."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Профіль Claude {displayName} додано."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Каталог конфігурації профілю Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Ім'я профілю Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Профіль Claude видалено."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Скрипт очищення"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Очистити історію переглядів"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Очистити кеш"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Очистити cookies"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Очистити пошук"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Хуки CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Клонувати"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Клонувати репозиторій"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "URL для клонування"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Клонування {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Клонування…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Закрити"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Закрити термінал {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Закрити браузер"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Закрити редактор"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Закрити вкладку редактора"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Закрити ціль"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Закрити групу"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Закрити панель"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Закрити панель"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Закрити план"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Закрити PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Закрити попередній перегляд"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Закрити пошук"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Закрити розділення"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Закрити субагент"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Закрити субагенти"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Закрити панель субагентів"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Закрити вкладку"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Закривати в лоток"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Закрити деталі використання"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Закрито"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Код скопійовано. "
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Згорнути"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Згорнути {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Згорнути все"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Згорнути все"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Згорнути всі теки"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Згорнути Composer"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Згорнути помилку"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Згорнути поле вводу термінала"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Згорнути панель завдань"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Команда"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Команда (напр., npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Команди"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Коментар"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Коментар опубліковано"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "прокоментував"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Коміт"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Коміт і створити PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Мова комітів і PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Коміт і push"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Збій коміту: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Повідомлення коміту"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Повідомлення коміту (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Генерація повідомлення коміту"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Параметри коміту"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Коміти"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Стиснення контексту"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Завершено"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Завершіть вхід у {0}, перш ніж цей тред зможе запуститися."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Завершіть вхід у {0} для {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Завершіть вхід у {0} або збережіть облікові дані {1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Завершіть вхід у {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Виконайте підказки в цьому терміналі. Він закриється після завершення."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "завершено"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Поле вводу"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Каталог конфігурації"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Вирішення конфліктів"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Конфлікти"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Консоль"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Контекст"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Контекст стиснено"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Контекст стиснуто з {before} токенів"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Контекст стиснуто: {before} → {after} токенів"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Витягнення контексту ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Контекст вручну стиснуто з {before} токенів"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Контекст вручну стиснуто: {before} → {after} токенів"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Контекст передано до {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Використання контексту"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Продовжити"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Продовжити в іншому провайдері"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Продовжити в..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Керуйте тим, які файли з'являються у пошуку згадок @file. "
+"Перевизначення для окремих проєктів зберігаються в налаштуваннях "
+"кожного проєкту."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Розмова"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Скопійовано"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Скопійовано до буфера обміну"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Копіювати"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Копіювати код пристрою {0} {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Копіювати поточний URL"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Копіювати деталі"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Копіювати діагностику"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Не вдалося скопіювати"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Копіювати ігноровані файли"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Копіювати зображення"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Копіювати повідомлення"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Копіювати шлях"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Копіювати відносний шлях"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Копіювати незакомічені зміни сюди (залишає їх у цій гілці)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Не вдалося перервати злиття: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Не вдалося завершити злиття"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Не вдалося витягнути контекст."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Не вдалося згенерувати повідомлення коміту: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Не вдалося прочитати файл."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Не вдалося клонувати репозиторій."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Не вдалося скопіювати ваші незакомічені зміни в новий worktree — вони "
+"залишаються в поточній гілці."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Не вдалося створити проект."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Не вдалося отримати список репозиторіїв."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Не вдалося завантажити статистику профілю."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Створити чернетку PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Створити файл"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Створити нову гілку"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Створити нову гілку..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Створити PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Створити PR (авто)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Дія створення PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Створити PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Створити проект"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Створити pull request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Створити завдання"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Створити:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Worktree створено на \"{newBranch}\", але зміни спричинили конфлікт і "
+"залишаються в git stash — вирішіть їх у worktree."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Облікові дані налаштовано."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Кредити"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "поточна серія"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Поточна серія"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Користувацький"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Користувацькі команди доступні з контекстного меню проекту (правий "
+"клік)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Темна"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Відхилити"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "За замовчуванням"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Типова дія створення PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Типовий новий тред"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Дозволи за замовчуванням"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Типове видалення треду"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Видалити"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Видалити {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Видалити гілку?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Видалити файл"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Видалити назавжди"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Видалити тред"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Видалити тред"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Видалити тред?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Видалити завдання"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Видалити worktree"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Видалити worktree {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Видалити:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Видалення"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Заборонити"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Заборонити й сказати агенту, що зробити інакше…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Опис"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Опис (необов'язково)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Виявлено <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Виявлено <0>(local)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Виявлено <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Виявлення агентів…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Розробка"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Перевизначення лише для розробки. Видимі лише у збірці LIGHTCODE DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Пристрій, який використовує кнопка голосового вводу в полі вводу."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Вимкнути"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Вимкнути рівень зусиль {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Вимкнути Browser MCP"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Вимкнути плагін хука CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Вимкнути проект"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Вимкніть рівні, які зовнішній провайдер об'єднує (наприклад, залиште "
+"лише High і Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Вимкнено"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Скасувати незбережені зміни в {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Скасувати незбережені зміни в редакторі?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Пошук агентів для кодування…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Закрити"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Закрити помилку"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "перевірку відхилено"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Відображуване ім'я в бічній панелі."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Документація"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Не питати знову"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Не показувати пропозицію встановлення хука"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "готово"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Завершено"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Готово · Очікується ваш ввід"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Завантажити зображення"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Завантаження до «{0}». Для великих репозиторіїв це може зайняти деякий "
+"час."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Завантаження голосової моделі {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Завантаження голосової моделі..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Завантаження{v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Завантаження{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Чернетка"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Перетягніть, щоб змінити порядок відображення провайдерів у виборі "
+"моделі."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Перетягніть для зміни порядку; подвійний клік для редагування"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Перетягніть сюди, щоб прикріпити"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Відкидає вхідні конверти хуків на супервайзері, щоб агенти переходили "
+"на L2 (прогрес OSC 9;4) без впливу на встановлення чи сповіщення "
+"iTerm2. Набуває чинності під час наступної події хука — перезапуск не "
+"потрібен."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "напр. Робота"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Редагувати"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Змінити файл"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Редагувати профіль"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Змінити:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Редактор"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "LSP редактора"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Вкладки редактора"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Зусилля та контекст"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Рівні зусиль"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Увімкнути"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Увімкнути рівень зусиль {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Увімкнути підтримку мовного сервера для перевірки типів, автодоповнень "
+"і діагностики. Потрібен встановлений мовний сервер."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Увімкніть доступ до мікрофона в налаштуваннях системи та спробуйте ще "
+"раз."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Увімкнути сповіщення"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Увімкнути проєкт"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Увімкнути провайдерів у налаштуваннях"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Увімкнено"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Вмикає <0>файли cookie0> та <1>сховище1>. Файли cookie можуть "
+"містити сеансові токени, а сховище часто зберігає стан авторизації — "
+"вмикайте лише тоді, коли довіряєте і агенту, і сайтам, які він "
+"відвідує."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Розширений (Hooks)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Введіть URL репозиторію."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Увійти в режим плану"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Середовище"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Назва змінної середовища"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Значення змінної середовища"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Змінні середовища"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "помилка"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Помилка"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Помилка · Агент зіткнувся з помилкою"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Шаблони виключення"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Вийти з режиму плану"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Завершився з кодом {0}. Закрийте, щоб повторити."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Розгорнути"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Розгорнути {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Розгорнути все"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Розгорнути помилку"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Розгорнути панель завдань"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Зовнішній"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Зовнішній провайдер"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Дуже високий"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Видобування контексту з {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "не вдалося"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Не вдалося закрити pull request: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Не вдалося створити pull request: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Не вдалося завантажити статистику профілю."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Не вдалося виконати злиття pull request: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Швидкий"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Швидкий режим"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Найшвидше (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "Найшвидше використовує Whisper tiny; Краще використовує Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Вибране"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Отримати"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "Файл"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Зміни файлів з'являться тут."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Файл занадто великий для попереднього перегляду."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Файл більше не існує на диску."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Файл занадто великий для відображення ({0, plural, one {змінено # "
+"рядок} few {змінено # рядки} many {змінено # рядків} other {змінено # "
+"рядка}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Файл використовує непідтримуване кодування."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Файли"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Файли для {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Файли, що відповідають цим glob-шаблонам, приховані з пошуку згадок "
+"@file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Завершіть перевірку"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Завершено"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Завершено · Очікується ваш ввід"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Першокласна інтеграція Antigravity CLI з використанням нативного "
+"середовища виконання Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Першокласна інтеграція Claude Code з використанням нативного середовища "
+"виконання SDK Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Першокласна інтеграція Codex CLI з використанням нативного середовища "
+"виконання app-server Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Першокласна інтеграція Command Code CLI з використанням нативного "
+"середовища виконання Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Першокласна інтеграція Grok Build CLI з використанням нативного "
+"середовища виконання Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Першокласна інтеграція OpenCode з використанням нативного середовища "
+"виконання SDK Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Виправити в агенті"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Ім'я папки"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Примусово видалити"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Примусово видалити? Незлиті зміни буде втрачено."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Розгалуження"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Форматувати файли"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Вперед"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Знайдено сесію {0} з виконаним входом."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Зробіть бічну панель матовою за допомогою системного розмиття "
+"(vibrancy) у стилі сучасної macOS. Там, де це не підтримується, "
+"застосовується напівпрозоре тонування."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Матовість бічної панелі в режимі «{appearance}» поверх системного "
+"розмиття. Вище значення зберігає колір теми; нижче — більше показує те, "
+"що позаду."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Повний доступ"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Повноекранне накладання"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "Загальні"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Згенерувати повідомлення коміту"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Згенерувати зведення PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Згенерувати за допомогою AI"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Згенероване зображення"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Генерує повідомлення комітів із підготовлених змін."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Генерує короткі заголовки для нових тредів."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Отримати завдання"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Збій Git {command}: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Перевірка Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Режим перегляду Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Стан Git для {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Стан Git для {0}: не репозиторій Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Репозиторій GitHub"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Ігноровані Git файли для копіювання з основного проєкту до кожного "
+"нового worktree. Шаблони у стилі gitignore, по одному на рядок (напр., "
+"<0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (необов'язкова мітка)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Мета"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Встановлено цілей"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Група"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Групувати відкриті треди"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Розмір шрифту чату GUI"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "нік"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Нік"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Жорстке перезавантаження"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Приховані відновлювані треди перевіряються кожні 5 хвилин і "
+"вивантажуються після цього часу простою."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Сховати"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Сховати все"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Сховати браузер"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Сховати інспектор елементів канонічного середовища виконання"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Сховати деталі використання контексту"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Приховує моделі, які ви не використовуєте, з вибору моделі для всіх "
+"провайдерів."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Сховати панель"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Сховати панель налагодження середовища виконання"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Сховати бічну панель"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Сховати термінал"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Головна"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "Домашня область"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "ID: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Очікування"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Зображення"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Попередній перегляд зображення"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Неактивно"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "успадковано"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Успадковується глобальне налаштування (зараз {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Ініціалізувати репозиторій"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Рівень вхідного сигналу"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Перевірити канонічні елементи середовища виконання"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "встановлення"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "Встановити"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Встановити {0} для {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Встановити {0}, щоб створити тред."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Встановити {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Встановити {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Встановити хуки CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Встановити в WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Спершу встановіть нативні провайдери; використовуйте ACP для додаткових "
+"протокольних агентів."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Встановити у Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Встановити пакети"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Встановити оновлення"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Встановити v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Встановити v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Встановлено"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Встановлення"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Встановлення виконується в цьому терміналі. Він закриється після "
+"завершення."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Перервано: сесія агента завершилася до завершення."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Курсив"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "щойно"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Зберегти гілку"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Не давати системі засинати, поки будь-який тред активно працює."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Завершити bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Мова"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Мова для згенерованих ШІ повідомлень комітів і описів pull request. "
+"Заголовки тредів завжди використовують мову програми."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Мова, яку модель розпізнавання мовлення має очікувати під час "
+"транскрибування диктування в полі вводу."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Останній інструмент: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Запустити тред"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Запуск…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Залишити коментар"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Менше"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Дозволяє агентам викликати <0>eval0> для виконання довільного "
+"JavaScript усередині вбудованої сторінки. Вимкнено за замовчуванням — "
+"вмикайте лише тоді, коли довіряєте завантаженим сайтам і агенту."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Ліцензія"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "токенів за весь час"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Токенів за весь час"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Світла"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Список"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Список пакетів"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Список завдань"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Завантаження"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Завантаження облікових записів…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Завантаження різниці..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Завантаження редактора…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Завантаження файлу…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Завантаження нотаток…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Завантаження PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Завантаження реєстру..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Завантаження…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "локальний"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Локальний"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Перед виконанням pull з {branch} локальні зміни потрібно помістити у "
+"stash"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Розташування"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Вхід у систему"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Вихід із системи"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "вхід"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Увійти"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Увійти {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Потрібен вхід"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Вийти"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Вийти {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "найдовша серія"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Найдовша серія"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Найдовше завдання"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Зробіть бічну панель напівпрозорою — системне розмиття у Windows 11 і "
+"напівпрозоре тонування в інших системах."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Ручний порядок"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Позначити все як виконане"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Позначити як виконане"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Позначити як невиконане"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Позначити виконаним"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Позначити виконаним"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Як мова програми"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Підлаштовуватися під систему або примусово світла чи темна."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Розгорнути"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Розгорнути браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Сервери MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Злити та видалити"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Конфлікти злиття мають бути вирішені."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Збій злиття"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "У злитті є конфлікти"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "У злитті є конфлікти:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Злити локально та видалити worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Метод злиття"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Параметри злиття"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Злити PR: Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Злити PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Злити PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Злити в джерело"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Злити worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Злито"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Злиття заблоковано"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Надіслано повідомлень"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Мікрофон"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Мікрофон {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Доступ до мікрофона вимкнено."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Рівень вхідного сигналу мікрофона"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Доступ до мікрофона відхилено."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Перевірка мікрофона недоступна в цьому середовищі."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Згорнути браузер у праву панель"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Згорнути в панель"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Режим"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "Ідентифікатор моделі"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Мітка моделі"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Порядок моделей"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Використання моделей"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Моделі"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Режими"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Більше"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Більше параметрів схвалення"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Більше параметрів коміту"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Більше дій із PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Більше параметрів PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Більше параметрів pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Більше параметрів синхронізації"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Найактивніша година"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Найуживаніші плагіни"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Найуживаніший провайдер"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Найуживаніший рівень міркувань"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Перемістити"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Перемістити зміни в новий worktree"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Перемістити панель завдань у праву панель"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Ваші зміни переміщено в новий worktree на \"{newBranch}\". "
+"\"{currentBranch}\" тепер чистий."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Переміщення змін…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Ім'я"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Назвіть проєкт і виберіть, де його створити."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Нативний"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Нативні провайдери"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Нативна підтримка"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Потребує підтвердження"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Потребує уваги"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Потребує уваги · Потрібне схвалення"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Потребує уваги · Потрібна відповідь"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Потребує відповіді"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Нова команда дії"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Нова назва дії"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Назва нової гілки..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Новий каталог конфігурації профілю Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Нова назва профілю Claude"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Новий файл"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Нова папка"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Новий проєкт"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Нова вкладка"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Новий тред"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Новий тред"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Новий тред — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Новий тред (чернетка)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Новий тред із цієї задачі"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Новий тред у worktree"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Новий worktree"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Наступне зображення"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Немає активної вкладки браузера"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Немає активної сесії"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Активності ще немає."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Додаткових профілів Claude немає."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Немає доступного агента для генерації підсумку PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "У цій фазі немає агентів."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Агентів ще не встановлено"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Немає встановлених агентів."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Ще не відстежено жодних комітів, PR чи розв'язань конфліктів від AI."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Немає архівованих тредів."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Гілки не знайдено"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Немає відкритих вкладок браузера"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Немає змін"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Немає змін для відображення"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Для цього PR не повідомлено про перевірки."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Команд не знайдено"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Коміти не знайдено."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Немає потоків вмісту."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Розмови ще немає. Прокоментуйте першим."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Даних поки немає"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Даних ще немає."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Без опису"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Немає доступного diff для {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Немає diff для {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Для цього повідомлення не збережено контрольну точку файлів."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Немає файлів, що відповідають \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Облікові записи GitHub CLI не знайдено. Увійдіть за допомогою <0>gh "
+"auth login0> або <1>вставте URL для клонування1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Немає збігів для “{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Збігів немає."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Відповідних агентів немає."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Відповідних тредів немає"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Інструменти MCP ще не використовувалися."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Повідомлень поки немає"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Мікрофон не знайдено."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Моделі не знайдено"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Інших встановлених агентів немає"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Немає шаблонів."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Фаз поки немає."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Немає промптів"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Провайдери не відстежуються."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Готових провайдерів поки немає"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Віддалений репозиторій не налаштовано. Додайте віддалений репозиторій, "
+"щоб увімкнути push і pull."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Репозиторії не знайдено."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Для цього треду ще немає runtime-елементів."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Навички ще не використовувалися."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Мовлення не виявлено."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Немає підготовлених змін"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Субагенти ще не використовувалися."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Підтримуваних агентів не виявлено"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Немає тредів"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Гілок ще немає."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Вікна не повідомлені"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Немає worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Без перенесення"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Немає"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Не репозиторій git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Не репозиторій Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Не знайдено"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Не встановлено"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Не запущено"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Вхід не виконано"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Не підтримується"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Нотатки"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Ще нічого не відстежено. З'явиться тут у міру використання."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Сповіщення"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Сповіщати про треди CLI рівня L2"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Сповіщати мене про"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "вимк"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Старіші"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "увімк"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Лише коли немає фокусу"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Відкрити"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Відкрити {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Відкрити термінал"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Спершу відкрийте тред, щоб прикріпити до нього."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Відкрити все"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Відкрити все в групі"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Відкрити як сторінку"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Відкрити як панель"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Відкрити браузер"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Відкрити перевірку"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Відкрити палітру команд"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Відкрити коміт на GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Відкрити засіб розв'язання конфліктів у"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Відкрити діалог"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Відкрити файл"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Відкрити файли"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Відкрити на весь екран"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Відкрити панель Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Відкрити перегляд Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Відкривати перегляд Git як праву панель або повну сторінку."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Відкрити перегляд зображення"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Відкрити в редакторі"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Відкривати посилання в"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Відкрити нову вкладку"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Відкривати нові треди як повну сторінку або панель поруч."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Відкрити PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Відкрити PR на GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Відкрити перегляд"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Відкрити налаштування проєкту"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Відкриті запити"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Відкрити потрібний URL"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Відкрити налаштування"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Відкрити налаштування"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Відкрити субагента: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Відкрити вибір зусилля"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Відкрити вибір моделі"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Відкрито {0} (№{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Додаткові хуки статусу. Встановлені хуки оновлюються автоматично; "
+"відсутні хуки ніколи не встановлюються автоматично."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Параметри"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Або напишіть власну відповідь"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Результат"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Темп перевищено — закінчиться раніше"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Перевизначте типові налаштування Claude — наприклад, ANTHROPIC_BASE_URL "
+"і ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Перевизначення глобального налаштування для цього проєкту."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Конфігурація пакета"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Менеджер пакетів"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Сторінка"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "Панель"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Вставити"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Вставте <0>{0}0> сюди. Натисніть, щоб скопіювати."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Вставити в поле введення"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Призупинено"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "пік активності"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Пік активності"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "очікування"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "очікує перевірки"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Очікуване скерування"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "дозвіл"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Вибрати елемент"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Вибрати значок"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Помилка вибору"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Вибір не повернув вкладення"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Закріпити вгорі"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Закріплено"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "План"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Відтворювати звук, коли показується сповіщення."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Відтворювати звук сповіщення"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Спрямуйте цей профіль на провайдера, відмінного від Anthropic (z.ai, "
+"…), із власними змінними середовища, назвами моделей і рівнями зусиль."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Популярні теми редакторів, адаптовані для Lightcode. Кожна слідує за "
+"світлим чи темним режимом вище."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "Дії PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Параметри PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Перевірка PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "Розділи PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Заголовок PR (залиште порожнім для автоґенерації)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Збій хука pre-commit"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Пресети"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Запобігати засинанню під час роботи"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Попередній перегляд {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Попереднє зображення"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Профіль"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Профілі"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "Проєкт"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Назва проєкту"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "Нотатки проєкту"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Налаштування проєкту"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Перевизначення для конкретного проєкту поверх глобальних налаштувань "
+"пошуку."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Промпт"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Запити"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Запропонований план"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "провайдер"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "Провайдер"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Провайдер не повідомив про використання токенів."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Пресети провайдерів"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "провайдери"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Постачальники"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Pull ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Pull ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Pull ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Pull не завершено. Ваші локальні зміни залишилися в stash Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Збій pull: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Виконати pull з {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Pull з {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Pull з джерела ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Pull з rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Параметри pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Push ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Push ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Push ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Збій push: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Питання"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Квоту вичерпано"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Вичерпано"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Вичерпано · скидання через {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Перевищено ліміт запитів"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Перевищено ліміт запитів. Спробуйте ще раз невдовзі."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "Під час повторного застосування локальних змін виникли конфлікти"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Увійти знову"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Готово"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Готово до перевірки"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Міркування"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Нещодавні"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Нещодавні треди"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Відтворено з локальних журналів за публічними тарифами API — це не "
+"відображає ваш реальний рахунок за тарифними планами підписки. "
+"Показується лише на панелі використання."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Оновити"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Оновити автентифікацію {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Оновити виявлених агентів"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Оновити реєстр"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Оновлювати використання у фоні кожні N хвилин. Встановіть 0, щоб "
+"вимкнути (лише вручну). Нижня межа у 2 хвилини враховує обмеження "
+"частоти постачальника."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Оновлення статусу автентифікації {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Оновлення статусу автентифікації {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Перезавантажити"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Віддалений"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Назва віддаленого репозиторію"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "URL віддаленого репозиторію"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Видалити"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Видалити {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Видалити {0} з панелі"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Видалити {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Видалити дію"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Видалити профіль Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Видалити змінну середовища"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Видалити з обраного"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Видалити з групи"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Видалити з панелі"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Видалити модель"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Видалити проєкт"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Видалити worktree?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Перейменувати"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Перейменувати групу"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Перейменувати тред"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Рендерер аварійно завершився"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Рендерер не запустився"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Рендерер зіткнувся з помилкою React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Рендерер зіткнувся з неперехопленою помилкою"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Рендерер зіткнувся з необробленим відхиленням проміса"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Змінити порядок {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Змінити порядок {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Повідомити про проблему"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "репозиторій"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Репозиторій"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Хук pre-receive репозиторію блокує злиття."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "URL репозиторію"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Запросити зміни"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Деталі запиту"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "запитані зміни"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Не виконано обов'язкові рецензії, обговорення або перевірки стану."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "скидання"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Скинути порядок моделей"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Скинути матовість бічної панелі до типової"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Скинути до типового"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Змінити розмір панелі браузера"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Змінити розмір стовпця"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Змінити розмір панелі git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Змінити розмір нотаток і завдань"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Змінити розмір рядка"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Змінити розмір бічної панелі"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Змінити розмір розділення"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Змінити розмір панелі термінала"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Розв'язує конфлікти злиття під час rebase або злиття."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Відновити"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Відновити браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Відновити тред"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Повторити з правами адміністратора"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Повернутися до програми"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Показати в Провіднику"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Показати в дереві файлів"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Відкотити"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Відкотити все"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Відкотити всі зміни"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Відкотити зміни"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Відкотити до контрольної точки?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Відкотити до цієї контрольної точки"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Переглянути зміни"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Коментар до рев'ю"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Рішення щодо рев'ю"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Рев'ю за запитом"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Переглянути PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Переглянути PR #{prNumber} для {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Праворуч"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Права панель"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Запустити"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Запустити {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Запустіть {0}, перш ніж цей тред зможе виконатися."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Запустіть {loginCommand}, щоб увійти."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Виконати команду"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Запустити в окремому worktree"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Виконувати локальне транскрибування на GPU, коли це можливо."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Виконати команду терміналу"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "виконується"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Виконується перед видаленням worktree (наприклад, <0>rm -rf "
+"node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Виконується в терміналі після створення нового worktree (наприклад, "
+"<0>pnpm install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Закінчиться раніше"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Закінчиться через {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Середовище виконання"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Налагодження середовища виконання"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Параметри середовища виконання"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Зберегти"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Зберегти облікові дані {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Зберегти профіль Claude"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Зберегти файл"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Збережені облікові дані використовуються в усіх середовищах."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Сканування {wslDistro} на наявність встановлених CLI. Зазвичай це "
+"триває кілька секунд."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Сканування Windows та WSL на наявність встановлених CLI. Зазвичай це "
+"триває кілька секунд."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Сканування вашої системи на наявність встановлених CLI. Зазвичай це "
+"триває кілька секунд."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Скрипти"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Множник швидкості прокручування буфера прокрутки термінала."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Прокрутити вниз"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Пошук"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Пошук агентів"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Пошук агентів..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Пошук гілок..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Пошук файлів"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Пошук моделей"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Пошук моделей..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Пошук або введення адреси"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Пошук репозиторіїв"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Пошук репозиторіїв…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Пошук runtime-елементів…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Пошук тредів"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Пошук тредів"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Пошук…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Пошук..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Пошук…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Показати більше"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Вибрати"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Виберіть файл із дерева"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Виберіть файл, щоб почати редагування."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Виберіть репозиторій."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Вибрати акаунт"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Виберіть агента, щоб побачити його промпт і результат."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Вибрати гілку"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Вибрати пристрій"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Вибрати модель"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Вибрати проєкт"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Надіслати повідомлення..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Надіслати повідомлення"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Вибір надіслано в термінал."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Розділяйте облікові записи Claude Code за каталогом конфігурації або "
+"спрямовуйте профіль на зовнішнього провайдера (z.ai, …). Відкрийте "
+"профіль, щоб налаштувати його змінні середовища, моделі та рівень "
+"зусиль."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Задати або переглянути експериментальну ціль"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Налаштування"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Скрипт налаштування"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Поділитися"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Поділіться своєю активністю"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Показувати компактне кільце використання для кожного постачальника на "
+"бічній панелі."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Показувати домашню область без проєкту для сеансів агентів на рівні OS."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Показати все"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Показати панель закладок"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Показувати кола на бічній панелі"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Показати Composer"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Показати деталі використання контексту"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Показувати орієнтовну вартість"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Показати в провіднику файлів"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Показати менше"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Показати більше"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Показувати сповіщення"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Показувати сповіщення, коли змінюється статус треду."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Показувати відкриті посилання в"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Показати попередній перегляд"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Показати панель налагодження середовища виконання"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Показати бічну панель"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Показати джерело"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Показувати кнопку мікрофона в полі вводу."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Показувати кнопку голосового вводу"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Матовість бічної панелі"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Увійти"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Потрібен вхід"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Потрібен вхід"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Увійдіть через CLI агента."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Вийти {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Вхід виконано"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Виконується вхід"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Виконується вхід…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Вихід із {env}. Виявлені агенти оновляться після завершення."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Вихід. Виявлені агенти оновляться після завершення."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Навичка: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Навички"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Опрацьовано навичок"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Деякі перевірки не пройдені або очікують виконання."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Сортувати за датою створення"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Сортувати за останнім оновленням"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Сортувати треди"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Розділити термінал"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Розділений вигляд"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Індексувати"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Індексувати все"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "проіндексовано"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Підготовлено"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Підготовлено ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Почати"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Запустіть {appName}, щоб побачити використання"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Створити новий тред із виділеного тексту"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Створити новий тред із цього завдання"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Почати з нуля"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Запускати поле вводу згорнутим у нативних термінальних тредах. Згорнуте "
+"поле вводу спрямовує вибори елементів браузера прямо в термінал."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Почати голосове введення"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Запустити без контексту"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Тред {targetLabel} запущено"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Запуск"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Запуск голосового введення"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "запуск…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Сховати та отримати (pull)"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Статус визначається за виводом термінала (L2). Установіть плагін хуків "
+"у налаштуваннях для отримання структурованих оновлень."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Статус надається протоколом керування агентом (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Оновлення статусу надходять від плагіна хуків CLI."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Статус:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Зупинити"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Зупинити відповідь"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Зупинити завдання"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Зупинити голосове введення"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Зберігати як звичайний текст"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Зберігати як секрет (зашифровано на диску)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Субагент"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Субагент не знайдено."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Результат субагента"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Субагенти"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Надіслати"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Надішліть відгук і схваліть злиття цих змін."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Надішліть відгук, який потрібно врахувати перед злиттям."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Надішліть відгук без явного схвалення."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Надіслати рецензію"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Під наглядом"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Режим підтримки з'являється після підключення сесії."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Підтримка:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Поміняти місцями нотатки та завдання"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Перемкнути гілку"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Перемкнути режим"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Перемкнути режим: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Перемкнути проєкт"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Перемкнути цей чат у режим агента"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Перемкнути цей чат у режим плану"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Синхронізувати"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Синхронізувати (rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Синхронізувати ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Збій синхронізації: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Параметри синхронізації"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Синхронізується з Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Системна"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Системний браузер"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Системний за замовчуванням"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Зробити знімок екрана"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Цільова гілка"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Цільовий провайдер"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Вивід завдання"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Укажіть {0}, що робити далі..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Укажіть цільовому провайдеру, що робити далі..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Термінал"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Термінал для {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Ввід у термінал"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Термінал не готовий — вибір додано в композер."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Розмір шрифту панелі термінала"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Розташування термінала"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Швидкість прокручування термінала"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Вкладки термінала"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Перевірити мікрофон"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "агент"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "програму"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "обрана папка"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Звичайна оболонка програми не змогла відрендеритися. Діагностика нижче "
+"показана перед перезавантаженням, щоб проблему можна було дослідити."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "цільовий провайдер"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Тема"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Міркування"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Цей агент не встановлено."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "це середовище"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Цей файл занадто великий для вбудованого редактора."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Цей файл використовує непідтримуване кодування."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Це назавжди видалить гілку \"{0}\" з її віддаленого репозиторію."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Це назавжди видалить гілку \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Це видаляє наступні повідомлення та відновлює файли, якщо доступний "
+"знімок контрольної точки."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Це видаляє worktree у \"{0}\" і закриває {1, plural, one {# пов'язаний "
+"тред} few {# пов'язані треди} many {# пов'язаних тредів} other {# "
+"пов'язаного треда}}, а потім видаляє гілку."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Це видаляє worktree у \"{0}\", а потім видаляє гілку."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Цей тред використовує робоче дерево <0>{0}0>. Також видалити каталог "
+"робочого дерева?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "У цьому worktree є локальні зміни. Lightcode може тимчасово сховати їх, "
+"отримати зміни з {0}, а потім повторно застосувати ваші зміни."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Думка"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "Тред"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Тред + робоче дерево"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Використання контексту треда"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Панель треда"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Не вдалося запустити тред."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Тред завершено або він очікує на ваш ввід."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Панель мети треда"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Тред уже вивантажено."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Режим треда"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Лише тред"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Порядок сортування тредів"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Панель завдань треда"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "Треди"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Треди, позначені як завершені, до яких не торкалися стільки днів, "
+"автоматично архівуються під час запуску програми. Встановіть 0, щоб "
+"вимкнути."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Генерація заголовків"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Завдання"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Перемкнути швидкий режим"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Вимкніть моделі, щоб приховати їх із селектора."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Перемкнути термінал"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Токени"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Токени з {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Пошук інструментів"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Усього запитів"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Усього використано навичок"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Усього гілок"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Відстежувати використання {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Відстежуйте сеансове, тижневе та місячне використання для кожного "
+"постачальника. Періоди звітуються кожним постачальником; орієнтовна "
+"вартість відтворюється з локальних журналів."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Відстеження вимкнено"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Транскрибування голосу"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Напівпрозора бічна панель"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Вмикайте або вимикайте відстеження для кожного постачальника. Вимкнені "
+"постачальники пропускаються під час автооновлення."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Введіть команду"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Не вдалося автентифікувати {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Не вдалося створити каталог worktree WSL \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Не вдалося встановити хуки {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Не вдалося встановити {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Не вдалося вийти з {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Не вдалося відкрити вхід у {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Не вдалося відкрити файл"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Не вдалося оновити статус {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Не вдалося оновити {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Не вдалося оновити профілі Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Не вдалося видалити облікові дані {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Не вдалося видалити worktree."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Не вдалося визначити домашній каталог для дистрибутива WSL \"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Не вдалося зберегти облікові дані {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Не вдалося зберегти профіль Claude {displayLabel}."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Не вдалося запустити {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Не вдалося оновити {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Не вдалося оновити {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Не вдалося оновити хуки {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Не вдалося оновити {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Не вдалося оновити {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Не вдалося оновити {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Розгрупувати все"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Єдине подання"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Видалити"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Невідомо"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Невідомий проєкт"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Без обмежень"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Вивантажувати неактивні треди через"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Вивантажувати неактивні треди через (хвилин)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Вивантажити тред"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Зняти позначку «готово»"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Зняти позначку «готово»"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Без фази:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Відкріпити"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Прибрати з індексу"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Прибрати все з індексу"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "не в індексі"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Не підтримується"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "Оновити"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Оновити {0} до {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Доступне оновлення"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Оновити гілку"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Помилка оновлення: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Спосіб оновлення"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Оновити завдання"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Оновити до {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Оновити до {updateLabel} для {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Оновити до {updateLabel} для {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Оновити до v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Оновити до v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Оновити з комітом злиття"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Оновити через rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Оновлено {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Оновлення"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Оновлення {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Оновлення {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Використання"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Використання не підтримується"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Налаштування використання"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Використання невідоме"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Використати наявну папку"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Використати конфігурацію"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Використати виявлену сесію?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Використовувати файли ignore"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Використати сесію"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Використовуйте цей обліковий запис для відстеження використання або "
+"змініть користувача у браузері перед продовженням."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Використовувати прискорення WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Використано"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Використовується вбудований список моделей Claude."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "Доступна v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "значення"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Версія"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "через {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Перегляд"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Видимі моделі {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Видимі моделі"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Голосове введення недоступне в цьому середовищі."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Мова голосового вводу"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Модель голосового вводу"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Зачекайте, поки тред завершить запуск."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Очікування автентифікації {authMethodName} у {authEnv}. Виявлені агенти "
+"оновляться після завершення."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Очікування автентифікації {authMethodName}. Виявлені агенти оновляться "
+"після завершення."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Очікування автентифікації {methodName} у {env}. Виявлені агенти "
+"оновляться після завершення."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Очікування автентифікації {methodName}. Виявлені агенти оновляться "
+"після завершення."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "очікування зупинки агента"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Очікування створення агентів робочим процесом…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "Розбудити"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Розбудити через {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Розбудити через {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Розбудити: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Підготовка середовища оболонки…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Підготовка середовищ оболонки..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Підготовка середовища оболонки WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Веб-пошук"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Вебсайт"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Що робить кнопка створення PR за замовчуванням: спершу відкриває діалог "
+"для редагування заголовка та опису, або генерує їх автоматично та "
+"створює PR одним кліком. Це також можна перемкнути в меню кнопки."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Коли увімкнено, пошук враховує записи <0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Коли посилання відкриваються у вкладці браузера Lightcode, виберіть, де "
+"показується браузер."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Коли вимкнено, придушувати сповіщення від термінальних тредів, статус "
+"яких надходить із резервного механізму OSC (без плагіна хуків CLI)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Коли показувати спливні повідомлення в програмі для видимих тредів."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Коли ви закриваєте вікно, залишати Lightcode запущеним у системному "
+"лотку. Вимкніть, щоб завершувати роботу під час закриття."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Куди потрапляє вибір засобу вибору елементів браузера в нативних "
+"термінальних тредах. Згорнуте поле вводу завжди спрямовує в термінал."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "З чого ви хочете почати?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Де з'являється панель термінала."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Буде виконано в {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows поки не підтримується. Встановіть у WSL або на macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "Робота"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Працювати в поточному checkout"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Працював {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Робочий процес"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Робочий процес завершено. Дочірні агенти виконувалися в окремому "
+"процесі й поки не транслюються тут."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Робочий процес виконується у фоні. Дочірні агенти виконуються в "
+"окремому процесі й поки не транслюються тут."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Фази робочого процесу"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Результати робочого процесу"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Робочий процес: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Робочі процеси"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Працює"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Працює {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Робоче дерево чисте"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Виконується…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Worktree"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Worktree + зміни"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Режим worktree"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Worktree: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Worktrees"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Переносити рядки"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Написати коментар"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Написати коментар…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Напишіть нотатки для цього проекту…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Ваше ім'я"
diff --git a/src/renderer/locales/vi/messages.po b/src/renderer/locales/vi/messages.po
new file mode 100644
index 00000000..f548c8bc
--- /dev/null
+++ b/src/renderer/locales/vi/messages.po
@@ -0,0 +1,6060 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: vi\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(Bản nháp)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(không có tin nhắn)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# tập tin} other {# tập tin}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {# nhà cung cấp đã sẵn sàng} other {# nhà cung cấp đã "
+"sẵn sàng}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {mục tiêu} other {mục tiêu}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {# các cuộc trò chuyện khác sử dụng cùng một cây này. "
+"Khôi phục tập tin có thể ghi đè lên những thay đổi của họ.}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — Trình soạn thảo"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — Terminal"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0} ({envName}) đã được cập nhật."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0} ({envName}) đã cập nhật lên v{newVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0} ({envName}) đã cập nhật."
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0} đã được xác thực."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "Đã xóa thông tin đăng nhập của {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "Đã lưu thông tin đăng nhập của {0}."
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0} thiết bị"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "Đã cài đặt hook {0} cho {envName}."
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "Đã cài đặt hook {0}."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "Đã xóa hook {0} cho {envName}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0} mục tiêu cài đặt"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0} đã được cập nhật."
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "Giới hạn {0}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0} đã đăng xuất."
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0} cần xác thực."
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0} prompt - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0} prompt - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "{0} lần chạy"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "{0} lần chạy"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} mã thông báo"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0} tokens - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0} đã cập nhật lên v{1}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0} đã cập nhật lên v{latestRegistryVersion}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0} đã cập nhật lên v{newVersion}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0} đã cập nhật lên v{resolvedLatest}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0} đã cập nhật."
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "Đã dùng {0}"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% Đầy"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0} tháng trước"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}: {statusLabel}. Di chuột để biết chi tiết trạng thái."
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days} ngày"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days} ngày"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days} ngày trước"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel} cần xác thực."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount} / {totalCount} trùng khớp"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head}, hoặc {tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "Chế độ {heading}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "Hook {hook} không thành công"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours} giờ trước"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# tác nhân đã sẵn sàng} other {# tác nhân "
+"đã sẵn sàng}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "Mức sử dụng {label} — mở bảng sử dụng"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel} {0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel} {0} {env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel} {env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel} ngữ cảnh"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes} phút trước"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel} cần xác thực."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"Việc dọn dẹp Worktree cũng không thành công: {cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% đầy"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation} (bị vô hiệu hóa)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "Cài đặt {projectName}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {# mở} other {# mở}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {# kết quả} other {# kết quả}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds} giây trước"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} mã thông báo"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} mã thông báo"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel} / {maxLabel} mã thông báo"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} mã thông báo"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{visibleCount} trong số {totalCount} hiển thị"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "© {currentYear} Serhii Vecherenko. Mọi quyền được bảo lưu."
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "<0>{passed}0> trong số {0} kiểm tra đã được thông qua"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · ước tính."
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% khi đặt lại"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "một tác nhân mã hóa được hỗ trợ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "Hủy bỏ hợp nhất"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "Giới thiệu"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "Chấp nhận cả hai thay đổi"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "Chấp nhận thay đổi hiện tại"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "Chấp nhận thay đổi đến"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "Tài khoản"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "Tùy chọn tài khoản"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "Tài khoản"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "Tác nhân ACP"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "Lệnh hành động"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "Hành động dành cho nút loại bỏ nhanh trên các chuỗi thanh bên."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "Tên hành động"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "Hành động"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "Đang hoạt động"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "Hoạt động"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "Phân tích hoạt động"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "Chỉ số hoạt động"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "Thêm vào"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "Thêm một dự án trước khi cài đặt một tác nhân."
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "Thêm một dự án trước khi đăng nhập."
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "Thêm một dự án để bắt đầu"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "Thêm việc cần làm…"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "Thêm hành động"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "Thêm tệp đính kèm hoặc khả năng"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "Thêm hồ sơ Claude"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "Thêm thông tin xác thực trước khi chuỗi này có thể chạy."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "Thêm mô hình"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "Thêm mẫu"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "Thêm hồ sơ"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "Thêm dự án"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "Thêm dự án"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "Thêm tùy chọn dự án"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "Thêm remote"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "Thêm vào trình soạn thảo"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "Thêm vào mục yêu thích"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "Tác nhân"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "Tác nhân ({subagent}): {description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "Trò chuyện tác nhân (ACP / markdown). Các hàng lệnh dùng kích thước này "
+"trừ 1 px; dòng công cụ và dòng kế hoạch trừ 2 px."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "Tác nhân đã gặp lỗi."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "Tác nhân đang hoạt động và sẵn sàng"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "Tác nhân hiện đang bị vô hiệu hóa"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "Không tìm thấy tác nhân"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "Sổ đăng ký tác nhân"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "Kích thước phông chữ terminal của tác nhân"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "Đã có bản cập nhật tác nhân"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "Tác nhân: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "Tác nhân: {subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "Tác nhân"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "Tác nhân · Chung"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "Trình điều phối tác nhân AI - quản lý các tác nhân mã hóa thông qua "
+"Terminal và Native ACP."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "Thao tác git bằng AI"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "Tất cả tài khoản"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "Tất cả thiết bị"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "Tất cả mức nỗ lực"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "Tất cả các tập tin"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "Cho phép"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "Cho phép tác nhân đọc/ghi cookie và bộ nhớ lưu trữ"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "Cho phép eval"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "Luôn luôn"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "Luôn bị loại trừ"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "Một cuộc trò chuyện khác cũng sử dụng cây này. Khôi phục tệp có thể ghi "
+"đè lên các thay đổi của cuộc trò chuyện đó."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "Trình duyệt ứng dụng"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "Giao diện"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "Chế độ giao diện"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "Áp dụng cấu hình nhà cung cấp"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "Cần có sự phê duyệt hoặc trả lời từ bạn."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "Phê duyệt"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "đã được phê duyệt"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "Đã được phê duyệt"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "Lưu trữ"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "Lưu trữ {0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "Lưu trữ tất cả"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "Lưu trữ luồng"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "Luồng đã lưu trữ"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "Bạn có chắc chắn muốn hoàn nguyên <0>{0}0> không? Điều này không thể "
+"hoàn tác được."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "Bạn có chắc chắn muốn hoàn nguyên <0>{path}0> không? Điều này không "
+"thể hoàn tác được."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "Bạn có chắc chắn muốn hoàn nguyên tất cả các thay đổi chưa được đưa vào "
+"stage không? Điều này không thể hoàn tác được."
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "Hỏi {0} bất cứ điều gì về không gian làm việc này"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "Hỏi mỗi lần"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "Đặt câu hỏi"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "Đính kèm"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "Đính kèm tập tin"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "Gắn vào chủ đề"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "Gắn dock todo vào trình soạn thảo"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "Lựa chọn trình duyệt đính kèm."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "Âm thanh"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "Xác thực"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "Yêu cầu xác thực"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "Tự động"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "Tự động phê duyệt"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "Tự động lưu trữ các chủ đề đã hoàn thành sau"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "Tự động lưu trữ các chủ đề đã hoàn thành sau (ngày)"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "Tự động tạo"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "Tự động làm mới (phút)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "Khoảng thời gian tự động làm mới tính bằng phút, 0 để tắt"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "Tự động xem xét"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "Tự động hiển thị bảng điều khiển thiết bị đầu cuối"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "Tự động hiển thị bảng terminal khi chạy lệnh hoặc tạo cây làm việc."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "có sẵn"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "Tác nhân ACP có sẵn"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "Màu ảnh đại diện"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "Màu ảnh đại diện {color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "Quay lại"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "Tiến trình nền đã thoát bất ngờ"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "Tiến trình nền không chạy"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "Tiến trình nền đã được khởi động lại"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "Tác vụ nền"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "Nhánh cơ sở ở phía trước - nhánh phải được cập nhật trước."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Kích thước phông chữ cơ sở cho thiết bị đầu cuối của tác nhân. Tự động "
+"thu nhỏ trong các ô hẹp hoặc ngắn."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "Kích thước phông chữ cơ bản cho bảng điều khiển thiết bị đầu cuối. Tự "
+"động thu nhỏ trong các ô hẹp hoặc ngắn."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "Đầu ra Bash"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "Cơ bản (CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "Tốt hơn (Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "Cập nhật trạng thái tốt hơn trong khi tác nhân chạy."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "Nhị phân"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "Tệp nhị phân - không có bản xem trước."
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "Tệp nhị phân hoặc không có khác biệt"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "Không thể chỉnh sửa tệp nhị phân ở đây."
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "bị chặn:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "Đậm"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "Dưới cùng"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "Nhánh '{branch}' có những thay đổi chưa được cam kết trong '{path}' — "
+"cam kết hoặc lưu trữ chúng trước khi hợp nhất"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "Nhánh <0>{0}0> có các thay đổi chưa được hợp nhất:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "Nhánh chưa được hợp nhất hoàn toàn"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "Quy tắc bảo vệ nhánh đã chặn lần hợp nhất này."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "Nhánh"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "Duyệt tìm thư mục mẹ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "Duyệt qua kho GitHub của bạn hoặc dán URL nhân bản."
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "Trình duyệt"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "MCP trình duyệt"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "MCP trình duyệt được bật cho OpenCode"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "Đã bật MCP trình duyệt cho chủ đề này"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "Trình đơn trình duyệt"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "Mục tiêu chọn trình duyệt (chủ đề CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "Mục tiêu chọn trình duyệt cho các chủ đề CLI"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "Đã đạt đến giới hạn ngân sách"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "Đang dựng diff…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "bởi <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "theo prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "theo tokens"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "Bỏ qua các quy tắc bảo vệ nhánh"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "Bỏ qua các quy tắc bảo vệ nhánh (hợp nhất với quyền quản trị)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "Hủy bỏ"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "Hủy tạo hồ sơ Claude mới"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "Hủy chỉ đạo đang chờ xử lý"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "Hủy bộ chọn"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "đã hủy"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "Không thể tạo đường dẫn cây làm việc mặc định mà không có tên nhánh"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "Không thể chuyển nhánh — trước tiên hãy commit hoặc stash các thay đổi "
+"của bạn"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "Thay đổi người dùng"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "Nhật ký thay đổi"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "Thay đổi"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "Thay đổi ({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "Những thay đổi trong PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "Đã yêu cầu thay đổi"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "Kênh"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "Trò chuyện"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "Lệnh trò chuyện"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "Kiểm tra"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "Kiểm tra các bản cập nhật"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "Kiểm tra mức đầu vào trực tiếp từ thiết bị đã chọn."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "Đang kiểm tra…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "Kiểm tra"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "Chọn một thư mục…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "Chọn cách đăng nhập cho {env}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "Chọn cách đăng nhập."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "Chọn ngôn ngữ hiển thị cho giao diện của Lightcode."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "Chọn chủ đề để đính kèm"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "Chọn xem các liên kết từ Lightcode và cửa sổ bật lên của trình duyệt "
+"vẫn ở trong Lightcode hay mở bên ngoài."
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Đã lưu hồ sơ Claude {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "Đã thêm hồ sơ Claude {displayName}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Thư mục cấu hình hồ sơ Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Tên hồ sơ Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Hồ sơ Claude đã bị xóa."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "Tập lệnh dọn dẹp"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "Xóa lịch sử duyệt web"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "Xóa bộ nhớ đệm"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "Xóa cookie"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "Xóa tìm kiếm"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "Hook CLI"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "Nhân bản"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "Sao chép một kho lưu trữ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "URL nhân bản"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "Đang nhân bản {cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "Nhân bản…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "Đóng"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "Đóng terminal {purposeNoun}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "Đóng trình duyệt"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "Đóng trình chỉnh sửa"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "Đóng tab trình chỉnh sửa"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "Đóng mục tiêu"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "Đóng nhóm"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "Đóng ngăn"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "Đóng ngăn"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "Đóng kế hoạch"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "Đóng PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "Đóng bản xem trước"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "Đóng tìm kiếm"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "Đóng Chia tách"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "Đóng tác nhân phụ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "Đóng các tác nhân phụ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "Đóng bảng tác nhân phụ"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "Đóng tab"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "Thu nhỏ vào khay"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "Đóng chi tiết sử dụng"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "Đã đóng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "Đã sao chép mã."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "Thu gọn"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "Thu gọn {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "Thu gọn tất cả"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "Thu gọn tất cả"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "Thu gọn tất cả các thư mục"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "Thu gọn trình soạn thảo"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "Thu gọn lỗi"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "Thu gọn trình soạn thảo thiết bị đầu cuối"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "Thu gọn thanh việc cần làm"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "Lệnh"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "Lệnh (ví dụ: npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "Lệnh"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "Bình luận"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "Bình luận đã đăng"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "đã bình luận"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "Commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "Cam kết & Tạo PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "Ngôn ngữ commit & PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "Cam kết & Đẩy"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "Commit không thành công: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "Thông báo commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "Thông báo cam kết (Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "Tạo thông báo commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "Tùy chọn cam kết"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "Cam kết"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "Đang nén ngữ cảnh"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "Hoàn thành"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "Hoàn tất đăng nhập {0} trước khi chủ đề này có thể chạy."
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "Hoàn tất đăng nhập {0} cho {env}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "Hoàn tất đăng nhập {0} hoặc lưu thông tin xác thực {1}."
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "Hoàn tất đăng nhập {0}."
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "Hoàn thành các lời nhắc trong thiết bị đầu cuối này. Đóng lại khi hoàn "
+"thành."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "hoàn thành"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "Thư mục cấu hình"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "Giải quyết xung đột"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "Xung đột"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "Console"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "Ngữ cảnh"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "Ngữ cảnh được nén"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "Ngữ cảnh được nén từ {before} token"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "Ngữ cảnh được nén: {before} → {after} token"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "Trích xuất ngữ cảnh ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "Ngữ cảnh được nén thủ công từ {before} token"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "Ngữ cảnh được nén thủ công: {before} → {after} token"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "Ngữ cảnh được chuyển sang {targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "Sử dụng ngữ cảnh"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "Tiếp tục"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "Tiếp tục ở nhà cung cấp khác"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "Tiếp tục trong..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "Kiểm soát những tập tin nào xuất hiện trong tìm kiếm đề cập đến @file. "
+"Ghi đè cho mỗi dự án trực tiếp trong cài đặt của từng dự án."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "Cuộc trò chuyện"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "Đã sao chép"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "Đã sao chép vào bộ nhớ tạm"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "Sao chép"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "Sao chép {0} mã thiết bị {1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "Sao chép URL hiện tại"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "Sao chép chi tiết"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "Sao chép chẩn đoán"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "Sao chép không thành công"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "Sao chép các tập tin bị bỏ qua"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "Sao chép hình ảnh"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "Sao chép tin nhắn"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "Sao chép đường dẫn"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "Sao chép đường dẫn tương đối"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "Sao chép các thay đổi chưa được cam kết tại đây (giữ chúng trên nhánh "
+"này)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "Không thể hủy việc hợp nhất: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "Không thể hoàn tất việc hợp nhất"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "Không thể trích xuất ngữ cảnh."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "Không thể tạo thông báo commit: {detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "Không thể đọc tập tin."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "Không thể sao chép kho lưu trữ."
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "Không thể sao chép những thay đổi chưa được cam kết của bạn vào cây làm "
+"việc mới - chúng vẫn còn trên nhánh hiện tại."
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "Không thể tạo dự án."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "Không thể liệt kê các kho lưu trữ."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "Không thể tải thống kê hồ sơ của bạn."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "Tạo dự thảo PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "Tạo tập tin"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "Tạo nhánh mới"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "Tạo nhánh mới..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "Tạo PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "Tạo PR (Tự động)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "Hành động Tạo PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "Tạo PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "Tạo dự án"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "Tạo Pull Request"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "Tạo nhiệm vụ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "Tạo:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "Đã tạo một cây làm việc trên \"{newBranch}\", nhưng những thay đổi này "
+"xung đột và vẫn nằm trong kho lưu trữ git — hãy giải quyết chúng trong "
+"cây làm việc."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "Thông tin xác thực được cấu hình."
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "Số dư tín dụng"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "chuỗi ngày hiện tại"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "Chuỗi ngày hiện tại"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "Tùy chỉnh"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "Các lệnh tùy chỉnh có sẵn từ menu ngữ cảnh của dự án (nhấp chuột phải)."
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "Tối"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "Từ chối"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "Mặc định"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "Hành động Tạo PR mặc định"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "Chủ đề mới mặc định"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "Quyền mặc định"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "Hành vi xóa chủ đề mặc định"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "Xóa"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "Xóa {0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "Xóa nhánh?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "Xóa tập tin"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "Xóa vĩnh viễn"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "Xóa chủ đề"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "Xóa chủ đề"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "Xóa chủ đề?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "Xóa việc cần làm"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "Xóa worktree"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "Xóa worktree {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "Xóa:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "Đang xóa"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "Từ chối"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "Từ chối và cho tác nhân biết cần làm gì khác đi…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "Mô tả"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "Mô tả (tùy chọn)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "Đã phát hiện <0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "Đã phát hiện <0>(cục bộ)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "Đã phát hiện <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "Đang phát hiện tác nhân…"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "Dev"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "Ghi đè chỉ dành cho phát triển. Chỉ hiển thị trong bản dựng LIGHTCODE "
+"DEV."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "Thiết bị được dùng cho nút nhập giọng nói của khung soạn thảo."
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "Vô hiệu hóa"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "Tắt mức nỗ lực {tierLabel}"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "Tắt MCP trình duyệt"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "Vô hiệu hóa plugin hook CLI (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "Vô hiệu hóa dự án"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "Tắt các mức mà nhà cung cấp bên ngoài gộp lại (ví dụ chỉ giữ High và "
+"Max)."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "Đã tắt"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "Hủy các thay đổi chưa được lưu trong {path}?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "Hủy các thay đổi chưa lưu trong trình chỉnh sửa?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "Đang khám phá các tác nhân lập trình…"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "Loại bỏ"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "Loại bỏ lỗi"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "đánh giá bị loại bỏ"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "Hiển thị tên ở thanh bên."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "Tài liệu"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "Đừng hỏi lại"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "Không hiển thị đề xuất cài đặt hook"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "xong"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "Xong"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "Xong · Đang chờ bạn nhập"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "Tải hình ảnh"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "Đang tải xuống “{0}”. Việc này có thể mất một chút thời gian đối với "
+"các kho lưu trữ lớn."
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "Đang tải xuống mẫu giọng nói {0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "Đang tải xuống mẫu giọng nói..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "Đang tải xuống {v} — {percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "Đang tải xuống {versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "Bản nháp"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "Kéo để sắp xếp lại cách các nhà cung cấp xuất hiện trong bộ chọn mô "
+"hình."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "Kéo để sắp xếp lại; nhấp đúp để chỉnh sửa"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "Thả vào đây để đính kèm"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "Loại bỏ các gói hook đến tại trình giám sát để các tác nhân quay về L2 "
+"(tiến trình OSC 9;4) mà không động đến cài đặt hay thông báo iTerm2. Có "
+"hiệu lực ở sự kiện hook tiếp theo — không cần khởi động lại."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "ví dụ: Work"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "Chỉnh sửa"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "Chỉnh sửa tập tin"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "Chỉnh sửa hồ sơ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "Chỉnh sửa:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "Trình chỉnh sửa"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "LSP của trình chỉnh sửa"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "Tab trình chỉnh sửa"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "Nỗ lực và bối cảnh"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "Mức nỗ lực"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "Kích hoạt"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "Bật mức nỗ lực {tierLabel}"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "Bật hỗ trợ máy chủ ngôn ngữ để kiểm tra loại, hoàn thành và chẩn đoán. "
+"Yêu cầu cài đặt máy chủ ngôn ngữ."
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "Bật quyền truy cập micrô trong cài đặt hệ thống của bạn, sau đó thử "
+"lại."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "Bật thông báo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "Kích hoạt dự án"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "Bật nhà cung cấp trong cài đặt"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "Đã bật"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "Bật <0>cookie0> và <1>bộ nhớ1>. Cookie có thể chứa mã thông báo "
+"phiên và bộ lưu trữ thường giữ trạng thái xác thực — chỉ bật khi bạn "
+"tin cậy cả tác nhân và các trang web mà nó truy cập."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "Tăng cường (Móc)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "Nhập URL kho lưu trữ."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "Vào chế độ kế hoạch"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "Môi trường"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "Tên biến môi trường"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "Giá trị biến môi trường"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "Biến môi trường"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "lỗi"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "Lỗi"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "Lỗi · Tác nhân gặp lỗi"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "Loại trừ mẫu"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "Thoát khỏi chế độ kế hoạch"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "Đã thoát với mã {0}. Đóng để thử lại."
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "Mở rộng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "Mở rộng {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "Mở rộng tất cả"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "Mở rộng lỗi"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "Mở rộng dock việc cần làm"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "Bên ngoài"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "Nhà cung cấp bên ngoài"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "Cực cao"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "Đang trích xuất ngữ cảnh từ {0}..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "thất bại"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "Không thể đóng pull request: {detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "Không tạo được pull request: {detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "Không tải được thống kê hồ sơ."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "Không thể hợp nhất pull request: {detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "Nhanh"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "Chế độ nhanh"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "Nhanh nhất (Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "Nhanh nhất dùng Whisper tiny; Tốt hơn dùng Whisper base."
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "Yêu thích"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "Tìm nạp"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "tập tin"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "Các thay đổi về tập tin sẽ xuất hiện ở đây."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "Tệp quá lớn để xem trước."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "Tệp không còn tồn tại trên đĩa."
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "Tệp quá lớn để hiển thị ({0, plural, one {# dòng đã thay đổi} other {# "
+"dòng đã thay đổi}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "Tệp sử dụng mã hóa không được hỗ trợ."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "Tập tin"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "Tập tin cho {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "Các tệp khớp với các mẫu glob này sẽ bị ẩn khỏi tìm kiếm @file."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "Kết thúc bài đánh giá của bạn"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "Đã hoàn thành"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "Đã hoàn tất · Đang chờ bạn nhập"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "Tích hợp CLI Antigravity hạng nhất bằng thời gian chạy gốc của "
+"Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "Tích hợp Claude Code hạng nhất bằng thời gian chạy SDK gốc của "
+"Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "Tích hợp Codex CLI hạng nhất bằng cách sử dụng thời gian chạy máy chủ "
+"ứng dụng gốc của Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "Tích hợp CLI Command Code hạng nhất bằng thời gian chạy gốc của "
+"Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "Tích hợp Grok Build CLI hạng nhất bằng cách sử dụng thời gian chạy gốc "
+"của Lightcode."
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "Tích hợp OpenCode hạng nhất bằng thời gian chạy SDK gốc của Lightcode."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "Sửa trong Tác nhân"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "Tên thư mục"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "Buộc xóa"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "Buộc xóa? Những thay đổi chưa được hợp nhất sẽ bị mất."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "Fork"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "Định dạng tập tin"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "Chuyển tiếp"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "Đã tìm thấy phiên đăng nhập {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "Làm mờ thanh bên bằng hiệu ứng làm mờ của hệ thống (vibrancy), gợi nhớ "
+"macOS gần đây. Sẽ dùng lớp màu mờ trong suốt nếu không được hỗ trợ."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "Độ mờ của thanh bên ở chế độ {appearance} trên nền làm mờ hệ thống. Cao "
+"hơn giữ màu chủ đề; thấp hơn để lộ nhiều hơn phần phía sau."
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "Toàn quyền truy cập"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "Lớp phủ toàn màn hình"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "chung"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "Tạo thông điệp commit"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "Tạo bản tóm tắt PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "Tạo bằng AI"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "Hình ảnh đã tạo"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "Tạo thông điệp commit từ các thay đổi đã staged."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "Tạo tiêu đề ngắn cho chủ đề mới."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "Nhận nhiệm vụ"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "Git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command} không thành công: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "Đánh giá Git"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Chế độ đánh giá Git"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "Trạng thái Git cho {0}"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "Trạng thái Git cho {0}: không phải kho lưu trữ Git"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "Kho lưu trữ GitHub"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Các tệp được Gitignored để sao chép từ dự án chính vào từng cây làm "
+"việc mới. Các mẫu kiểu Gitignore, mỗi mẫu một dòng (ví dụ: "
+"<0>.env.*0>)."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2 (nhãn tùy chọn)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "Mục tiêu"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "Mục tiêu đã đặt"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "Nhóm"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "Nhóm chủ đề mở"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "Kích thước phông chữ trò chuyện GUI"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "handle"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "Handle"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "Tải lại cứng"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "Các chủ đề tiếp tục ẩn sẽ được quét 5 phút một lần và được dỡ bỏ sau độ "
+"tuổi nhàn rỗi này."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "Ẩn"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "Ẩn tất cả"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "Ẩn trình duyệt"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "Ẩn trình kiểm tra mục thời gian chạy chuẩn"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "Ẩn chi tiết sử dụng ngữ cảnh"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "Ẩn các mô hình bạn không sử dụng khỏi bộ chọn mô hình trên mọi nhà cung "
+"cấp."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "Ẩn bảng điều khiển"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "Ẩn bảng gỡ lỗi thời gian chạy"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "Ẩn thanh bên"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "Ẩn thiết bị đầu cuối"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "Trang chủ"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "phạm vi thư mục chính"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "Mã số: {0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "Nhàn rỗi"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "Hình ảnh"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "Xem trước hình ảnh"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "Không hoạt động"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "kế thừa"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "Kế thừa cài đặt chung (hiện tại {0})."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "Khởi tạo kho lưu trữ"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "Mức đầu vào"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "Kiểm tra các mục thời gian chạy chuẩn"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "cài đặt"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "cài đặt"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "Cài đặt {0} cho {env}."
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "Cài đặt {0} để tạo chủ đề."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "Cài đặt {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "Cài đặt {env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "Cài đặt móc CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "Cài đặt trong WSL: {distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "Cài đặt nhà cung cấp gốc trước; sử dụng ACP cho các tác nhân giao thức "
+"bổ sung."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "Cài đặt trên Windows"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "Cài đặt gói"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "Cài đặt bản cập nhật"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "Cài đặt v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "Cài đặt v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "Đã cài đặt"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "Đang cài đặt"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "Cài đặt trong thiết bị đầu cuối này. Đóng lại khi hoàn thành."
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "Bị gián đoạn: phiên tác nhân đã kết thúc trước khi hoàn thành."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "Nghiêng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "ngay bây giờ"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "Giữ nhánh"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "Giữ cho hệ thống luôn hoạt động trong khi bất kỳ luồng nào đang hoạt "
+"động tích cực."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "Dừng bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "Ngôn ngữ"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "Ngôn ngữ cho thông điệp commit và tóm tắt pull request do AI tạo. Tiêu "
+"đề chủ đề luôn theo ngôn ngữ ứng dụng."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "Ngôn ngữ mà mô hình giọng nói cần dùng khi phiên âm lời đọc trong trình "
+"soạn thảo."
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "Công cụ cuối cùng: <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "Khởi chạy luồng"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "Đang khởi chạy…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "Để lại bình luận"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "Ít"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "Cho phép các tác nhân gọi <0>eval0> để chạy JavaScript tùy ý bên "
+"trong trang được nhúng. Tắt theo mặc định — chỉ bật khi bạn tin cậy các "
+"trang web đã tải và tác nhân."
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "Giấy phép"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "tokens trọn đời"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "Tokens trọn đời"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "Sáng"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "Danh sách"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "Liệt kê các gói"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "Liệt kê nhiệm vụ"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "Đang tải"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "Đang tải tài khoản…"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "Đang tải khác biệt..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "Đang tải trình chỉnh sửa…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "Đang tải tập tin…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "Đang tải ghi chú…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "Đang tải PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "Đang tải sổ đăng ký..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "Đang tải…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "cục bộ"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "Cục bộ"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "Các thay đổi cục bộ cần được lưu tạm trước khi kéo từ {branch}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "Vị trí"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "Đăng nhập"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "Đăng xuất"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "đăng nhập"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "Đăng nhập"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "Đăng nhập {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "Yêu cầu đăng nhập"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "Đăng xuất"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "Đăng xuất {env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "chuỗi ngày dài nhất"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "Chuỗi ngày dài nhất"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "Tác vụ dài nhất"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "Làm thanh bên trong suốt — hiệu ứng làm mờ của hệ thống trên Windows "
+"11, lớp màu mờ trong suốt ở nơi khác."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "Sắp xếp thủ công"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "Đánh dấu tất cả đã xong"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "Đánh dấu là xong"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "Đánh dấu là chưa xong"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "Đánh dấu là xong"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "Đánh dấu xong"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "Theo ngôn ngữ ứng dụng"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "Theo hệ thống của bạn, hoặc buộc dùng giao diện sáng hoặc tối."
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "Tối đa hóa"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "Tối đa hóa trình duyệt"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "Máy chủ MCP"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "Hợp nhất & Xóa"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "Xung đột hợp nhất phải được giải quyết."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "Hợp nhất không thành công"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "Hợp nhất có xung đột"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "Hợp nhất có xung đột:\n"
+"{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "Hợp nhất cục bộ và xóa Worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "Phương pháp hợp nhất"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "Tùy chọn hợp nhất"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "Hợp nhất PR: Cam kết"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "Hợp nhất PR: Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "Hợp nhất PR: Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "Hợp nhất vào nguồn"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "Hợp nhất Worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "Đã hợp nhất"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "Việc hợp nhất bị chặn"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "Tin nhắn đã gửi"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "Micrô"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "Micrô {fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "Quyền truy cập micrô bị tắt."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "Mức đầu vào micrô"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "Quyền sử dụng micrô đã bị từ chối."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "Kiểm tra micrô không có sẵn trong môi trường này."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "Thu nhỏ trình duyệt sang bảng bên phải"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "Thu nhỏ vào bảng điều khiển"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "Chế độ"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "ID mô hình"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "Nhãn mô hình"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "Thứ tự mô hình"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "Mức dùng mô hình"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "Mô hình"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "Chế độ"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "Nhiều"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "Tùy chọn phê duyệt khác"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "Nhiều tùy chọn cam kết hơn"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "Thêm thao tác PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "Nhiều lựa chọn PR hơn"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "Nhiều tùy chọn pull request hơn"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "Nhiều tùy chọn đồng bộ hơn"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "Giờ hoạt động nhiều nhất"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "Plugin dùng nhiều nhất"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "Nhà cung cấp dùng nhiều nhất"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "Mức suy luận dùng nhiều nhất"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "Di chuyển"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "Di chuyển các thay đổi sang một cây làm việc mới"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "Di chuyển khay việc cần làm sang bảng bên phải"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "Đã chuyển các thay đổi của bạn sang một cây làm việc mới trên "
+"\"{newBranch}\". \"{currentBranch}\" hiện đã sạch."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "Đang di chuyển các thay đổi…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "Tên"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "Đặt tên cho dự án của bạn và chọn nơi để tạo nó."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "Bản địa"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "Nhà cung cấp bản địa"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "Hỗ trợ bản địa"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "Cần phê duyệt"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "Cần chú ý"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "Cần chú ý · Cần có sự phê duyệt"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "Cần chú ý · Cần trả lời"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "Cần trả lời"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "Lệnh hành động mới"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "Tên hành động mới"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "Tên chi nhánh mới..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "Thư mục cấu hình hồ sơ Claude mới"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "Tên hồ sơ Claude mới"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "Tệp mới"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "Thư mục mới"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "Dự án mới"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "Tab mới"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "Luồng mới"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "Luồng mới"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "Luồng mới — {projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "Luồng mới (bản nháp)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "Luồng mới từ việc cần làm này"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "Luồng mới trong Worktree"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "Cây làm việc mới"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "Hình ảnh tiếp theo"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "Không có tab trình duyệt đang hoạt động"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "Không có phiên hoạt động"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "Chưa có hoạt động nào."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "Không có hồ sơ Claude bổ sung."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "Không có tác nhân nào để tạo bản tóm tắt PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "Không có tác nhân nào trong giai đoạn này."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "Chưa có tác nhân nào được cài đặt"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "Không có tác nhân nào được cài đặt."
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "Chưa ghi nhận commit, PR hay giải quyết xung đột nào bằng AI."
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "Không có luồng nào đã lưu trữ."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "Không tìm thấy chi nhánh nào"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "Không có tab trình duyệt nào mở"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "Không có thay đổi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "Không có thay đổi nào để hiển thị"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "Không có kiểm tra nào được báo cáo cho PR này."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "Không tìm thấy lệnh nào"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "Không tìm thấy cam kết nào."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "Không có luồng nội dung."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "Chưa có cuộc trò chuyện nào. Hãy là người đầu tiên bình luận."
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "Chưa có dữ liệu"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "Chưa có dữ liệu."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "Không có mô tả"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "Không có sự khác biệt nào cho {0}"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "Không có sự khác biệt đối với {visiblePath}"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "Không có điểm kiểm tra tập tin nào được lưu trữ cho tin nhắn này."
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "Không có tệp nào khớp với \"{0}\"."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "Không tìm thấy tài khoản GitHub CLI nào. Đăng nhập bằng <0>gh auth "
+"login0> hoặc <1>dán URL sao chép1>."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "Không có kết quả phù hợp cho “{query}”."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "Không tìm thấy kết quả phù hợp."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "Không có tác nhân nào phù hợp."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "Không có luồng nào phù hợp"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "Chưa dùng công cụ MCP nào."
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "Chưa có tin nhắn nào"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "Không tìm thấy micrô."
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "Không tìm thấy mô hình nào"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "Không có tác nhân nào khác được cài đặt"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "Không có mẫu."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "Chưa có giai đoạn nào."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "Không có lời nhắc"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "Không có nhà cung cấp đang được theo dõi."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "Chưa có nhà cung cấp nào sẵn sàng"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "Không có cấu hình từ xa. Thêm một điều khiển từ xa để kích hoạt tính "
+"năng đẩy và kéo."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "Không tìm thấy kho lưu trữ nào."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "Chưa có mục thời gian chạy nào cho luồng này."
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "Chưa dùng skill nào."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "Không phát hiện thấy giọng nói nào."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "Không có thay đổi nào được đưa vào staging"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "Chưa dùng subagent nào."
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "Không phát hiện thấy tác nhân được hỗ trợ nào"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "Không có luồng nào"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "Chưa có luồng nào."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "Không có cửa sổ nào được báo cáo"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "Không có worktree"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "Không ngắt dòng"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "Không có"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "Không phải là kho lưu trữ git"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "Không phải kho lưu trữ Git"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "Không tìm thấy"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "Chưa được cài đặt"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "Chưa chạy"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "Chưa đăng nhập"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "Không được hỗ trợ"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "Ghi chú"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "Chưa ghi nhận gì. Nội dung sẽ xuất hiện ở đây khi bạn sử dụng."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "Thông báo"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "Thông báo về các luồng L2 CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "Thông báo cho tôi về"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "tắt"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "Cũ hơn"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "trên"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "Chỉ khi không tập trung"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "Mở"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "Mở {label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "Mở terminal"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "Mở một luồng trước để đính kèm vào đó."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "Mở tất cả"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "Mở tất cả trong nhóm"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "Mở dưới dạng trang"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "Mở dưới dạng bảng điều khiển"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "Mở trình duyệt"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "Mở kiểm tra"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "Mở bảng lệnh"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "Mở commit trên GitHub"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "Mở trình giải quyết xung đột trong"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "Mở hộp thoại"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "Mở tệp"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "Mở tệp"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "Mở toàn màn hình"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "Mở bảng Git"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "Mở Git Review"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "Mở đánh giá git dưới dạng bảng điều khiển bên phải hoặc toàn trang."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "Mở xem trước hình ảnh"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "Mở trong trình chỉnh sửa"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "Mở liên kết trong"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "Mở tab mới"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "Mở luồng mới dưới dạng toàn trang hoặc bảng cạnh nhau."
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "Mở PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "Mở PR trên GitHub"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "Mở xem trước"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "Mở cài đặt dự án"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "Mở yêu cầu"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "Mở URL được yêu cầu"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "Mở cài đặt"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "Mở Cài đặt"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "Mở tác nhân phụ: {0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "Mở bộ chọn nỗ lực"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "Mở bộ chọn mô hình"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "Đã mở {0} (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "Hook trạng thái tùy chọn. Các hook đã cài đặt sẽ tự động cập nhật; hook "
+"bị thiếu không bao giờ được cài đặt tự động."
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "Tùy chọn"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "Hoặc viết một câu trả lời tùy chỉnh"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "Kết quả"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "Vượt nhịp độ — hết sớm"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "Ghi đè giá trị mặc định của Claude — ví dụ ANTHROPIC_BASE_URL và "
+"ANTHROPIC_AUTH_TOKEN."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "Ghi đè cài đặt chung cho dự án này."
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "Cấu hình gói"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "Trình quản lý gói"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "Trang"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "bảng điều khiển"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "Dán"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "Dán <0>{0}0> vào đây. Nhấn vào đây để sao chép."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "Dán vào đầu vào"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "Đã tạm dừng"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "ngày cao điểm"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "Ngày cao điểm"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "đang chờ xử lý"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "đang chờ xem xét"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "Đang chờ chỉ đạo"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "sự cho phép"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "Chọn phần tử"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "Chọn biểu tượng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "Bộ chọn không thành công"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "Bộ chọn không trả về tệp đính kèm nào"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "Ghim lên đầu"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "Đã ghim"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "kế hoạch"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "Phát âm thanh khi thông báo được hiển thị."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "Phát âm thanh thông báo"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "Trỏ hồ sơ này tới nhà cung cấp ngoài Anthropic (z.ai, …) với biến môi "
+"trường, tên mô hình và mức nỗ lực tùy chỉnh."
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "Các chủ đề biên tập phổ biến được điều chỉnh cho phù hợp với Lightcode. "
+"Mỗi cái đều theo chế độ sáng hoặc tối ở trên."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "hoạt động PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "Tùy chọn PR"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "Đánh giá PR"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "phần PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "Tiêu đề PR (để trống để tự động tạo)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "Hook pre-commit không thành công"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "Cấu hình sẵn"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "Ngăn chế độ ngủ khi đang làm việc"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "Xem trước {0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "Hình ảnh trước đó"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "Hồ sơ"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "Hồ sơ"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "dự án"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "Tên dự án"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "ghi chú dự án"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "Cài đặt dự án"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "Ghi đè dành riêng cho dự án ở đầu cài đặt tìm kiếm chung."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "Lời nhắc"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "Prompt"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "Kế hoạch đề xuất"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "nhà cung cấp"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "nhà cung cấp"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "Nhà cung cấp chưa báo cáo việc sử dụng mã thông báo."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "Cấu hình nhà cung cấp"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "nhà cung cấp"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "Nhà cung cấp"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "Pull"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "Kéo ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "Kéo ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "Kéo ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "Pull không hoàn tất. Các thay đổi cục bộ của bạn vẫn nằm trong stash "
+"của Lightcode."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "Pull không thành công: {detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "Pull từ {0}?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "Pull từ {sourceBranch} ({sourceAhead})"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "Kéo từ Nguồn ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "Kéo Rebase ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "Tùy chọn pull request"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "Push"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "Đẩy ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "Đẩy ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "Đẩy ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "Push không thành công: {detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "Câu hỏi"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "Đã đạt hạn ngạch"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "Đã hết"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "Đã hết · đặt lại sau {resets}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "Bị giới hạn tốc độ"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "Bị giới hạn tốc độ. Hãy thử lại sau giây lát."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "Áp dụng lại các thay đổi cục bộ có xung đột"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "Đăng nhập lại"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "Sẵn sàng"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "Sẵn sàng để xem xét"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "Suy luận"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "Gần đây"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "Luồng gần đây"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "Được xây dựng lại từ nhật ký cục bộ ở mức API công khai - nó không phản "
+"ánh hóa đơn thực của bạn đối với các gói đăng ký. Chỉ hiển thị trong "
+"bảng sử dụng."
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "Làm mới"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "Làm mới xác thực {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "Làm mới các tác nhân được phát hiện"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "Làm mới registry"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "Làm mới mức sử dụng ở chế độ nền cứ sau N phút. Đặt thành 0 để tắt (chỉ "
+"thủ công). Tầng 2 phút tôn trọng giới hạn tỷ lệ của nhà cung cấp."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "Đang làm mới trạng thái xác thực {0}."
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "Đang làm mới trạng thái xác thực {env} {0}."
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "Tải lại"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "Từ xa"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "Tên từ xa"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "URL từ xa"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "Xóa"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "Xóa {0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "Xóa {0} khỏi bảng điều khiển"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "Xóa {pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "Xóa hành động"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "Xóa hồ sơ Claude"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "Xóa biến môi trường"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "Xóa khỏi mục yêu thích"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "Xóa khỏi nhóm"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "Xóa khỏi bảng điều khiển"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "Xóa mô hình"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "Xóa dự án"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "Xóa worktree?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "Đổi tên"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "Đổi tên nhóm"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "Đổi tên luồng"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "Trình kết xuất bị lỗi"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "Trình kết xuất không thành công khi khởi động"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "Trình kết xuất gặp lỗi React"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "Trình kết xuất gặp lỗi chưa được bắt"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "Trình kết xuất gặp một promise rejection chưa được xử lý"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "Sắp xếp lại {0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "Sắp xếp lại {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "Báo cáo sự cố"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "kho lưu trữ"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "Kho lưu trữ"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "Hook pre-receive của kho lưu trữ đang chặn việc hợp nhất."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "URL kho lưu trữ"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "Yêu cầu thay đổi"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "Yêu cầu chi tiết"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "yêu cầu thay đổi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "Các đánh giá, cuộc trò chuyện hoặc kiểm tra trạng thái bắt buộc không "
+"được đáp ứng."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "đặt lại"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "Đặt lại thứ tự mô hình"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "Đặt lại độ mờ thanh bên về mặc định"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "Đặt lại về mặc định"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "Thay đổi kích thước ngăn trình duyệt"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "Thay đổi kích thước cột"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "Thay đổi kích thước bảng git"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "Thay đổi kích thước ghi chú và việc cần làm"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "Thay đổi kích thước hàng"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "Thay đổi kích thước thanh bên"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "Thay đổi kích thước phần chia"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "Thay đổi kích thước bảng điều khiển thiết bị đầu cuối"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "Giải quyết xung đột hợp nhất trong quá trình rebase hoặc hợp nhất."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "Khôi phục"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "Khôi phục trình duyệt"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "Khôi phục luồng"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "Thử lại với quản trị viên"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "Quay lại ứng dụng"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "Hiển thị trong File Explorer"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "Hiển thị trong cây tập tin"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "Hoàn nguyên"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "Hoàn nguyên tất cả"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "Hoàn nguyên tất cả các thay đổi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "Hoàn nguyên các thay đổi"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "Hoàn nguyên về điểm kiểm tra?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "Quay lại điểm kiểm tra này"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "Xem lại các thay đổi"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "Xem lại nhận xét"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "Xem xét lại quyết định"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "Đánh giá theo yêu cầu"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "Xem xét PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "Xem lại PR #{prNumber} cho {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "Phải"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "Bảng bên phải"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "Chạy"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "Chạy {0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "Chạy {0} trước khi luồng này có thể chạy."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "Chạy {loginCommand} để đăng nhập."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "Chạy lệnh"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "Chạy trong một cây làm việc riêng"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "Chạy phiên âm cục bộ trên GPU khi có sẵn."
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "Chạy lệnh Terminal"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "đang chạy"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "Chạy trước khi cây làm việc bị xóa (ví dụ: <0>rm -rf node_modules0>)."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "Chạy trong terminal sau khi cây làm việc mới được tạo (ví dụ: <0>pnpm "
+"install0>)."
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "Hết sớm"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "Sẽ hết sau {runOut}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "Thời gian chạy"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "Gỡ lỗi thời gian chạy"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "Tùy chọn thời gian chạy"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "Lưu"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "Lưu thông tin xác thực {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "Lưu hồ sơ Claude"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "Lưu tập tin"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "Thông tin đăng nhập đã lưu được chia sẻ trên tất cả các môi trường."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Đang quét {wslDistro} để tìm CLI đã cài đặt. Việc này thường mất vài "
+"giây."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "Quét Windows và WSL để tìm CLI đã cài đặt. Việc này thường mất vài "
+"giây."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "Đang quét hệ thống của bạn để tìm CLI đã cài đặt. Việc này thường mất "
+"vài giây."
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "Tập lệnh"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "Hệ số nhân tốc độ cuộn cho bộ đệm cuộn ngược đầu cuối."
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "Cuộn xuống dưới cùng"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "Tìm kiếm"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "Tìm kiếm tác nhân"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "Tìm kiếm tác nhân..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "Tìm kiếm nhánh..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "Tìm kiếm tập tin"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "Tìm kiếm mô hình"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "Tìm kiếm mô hình..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "Tìm kiếm hoặc nhập địa chỉ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "Tìm kiếm kho lưu trữ"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "Tìm kiếm kho lưu trữ…"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "Tìm kiếm các mục thời gian chạy…"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "Tìm kiếm luồng"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "Tìm kiếm luồng"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "Tìm kiếm…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "Đang tìm kiếm..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "Đang tìm kiếm…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "Xem thêm"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "Chọn"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "Chọn một tập tin từ cây"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "Chọn một tập tin để bắt đầu chỉnh sửa."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "Chọn một kho lưu trữ."
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "Chọn tài khoản"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "Chọn một tác nhân để xem lời nhắc và kết quả của nó."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "Chọn nhánh"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "Chọn thiết bị"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "Chọn mô hình"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "Chọn dự án"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "Gửi tin nhắn..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "Gửi tin nhắn"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "Đã gửi lựa chọn đến thiết bị đầu cuối."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "Tách các tài khoản Claude Code theo thư mục cấu hình, hoặc trỏ một hồ "
+"sơ tới nhà cung cấp bên ngoài (z.ai, …). Mở một hồ sơ để cấu hình biến "
+"môi trường, mô hình và mức nỗ lực của nó."
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "Đặt hoặc xem mục tiêu thử nghiệm"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "Cài đặt"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "Tập lệnh thiết lập"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "Chia sẻ"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "Chia sẻ hoạt động của bạn"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "Hiển thị vòng sử dụng nhỏ gọn theo nhà cung cấp ở thanh bên."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "Hiển thị phạm vi Trang chủ không có dự án cho các phiên tác nhân cấp hệ "
+"điều hành."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "Hiển thị tất cả"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "Hiển thị thanh dấu trang"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "Hiển thị vòng tròn trong thanh bên"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "Hiển thị trình soạn thảo"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "Hiển thị chi tiết sử dụng ngữ cảnh"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "Hiển thị chi phí ước tính"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "Hiển thị trong trình duyệt tệp"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "Hiển thị ít hơn"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "Hiển thị thêm"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "Hiển thị thông báo"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "Hiển thị thông báo khi trạng thái luồng thay đổi."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "Hiển thị các liên kết đã mở trong"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "Hiển thị bản xem trước"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "Hiển thị bảng gỡ lỗi thời gian chạy"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "Hiển thị thanh bên"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "Hiển thị nguồn"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "Hiển thị nút micrô trong trình soạn thảo."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "Hiển thị nút nhập bằng giọng nói"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "Độ mờ thanh bên"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "Đăng nhập"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "Cần đăng nhập"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "Yêu cầu đăng nhập"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "Đăng nhập bằng CLI tác nhân."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "Đăng xuất {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "Đã đăng nhập"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "Đăng nhập"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "Đang đăng nhập…"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "Đang đăng xuất {env}. Các tác nhân được phát hiện sẽ làm mới khi nó kết "
+"thúc."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "Đang đăng xuất. Các tác nhân được phát hiện sẽ làm mới khi nó kết thúc."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "Kỹ năng: {skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "Skill"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "Skill đã khám phá"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "Một số kiểm tra không thành công hoặc đang chờ xử lý."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "Sắp xếp theo đã tạo"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "Sắp xếp theo cập nhật gần đây nhất"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "Sắp xếp luồng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "Chia đôi Terminal"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "Chế độ xem chia đôi"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "Đưa vào stage"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "Stage tất cả"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "đã stage"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "Đã stage"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "Đã stage ({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "Bắt đầu"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "Khởi động {appName} để xem mức sử dụng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "Bắt đầu một chủ đề mới từ văn bản đã chọn"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "Bắt đầu một chủ đề mới từ việc cần làm này"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "Bắt đầu lại từ đầu"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "Bắt đầu với trình soạn thảo được thu gọn trong các luồng gốc của thiết "
+"bị đầu cuối. Một trình soạn thảo đã thu gọn sẽ chuyển các phần tử trình "
+"duyệt được chọn thẳng đến thiết bị đầu cuối."
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "Bắt đầu nhập bằng giọng nói"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "Bắt đầu không có bối cảnh"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "Đã bắt đầu chủ đề {targetLabel}"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "Bắt đầu"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "Bắt đầu nhập bằng giọng nói"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "bắt đầu…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "Cất & Kéo"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "Trạng thái được suy ra từ đầu ra đầu cuối (L2). Cài đặt plugin hook "
+"trong cài đặt để cập nhật có cấu trúc."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "Trạng thái được cung cấp bởi giao thức điều khiển tác nhân (ACP)."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "Cập nhật trạng thái đến từ plugin hook CLI."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "Tình trạng:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "Dừng lại"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "Dừng phản hồi"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "Dừng tác vụ"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "Dừng nhập bằng giọng nói"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "Lưu dưới dạng văn bản thuần"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "Lưu dưới dạng bí mật (mã hóa khi lưu trữ)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "Tác nhân phụ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "Không tìm thấy tác nhân phụ."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "Kết quả tác nhân phụ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "Tác nhân phụ"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "Gửi"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "Gửi phản hồi và phê duyệt việc hợp nhất những thay đổi này."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "Gửi phản hồi phải được giải quyết trước khi hợp nhất."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "Gửi phản hồi mà không có sự chấp thuận rõ ràng."
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "Gửi đánh giá"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "Giám sát"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "Chế độ hỗ trợ xuất hiện khi phiên kết nối."
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "Hỗ trợ:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "Hoán đổi ghi chú và việc cần làm"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "Chuyển nhánh"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "Chuyển đổi chế độ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "Chuyển đổi chế độ: {title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "Chuyển đổi dự án"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "Chuyển cuộc trò chuyện này sang chế độ tác nhân"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "Chuyển cuộc trò chuyện này sang chế độ lập kế hoạch"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "Đồng bộ hóa"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "Đồng bộ hóa (Rebase)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "Đồng bộ hóa ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "Đồng bộ hóa không thành công: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "Tùy chọn đồng bộ hóa"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "Đồng bộ với Cloud"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "Hệ thống"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "Trình duyệt hệ thống"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "Mặc định hệ thống"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "Chụp ảnh màn hình"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "Nhánh mục tiêu"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "Nhà cung cấp mục tiêu"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "Đầu ra nhiệm vụ"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "Hãy cho {0} biết phải làm gì tiếp theo..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "Cho nhà cung cấp mục tiêu biết phải làm gì tiếp theo..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "Terminal"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "Thiết bị đầu cuối cho {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "Đầu vào đầu cuối"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "Thiết bị đầu cuối chưa sẵn sàng - đã thêm lựa chọn vào trình soạn thảo."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "Kích thước phông chữ của bảng điều khiển thiết bị đầu cuối"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "Vị trí đầu cuối"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "Tốc độ cuộn thiết bị đầu cuối"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "Tab đầu cuối"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "Kiểm tra micrô"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "tác nhân"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "ứng dụng"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "thư mục đã chọn"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "Shell ứng dụng bình thường không thể hiển thị. Chẩn đoán bên dưới được "
+"hiển thị trước khi tải lại để có thể điều tra lỗi."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "nhà cung cấp mục tiêu"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "Chủ đề"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "Đang suy nghĩ"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "Tác nhân này chưa được cài đặt."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "môi trường này"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "Tệp này quá lớn đối với trình chỉnh sửa tích hợp."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "Tệp này sử dụng mã hóa không được hỗ trợ."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "Việc này sẽ xóa vĩnh viễn nhánh \"{0}\" khỏi điều khiển từ xa của nó."
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "Việc này sẽ xóa vĩnh viễn nhánh \"{0}\"."
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "Thao tác này sẽ xóa các tin nhắn sau này và khôi phục các tệp khi có "
+"ảnh chụp nhanh điểm kiểm tra."
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "Thao tác này sẽ xóa cây làm việc trên \"{0}\" và đóng {1, plural, one "
+"{# luồng được liên kết} other {# luồng được liên kết}}, sau đó xóa "
+"nhánh."
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "Thao tác này sẽ xóa cây làm việc trên \"{0}\", sau đó xóa nhánh."
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "Luồng này sử dụng cây làm việc <0>{0}0>. Cũng xóa thư mục cây làm "
+"việc?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "Cây làm việc này có các thay đổi cục bộ. Lightcode có thể tạm thời lưu "
+"trữ (stash) chúng, kéo (pull) từ {0}, sau đó áp dụng lại các thay đổi "
+"của bạn."
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "Suy nghĩ"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "luồng"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "Luồng + Cây làm việc"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "Mức sử dụng bối cảnh luồng"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "Dock luồng"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "Luồng không thể bắt đầu."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "Luồng đã kết thúc hoặc đang chờ bạn nhập."
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "Dock mục tiêu luồng"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "Luồng đã được dỡ bỏ."
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "Chế độ luồng"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "Chỉ luồng"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "Thứ tự sắp xếp luồng"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "Dock việc cần làm của luồng"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "luồng"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "Các luồng được đánh dấu hoàn thành mà không được động đến trong số ngày "
+"này sẽ tự động được lưu trữ khi khởi chạy ứng dụng. Đặt thành 0 để tắt."
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "Tạo tiêu đề"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "Việc cần làm"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "Chuyển đổi chế độ Nhanh"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "Tắt các mô hình để ẩn chúng khỏi bộ chọn."
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "Bật/tắt thiết bị đầu cuối"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Tokens"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "Tokens từ {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "Tìm kiếm công cụ"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "Tổng số prompt"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "Tổng số skill đã dùng"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "Tổng số luồng"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "Theo dõi mức sử dụng {label}"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "Theo dõi mức sử dụng theo phiên, hàng tuần và hàng tháng cho mỗi nhà "
+"cung cấp. Các khoảng thời gian (windows) do từng nhà cung cấp báo cáo; "
+"chi phí ước tính được tái dựng từ các bản ghi cục bộ."
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "Tắt theo dõi"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "Phiên âm giọng nói"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "Thanh bên trong suốt"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "Bật hoặc tắt theo dõi cho mỗi nhà cung cấp. Tính năng tự động làm mới "
+"sẽ bỏ qua các nhà cung cấp bị vô hiệu hóa."
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "Nhập lệnh"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "Không thể xác thực {0}."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "Không thể tạo thư mục cây làm việc WSL \"{path}\""
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "Không thể cài đặt hook {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "Không thể cài đặt {0}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "Không thể đăng xuất {0}."
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "Không thể mở đăng nhập {0}."
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "Không thể mở tập tin"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "Không thể làm mới trạng thái {0}."
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "Không thể làm mới {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "Không thể làm mới hồ sơ Claude."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "Không thể xóa thông tin xác thực {0}."
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "Không thể xóa cây làm việc."
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "Không thể giải quyết thư mục chính cho bản phân phối WSL \"{distro}\""
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "Không thể lưu thông tin xác thực {0}."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "Không thể lưu hồ sơ Claude {displayLabel}."
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "Không thể khởi động {label}."
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "Không thể cập nhật {0} ({envName}): {detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "Không thể cập nhật {0} ({envName})."
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "Không thể cập nhật hook {0}."
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "Không thể cập nhật {0}: {1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "Không thể cập nhật {0}: {detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "Không thể cập nhật {0}."
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "Bỏ nhóm tất cả"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "Chế độ xem thống nhất"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "Gỡ cài đặt"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "Không xác định"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "Dự án không xác định"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "Không giới hạn"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "Dỡ bỏ các luồng nhàn rỗi sau"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "Gỡ bỏ các chủ đề không hoạt động sau (phút)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "Dỡ bỏ chủ đề"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "Bỏ đánh dấu xong"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "Bỏ đánh dấu xong"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "Không phân giai đoạn:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "Bỏ ghim"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "Bỏ khỏi staging"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "Bỏ khỏi staging tất cả"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "chưa đưa vào staging"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "Không được hỗ trợ"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "cập nhật"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "Cập nhật {0} lên {updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "Đã có bản cập nhật"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "Cập nhật nhánh"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "Lỗi cập nhật: {detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "Phương thức cập nhật"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "Cập nhật nhiệm vụ"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "Cập nhật lên {updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "Cập nhật lên {updateLabel} cho {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "Cập nhật lên {updateLabel} cho {0} ({env})"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "Cập nhật lên v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "Cập nhật lên v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "Cập nhật bằng commit hợp nhất (merge commit)"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "Cập nhật với rebase"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "Đã cập nhật {0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "Đang cập nhật"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "Đang cập nhật {0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "Đang cập nhật {0} ({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "Mức sử dụng"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "Không hỗ trợ theo dõi mức sử dụng"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "Cài đặt sử dụng"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "Không rõ mức sử dụng"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "Sử dụng thư mục hiện có"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "Sử dụng cấu hình"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "Sử dụng phiên được phát hiện?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "Sử dụng tập tin bỏ qua"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "Sử dụng phiên"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "Sử dụng tài khoản này để theo dõi việc sử dụng hoặc thay đổi người dùng "
+"trong trình duyệt trước khi tiếp tục."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "Sử dụng tính năng tăng tốc WebGPU"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "Đã dùng"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "Đang dùng danh sách mô hình Claude tích hợp sẵn."
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0} có sẵn"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "giá trị"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "Phiên bản"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "qua {0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "Xem"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "Mô hình {0} có thể nhìn thấy"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "Mô hình hiển thị"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "Nhập liệu bằng giọng nói không khả dụng trong môi trường này."
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "Ngôn ngữ nhập bằng giọng nói"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "Mô hình nhập liệu bằng giọng nói"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "Chờ cho luồng khởi động xong."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "Đang chờ xác thực {authEnv} {authMethodName}. Các tác nhân được phát "
+"hiện sẽ làm mới khi hoàn tất."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Đang chờ xác thực {authMethodName}. Các tác nhân được phát hiện sẽ làm "
+"mới khi hoàn tất."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "Đang chờ xác thực {env} {methodName}. Các tác nhân được phát hiện sẽ "
+"làm mới khi hoàn tất."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "Đang chờ xác thực {methodName}. Các tác nhân được phát hiện sẽ làm mới "
+"khi hoàn tất."
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "đang chờ tác nhân dừng lại"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "Đang chờ quy trình làm việc sinh ra các tác nhân…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "thức dậy"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "Thức dậy sau {interval}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "Thức dậy sau {interval}: {reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "Đánh thức: {reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "Đang khởi động môi trường shell…"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "Đang khởi động các môi trường shell..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "Đang khởi động môi trường shell WSL…"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "Tìm kiếm trên web"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "Trang web"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "Chức năng của nút Tạo PR theo mặc định: mở hộp thoại để chỉnh sửa tiêu "
+"đề và mô tả trước hoặc tự động tạo chúng và tạo PR chỉ bằng một cú nhấp "
+"chuột. Bạn cũng có thể chuyển đổi điều này từ menu của nút."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "Khi được bật, tìm kiếm sẽ tôn trọng các mục nhập <0>.gitignore0>."
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "Khi các liên kết mở trong tab trình duyệt Lightcode, hãy chọn nơi trình "
+"duyệt được hiển thị."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "Khi tắt, hãy chặn thông báo từ các luồng đầu cuối có trạng thái đến từ "
+"dự phòng OSC (không có plugin hook CLI)."
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "Thời điểm hiển thị thông báo nhanh (toast) trong ứng dụng cho các luồng "
+"đang hiển thị."
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "Khi bạn đóng cửa sổ, hãy giữ Lightcode chạy trong khay hệ thống. Tắt để "
+"thoát khi đóng."
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "Nơi lựa chọn từ bộ chọn phần tử trình duyệt được đưa vào các luồng gốc "
+"của thiết bị đầu cuối. Trình soạn thảo đang thu gọn luôn định tuyến tới "
+"thiết bị đầu cuối."
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "Bạn muốn bắt đầu từ đâu?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "Nơi bảng điều khiển đầu cuối xuất hiện."
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "Sẽ chạy trong {0}:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "cửa sổ"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "Windows chưa được hỗ trợ. Cài đặt bên trong WSL hoặc trên macOS/Linux."
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "công việc"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "Làm việc trong checkout hiện tại"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "Đã làm việc trong {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "Quy trình làm việc"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "Quy trình làm việc đã kết thúc. Các tác nhân con chạy trong một quy "
+"trình riêng biệt và chưa được truyền trực tuyến tại đây."
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "Quy trình làm việc đang chạy ở chế độ nền. Các tác nhân con chạy trong "
+"một quy trình riêng biệt và chưa được truyền trực tuyến tại đây."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "Các giai đoạn của quy trình làm việc"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "Kết quả quy trình làm việc"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "Quy trình làm việc: {description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "Quy trình làm việc"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "Đang làm việc"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "Đang làm việc trong {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "Cây làm việc sạch sẽ"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "Đang làm việc…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "Cây làm việc"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "Cây làm việc + thay đổi"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "Chế độ cây làm việc"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "Cây làm việc: {0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "Cây làm việc"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "Ngắt dòng tự động"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "Viết bình luận"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "Viết bình luận…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "Viết ghi chú cho dự án này…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL ({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "Tên của bạn"
diff --git a/src/renderer/locales/zh-CN/messages.po b/src/renderer/locales/zh-CN/messages.po
new file mode 100644
index 00000000..30aa25b7
--- /dev/null
+++ b/src/renderer/locales/zh-CN/messages.po
@@ -0,0 +1,5963 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2026-06-17 10:29-0700\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: zh-CN\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Plural-Forms: \n"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "(Draft)"
+msgstr "(草案)"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "(no message)"
+msgstr "(没有消息)"
+
+#. placeholder {0}: details.changedFiles
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "{0, plural, one {# file} other {# files}}"
+msgstr "{0, plural, one {# 个文件} other {# 个文件}}"
+
+#. placeholder {0}: readyKinds.size
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{0, plural, one {# provider ready} other {# providers ready}}"
+msgstr "{0, plural, one {#提供商准备就绪} other {#提供商准备就绪}}"
+
+#. placeholder {0}: details.patterns.length
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "{0, plural, one {target} other {targets}}"
+msgstr "{0, plural, one {目标} other {目标}}"
+
+#. placeholder {0}: props.checkpointGuard.sharedThreadCount
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "{0, plural, other {# other chats use this same tree. File restore could "
+"overwrite their changes.}}"
+msgstr "{0, plural, other {#其他聊天使用同一棵树。文件恢复可能会覆盖他们的更改。}}"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Composer"
+msgstr "{0} — 编写器"
+
+#. placeholder {0}: target.title
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "{0} — Terminal"
+msgstr "{0} — 终端"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) is already up to date."
+msgstr "{0}({envName}) 已经是最新的。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated to v{newVersion}."
+msgstr "{0}({envName}) 更新为 v{newVersion}。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} ({envName}) updated."
+msgstr "{0}({envName}) 已更新。"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} authenticated."
+msgstr "{0}已验证。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials removed."
+msgstr "{0}凭据已删除。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} credentials saved."
+msgstr "{0}凭据已保存。"
+
+#. placeholder {0}: devices.length
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0} devices"
+msgstr "{0}台设备"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks installed for {envName}."
+msgstr "为{envName}安装了{0}挂钩。"
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "{0} hooks installed."
+msgstr "{0}挂钩已安装。"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} hooks removed for {envName}."
+msgstr "删除了{envName}的{0}挂钩。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} install targets"
+msgstr "{0}安装目标"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} is already up to date."
+msgstr "{0}已经是最新的。"
+
+#. placeholder {0}: summary.maxLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} limit"
+msgstr "{0}限制"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} logged out."
+msgstr "{0}已注销。"
+
+#. placeholder {0}: agent.name
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} needs authentication."
+msgstr "{0}需要身份验证。"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompt - {when}"
+msgstr "{0}条提示 - {when}"
+
+#. placeholder {0}: cell.count
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} prompts - {when}"
+msgstr "{0}条提示 - {when}"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} run"
+msgstr "运行{0}次"
+
+#. placeholder {0}: item.runCount.toLocaleString()
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "{0} runs"
+msgstr "运行{0}次"
+
+#. placeholder {0}: formatTokens(snapshot.tokens.total)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "{0} tokens"
+msgstr "{0} 令牌"
+
+#. placeholder {0}: formatCompact(cell.count)
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "{0} tokens - {when}"
+msgstr "{0}个token - {when}"
+
+#. placeholder {0}: agent.name
+#. placeholder {1}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "{0} updated to v{1}."
+msgstr "{0}更新为 v{1}。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{latestRegistryVersion}."
+msgstr "{0}更新为 v{latestRegistryVersion}。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated to v{newVersion}."
+msgstr "{0}更新为 v{newVersion}。"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "{0} updated to v{resolvedLatest}."
+msgstr "{0}更新为 v{resolvedLatest}。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{0} updated."
+msgstr "{0}已更新。"
+
+#. placeholder {0}: summary.usedLabel
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0} used"
+msgstr "已使用 {0}"
+
+#. placeholder {0}: summary.percent
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "{0}% Full"
+msgstr "{0}% 满"
+
+#. placeholder {0}: Math.floor(days / 30)
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{0}mo ago"
+msgstr "{0}个月前"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "{agentLabel}: {statusLabel}. Hover for status details."
+msgstr "{agentLabel}:{statusLabel}。将鼠标悬停以查看状态详细信息。"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} day"
+msgstr "{days}天"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "{days} days"
+msgstr "{days}天"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "{days}d ago"
+msgstr "{days}天前"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{envOrAgentLabel} needs authentication."
+msgstr "{envOrAgentLabel}需要身份验证。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "{filteredCount} / {totalCount} matches"
+msgstr "{filteredCount}/{totalCount} 项匹配"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "{head}, or {tail}"
+msgstr "{head}或{tail}"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "{heading} mode"
+msgstr "{heading}模式"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{hook} hook failed"
+msgstr "{hook}挂钩失败"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{hours}h ago"
+msgstr "{hours}小时前"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "{installedCount, plural, one {# agent ready} other {# agents ready}}"
+msgstr "{installedCount, plural, one {# 个代理准备就绪} other {# 个代理准备就绪}}"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "{label} usage — open usage panel"
+msgstr "{label}用法 — 打开用法面板"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0}"
+msgstr "{loginLabel}{0}"
+
+#. placeholder {0}: method.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {0} {env}"
+msgstr "{loginLabel}{0}{env}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{loginLabel} {env}"
+msgstr "{loginLabel}{env}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{maxLabel} context"
+msgstr "{maxLabel}上下文"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{minutes}m ago"
+msgstr "{minutes} 分钟前"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{missingAuthLabel} needs authentication."
+msgstr "{missingAuthLabel}需要身份验证。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "{original}\n"
+"Worktree cleanup also failed: {cleanup}"
+msgstr "{original}\n"
+"工作树清理也失败:{cleanup}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{percent}% full"
+msgstr "{percent}% 满"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "{projectLocation} (disabled)"
+msgstr "{projectLocation}(已禁用)"
+
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "{projectName} Settings"
+msgstr "{projectName}设置"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "{remaining, plural, one {# open} other {# open}}"
+msgstr "{remaining, plural, one {#打开} other {#打开}}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "{resultCount, plural, one {# result} other {# results}}"
+msgstr "{resultCount, plural, one {#结果} other {#结果}}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "{seconds}s ago"
+msgstr "{seconds} 秒前"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used} tokens"
+msgstr "{used} 令牌"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "{used}/{budget} tokens"
+msgstr "{used}/{budget} 令牌"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} / {maxLabel} tokens"
+msgstr "{usedLabel}/{maxLabel} 令牌"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "{usedLabel} tokens"
+msgstr "{usedLabel} 令牌"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "{visibleCount} of {totalCount} visible"
+msgstr "{totalCount} 中的 {visibleCount} 个可见"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "© {currentYear} Serhii Vecherenko. All rights reserved."
+msgstr "©{currentYear} Serhii Vecherenko。版权所有。"
+
+#. placeholder {0}: checks.length
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "<0>{passed}0> of {0} checks passed"
+msgstr "{0} 项检查中 <0>{passed}0> 项已通过"
+
+#. placeholder {0}: snapshot.cost.period
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "~{money}{tokens} · {0} · est."
+msgstr "~{money}{tokens} · {0} · 预计"
+
+#. placeholder {0}: Math.round(projection.projectedPercent)
+#: src/renderer/components/providers/usageFormat.ts
+msgid "≈{0}% by reset"
+msgstr "≈{0}% 重置时"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "a supported coding agent"
+msgstr "支持的编码代理"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Abort Merge"
+msgstr "中止合并"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "About"
+msgstr "关于"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Both Changes"
+msgstr "接受两项更改"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Current Change"
+msgstr "接受当前更改"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+msgid "Accept Incoming Change"
+msgstr "接受传入的更改"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account"
+msgstr "帐户"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Account options"
+msgstr "账户选项"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Accounts"
+msgstr "账户"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP"
+msgstr "ACP"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ACP Agents"
+msgstr "ACP 代理"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action command"
+msgstr "操作指令"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Action for the quick-remove button on sidebar threads."
+msgstr "侧边栏线程上的快速删除按钮的操作。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Action name"
+msgstr "操作名称"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Actions"
+msgstr "操作"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Active"
+msgstr "活动"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity"
+msgstr "活动"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Activity insights"
+msgstr "活动洞察"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Activity metric"
+msgstr "活动指标"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add"
+msgstr "添加"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before installing an agent."
+msgstr "在安装代理之前添加项目。"
+
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Add a project before signing in."
+msgstr "登录前添加项目。"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Add a project to start"
+msgstr "添加一个项目来启动"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "Add a to-do…"
+msgstr "添加待办事项..."
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Add action"
+msgstr "添加操作"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add attachment or capability"
+msgstr "添加附件或功能"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add Claude profile"
+msgstr "添加 Claude 配置文件"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Add credentials before this thread can run."
+msgstr "在此线程运行之前添加凭据。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add model"
+msgstr "添加模型"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Add pattern"
+msgstr "添加模式"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Add profile"
+msgstr "添加配置文件"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Add project"
+msgstr "添加项目"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Add Project"
+msgstr "添加项目"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Add project options"
+msgstr "添加项目选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Add Remote"
+msgstr "添加远程仓库"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Add to composer"
+msgstr "添加到编写器"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Add to favorites"
+msgstr "添加到收藏夹"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent"
+msgstr "智能体"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent ({subagent}): {description}"
+msgstr "代理 ({subagent}):{description}"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Agent chat (ACP / markdown). Command rows use this size minus 1 px; tool "
+"and plan lines minus 2 px."
+msgstr "代理聊天(ACP / markdown)。命令行使用此大小减去 1 像素;工具和计划线减去 2 像素。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Agent encountered an error."
+msgstr "代理遇到错误。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is active and ready"
+msgstr "代理已激活并准备就绪"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent is currently disabled"
+msgstr "代理当前已禁用"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agent not found"
+msgstr "未找到代理"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agent Registry"
+msgstr "代理注册表"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Agent terminal font size"
+msgstr "代理终端字体大小"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Agent update available"
+msgstr "代理更新可用"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {description}"
+msgstr "代理:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Agent: {subagent}"
+msgstr "代理:{subagent}"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Agents"
+msgstr "智能体"
+
+#: src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Agents · General"
+msgstr "代理·一般"
+
+#. Settings section: AI / assistant configuration
+#. Settings section: AI / assistant configuration
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "AI"
+msgstr "AI"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "AI agent orchestrator — manage coding agents via Terminal and Native "
+"ACP."
+msgstr "AI 代理协调器 — 通过终端和本机 ACP 管理编码代理。"
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "AI git actions"
+msgstr "AI git操作"
+
+#: src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+msgid "All accounts"
+msgstr "全部账户"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "All devices"
+msgstr "全部设备"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "All efforts"
+msgstr "全部级别"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "All files"
+msgstr "所有文件"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Allow"
+msgstr "允许"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow agents to read/write cookies and storage"
+msgstr "允许代理读/写 cookie 和存储"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Allow eval"
+msgstr "允许评估"
+
+#. Notification filter: always notify
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Always"
+msgstr "总是"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Always excluded"
+msgstr "总是被排除在外"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Another chat uses this same tree. File restore could overwrite that "
+"chat's changes."
+msgstr "另一个聊天使用同一棵树。文件恢复可能会覆盖该聊天的更改。"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "App Browser"
+msgstr "应用程序浏览器"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Appearance"
+msgstr "外观"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Appearance mode"
+msgstr "外观模式"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Apply provider preset"
+msgstr "应用服务商预设"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Approval or reply required from you."
+msgstr "需要您的批准或答复。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approve"
+msgstr "批准"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "approved"
+msgstr "已批准"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Approved"
+msgstr "已批准"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Archive"
+msgstr "存档"
+
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Archive {0}"
+msgstr "存档{0}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Archive All"
+msgstr "全部存档"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Archive Thread"
+msgstr "存档线程"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Archived Threads"
+msgstr "已存档的线程"
+
+#. placeholder {0}: file.path
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Are you sure you want to revert <0>{0}0>? This cannot be undone."
+msgstr "您确定要恢复 <0>{0}0> 吗?此操作无法撤消。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+msgid "Are you sure you want to revert <0>{path}0>? This cannot be undone."
+msgstr "您确定要恢复 <0>{path}0> 吗?此操作无法撤消。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Are you sure you want to revert all unstaged changes? This cannot be "
+"undone."
+msgstr "您确定要恢复所有未暂存的更改吗?此操作无法撤消。"
+
+#. placeholder {0}: agentStatus?.label ?? agentFallbackLabel
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Ask {0} anything about this workspace"
+msgstr "向{0}询问有关此工作区的任何信息"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Ask each time"
+msgstr "每次都询问"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Ask Question"
+msgstr "提问"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Attach"
+msgstr "附加"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Attach files"
+msgstr "附加文件"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Attach to thread"
+msgstr "连接到线程"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Attach todo dock to composer"
+msgstr "将待办事项停靠栏附加到编写器"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Attached browser selection."
+msgstr "已附加浏览器选区。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Audio"
+msgstr "音频"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Authentication"
+msgstr "认证"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Authentication required"
+msgstr "需要身份验证"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Auto"
+msgstr "自动"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+msgid "Auto Approve"
+msgstr "自动批准"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after"
+msgstr "之后自动存档已完成的线程"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Auto-archive done threads after (days)"
+msgstr "自动存档已完成线程的等待天数"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Auto-generate"
+msgstr "自动生成"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh (minutes)"
+msgstr "自动刷新(分钟)"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Auto-refresh interval in minutes, 0 to turn off"
+msgstr "自动刷新间隔以分钟为单位,0为关闭"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Auto-review"
+msgstr "自动审核"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Auto-show terminal panel"
+msgstr "自动显示终端面板"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Automatically show the terminal panel when running commands or creating "
+"worktrees."
+msgstr "运行命令或创建工作树时自动显示终端面板。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "available"
+msgstr "可用"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Available ACP Agents"
+msgstr "可用的 ACP 代理"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color"
+msgstr "头像颜色"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Avatar color {color}"
+msgstr "头像颜色{color}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Back"
+msgstr "返回"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process exited unexpectedly"
+msgstr "后台进程意外退出"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process is not running"
+msgstr "后台进程未运行"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Background process restarted"
+msgstr "后台进程重新启动"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Background tasks"
+msgstr "后台任务"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Base branch is ahead — branch must be updated first."
+msgstr "基础分支在前——必须首先更新分支。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for agent terminals. Auto-shrinks in narrow or short "
+"panes."
+msgstr "代理终端的基本字体大小。在狭窄或短的窗格中自动缩小。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Base font size for the terminal panel. Auto-shrinks in narrow or short "
+"panes."
+msgstr "终端面板的基本字体大小。在狭窄或短的窗格中自动缩小。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Bash output"
+msgstr "bash 输出"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Basic (CLI)"
+msgstr "基本(CLI)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Better (Whisper base)"
+msgstr "更好(Whisper base)"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Better status updates while agents run."
+msgstr "代理运行时更好的状态更新。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Binary"
+msgstr "二进制"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Binary file — preview unavailable."
+msgstr "二进制文件 - 预览不可用。"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "Binary file or no diff available"
+msgstr "二进制文件或没有可用的差异"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Binary files can't be edited here."
+msgstr "此处无法编辑二进制文件。"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "blocked:"
+msgstr "已阻止:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Bold"
+msgstr "加粗"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Bottom"
+msgstr "底部"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Branch '{branch}' has uncommitted changes in '{path}' — commit or stash "
+"them before merging"
+msgstr "分支“{branch}”在“{path}”中有未提交的更改 - 在合并之前提交或隐藏它们"
+
+#. placeholder {0}: props.branch
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch <0>{0}0> has unmerged changes:"
+msgstr "分支 <0>{0}0> 具有未合并的更改:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Branch not fully merged"
+msgstr "分支未完全合并"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Branch protection rules blocked this merge."
+msgstr "分支保护规则阻止了这次合并。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Branches"
+msgstr "分支"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Browse for parent folder"
+msgstr "浏览父文件夹"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Browse your GitHub repositories or paste a clone URL."
+msgstr "浏览您的 GitHub 存储库或粘贴克隆 URL。"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Browser"
+msgstr "浏览器"
+
+#: src/renderer/components/composer/MentionPopover.tsx
+msgid "Browser MCP"
+msgstr "浏览器 MCP"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Browser MCP enabled for OpenCode"
+msgstr "为 OpenCode 启用的浏览器 MCP"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Browser MCP enabled for this thread"
+msgstr "为此线程启用浏览器 MCP"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Browser menu"
+msgstr "浏览器菜单"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target (CLI threads)"
+msgstr "浏览器选择目标(CLI 线程)"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Browser pick target for CLI threads"
+msgstr "为 CLI 线程在浏览器中选取目标"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Budget limit reached"
+msgstr "已达到预算限额"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/InlineDiffView.tsx
+msgid "Building diff…"
+msgstr "正在生成差异…"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "by <0>{author}0>"
+msgstr "由 <0>{author}0>"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by prompts"
+msgstr "按提示数"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "by tokens"
+msgstr "按token数"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules"
+msgstr "绕过分支保护规则"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Bypass branch protection rules (admin merge)"
+msgstr "绕过分支保护规则(管理合并)"
+
+#. Dialog button: dismiss without deleting
+#: src/renderer/components/common/ConfirmDialog.tsx
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Cancel"
+msgstr "取消"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Cancel new Claude profile"
+msgstr "取消新的 Claude 配置文件"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Cancel pending steer"
+msgstr "取消待发送的引导消息"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Cancel picker"
+msgstr "取消选择器"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "cancelled"
+msgstr "已取消"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot create a default worktree path without a branch name"
+msgstr "无法创建没有分支名称的默认工作树路径"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Cannot switch branches — commit or stash your changes first"
+msgstr "无法切换分支 - 首先提交或存储您的更改"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Change User"
+msgstr "更改用户"
+
+#. Link to the list of release notes
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Changelog"
+msgstr "变更日志"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Changes"
+msgstr "更改"
+
+#. placeholder {0}: gitStatus.unstaged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Changes ({0})"
+msgstr "更改({0})"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Changes in PR"
+msgstr "PR 中的更改"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Changes requested"
+msgstr "要求更改"
+
+#. About page label: release channel (stable/nightly)
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Channel"
+msgstr "频道"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Chat"
+msgstr "聊天"
+
+#: src/renderer/commands/registry.ts
+msgid "Chat Commands"
+msgstr "聊天命令"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Check"
+msgstr "检查"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Check for updates"
+msgstr "检查更新"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Check the live input level from the selected device."
+msgstr "检查所选设备的实时输入电平。"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Checking…"
+msgstr "正在检查..."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Checks"
+msgstr "检查项"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Choose a folder…"
+msgstr "选择一个文件夹..."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in for {env}."
+msgstr "选择登录 {env} 的方式。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Choose how to sign in."
+msgstr "选择登录方式。"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Choose the display language for Lightcode's interface."
+msgstr "选择 Lightcode 界面的显示语言。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Choose thread to attach to"
+msgstr "选择要附加到的线程"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Choose whether links from Lightcode and browser popups stay in Lightcode "
+"or open externally."
+msgstr "选择来自 Lightcode 和浏览器弹出窗口的链接是保留在 Lightcode 中还是在外部打开。"
+
+#. placeholder {0}: trimmedName || displayLabel
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {0} profile saved."
+msgstr "Claude {0} 配置文件已保存。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude {displayName} profile added."
+msgstr "已添加 Claude {displayName} 配置文件。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile config directory"
+msgstr "Claude 配置文件配置目录"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile name"
+msgstr "Claude 配置文件名称"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Claude profile removed."
+msgstr "Claude 配置文件已删除。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Cleanup script"
+msgstr "清理脚本"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Browsing History"
+msgstr "清除浏览历史记录"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cache"
+msgstr "清除缓存"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Clear Cookies"
+msgstr "清除 Cookie"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Clear search"
+msgstr "清除搜索"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "CLI"
+msgstr "CLI"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "CLI hooks"
+msgstr "CLI 挂钩"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone"
+msgstr "克隆"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Clone a repository"
+msgstr "克隆存储库"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Clone URL"
+msgstr "克隆 URL"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning {cloneTarget}"
+msgstr "克隆{cloneTarget}"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Cloning…"
+msgstr "克隆…"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close"
+msgstr "关闭"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Close {purposeNoun} terminal"
+msgstr "关闭{purposeNoun}终端"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Close browser"
+msgstr "关闭浏览器"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Close editor"
+msgstr "关闭编辑器"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Editor Tab"
+msgstr "关闭编辑器选项卡"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Close goal"
+msgstr "关闭目标"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Close group"
+msgstr "关闭组"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Close pane"
+msgstr "关闭窗格"
+
+#: src/renderer/commands/registry.ts
+msgid "Close Pane"
+msgstr "关闭窗格"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Close plan"
+msgstr "关闭计划"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Close PR"
+msgstr "关闭 PR"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Close preview"
+msgstr "关闭预览"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Close search"
+msgstr "关闭搜索"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Close Split"
+msgstr "关闭分割"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Close subagent"
+msgstr "关闭子代理"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents"
+msgstr "关闭子代理"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Close subagents panel"
+msgstr "关闭子代理面板"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+msgid "Close tab"
+msgstr "关闭选项卡"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Close to tray"
+msgstr "关闭到托盘"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Close usage details"
+msgstr "关闭使用详情"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Closed"
+msgstr "已关闭"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Code copied. "
+msgstr "代码已复制。"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse"
+msgstr "折叠"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Collapse {label}"
+msgstr "折叠{label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Collapse all"
+msgstr "全部折叠"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse All"
+msgstr "全部折叠"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Collapse all folders"
+msgstr "折叠所有文件夹"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Collapse composer"
+msgstr "折叠输入框"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Collapse error"
+msgstr "折叠错误"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Collapse terminal composer"
+msgstr "折叠终端输入框"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Collapse todo dock"
+msgstr "折叠待办事项面板"
+
+#. Accessible label for the command palette search input
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Command"
+msgstr "命令"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Command (e.g., npm run dev)"
+msgstr "命令(例如 npm run dev)"
+
+#: src/renderer/commands/CommandPalette.tsx
+#: src/renderer/components/thread/ThreadCommandPanel.tsx
+msgid "Commands"
+msgstr "命令"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment"
+msgstr "评论"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Comment posted"
+msgstr "评论已发布"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "commented"
+msgstr "评论了"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit"
+msgstr "提交"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Create PR"
+msgstr "提交并创建 PR"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Commit & PR language"
+msgstr "提交与 PR 语言"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+msgid "Commit & Push"
+msgstr "提交&推送"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Commit failed: {detail}"
+msgstr "提交失败:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message"
+msgstr "提交信息"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit message (Ctrl+Enter)"
+msgstr "提交消息(Ctrl+Enter)"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Commit Message Generation"
+msgstr "提交消息生成"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Commit options"
+msgstr "提交选项"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Commits"
+msgstr "提交"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Compacting context"
+msgstr "压缩上下文"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Complete"
+msgstr "完成"
+
+#. placeholder {0}: agentAuthMethod.name
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Complete {0} sign-in before this thread can run."
+msgstr "在此线程运行之前完成{0}登录。"
+
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in for {env}."
+msgstr "完成{env}的{0}登录。"
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {1}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in or save {1} credentials."
+msgstr "完成{0}登录或保存{1}凭据。"
+
+#. placeholder {0}: agentAuth.method.name
+#. placeholder {0}: singleMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Complete {0} sign-in."
+msgstr "完成{0}登录。"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Complete the prompts in this terminal. Closes when finished."
+msgstr "完成此终端中的提示。完成后关闭。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "completed"
+msgstr "已完成"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Composer"
+msgstr "Composer"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Config directory"
+msgstr "配置目录"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Conflict Resolver"
+msgstr "冲突解决者"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+msgid "Conflicts"
+msgstr "冲突"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Console"
+msgstr "控制台"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context"
+msgstr "上下文"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted"
+msgstr "上下文压缩"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted from {before} tokens"
+msgstr "已从 {before} 个标记压缩上下文"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context compacted: {before} → {after} tokens"
+msgstr "上下文压缩:{before}→{after}标记"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Context extraction ({0})"
+msgstr "上下文提取 ({0})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted from {before} tokens"
+msgstr "从{before}标记手动压缩上下文"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ContextCompaction.tsx
+msgid "Context manually compacted: {before} → {after} tokens"
+msgstr "手动压缩上下文:{before}→{after}标记"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Context transferred to {targetLabel}"
+msgstr "上下文转移到{targetLabel}"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Context usage"
+msgstr "上下文使用"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Continue"
+msgstr "继续"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/components/thread/ThreadView.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Continue in another provider"
+msgstr "继续使用另一个提供商"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Continue in..."
+msgstr "在其他工具中继续..."
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "Control which files appear in the @file mention search. Per-project "
+"overrides live in each project's settings."
+msgstr "控制哪些文件出现在 @file 提及搜索中。可在各项目的设置中进行项目级覆盖。"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "Conversation"
+msgstr "对话"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copied"
+msgstr "已复制"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copied to clipboard"
+msgstr "已复制到剪贴板"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Copy"
+msgstr "复制"
+
+#. placeholder {0}: activeDeviceCode.providerLabel
+#. placeholder {1}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Copy {0} device code {1}"
+msgstr "复制{0}设备代码{1}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Copy Current URL"
+msgstr "复制当前网址"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "Copy details"
+msgstr "复制详细信息"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy diagnostics"
+msgstr "复制诊断"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Copy failed"
+msgstr "复制失败"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Copy ignored files"
+msgstr "复制忽略的文件"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Copy image"
+msgstr "复制图片"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Copy message"
+msgstr "复制消息"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Path"
+msgstr "复制路径"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+msgid "Copy Relative Path"
+msgstr "复制相对路径"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Copy uncommitted changes here (keeps them on this branch)"
+msgstr "将未提交的更改复制到此处(将它们保留在此分支上)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not abort the merge: {detail}"
+msgstr "无法中止合并:{detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not complete the merge"
+msgstr "无法完成合并"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Could not extract context."
+msgstr "无法提取上下文。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Could not generate commit message: {detail}"
+msgstr "无法生成提交消息:{detail}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Could not read file."
+msgstr "无法读取文件。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't clone the repository."
+msgstr "无法克隆存储库。"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Couldn't copy your uncommitted changes into the new worktree — they "
+"remain on the current branch."
+msgstr "无法将未提交的更改复制到新工作树中 - 它们保留在当前分支上。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Couldn't create the project."
+msgstr "无法创建项目。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Couldn't list repositories."
+msgstr "无法列出存储库。"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Couldn't load your profile stats."
+msgstr "无法加载你的资料统计。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create Draft PR"
+msgstr "创建 PR 草稿"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create file"
+msgstr "创建文件"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch"
+msgstr "创建新分支"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Create new branch..."
+msgstr "创建新分支..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Create PR"
+msgstr "创建 PR"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR (Auto)"
+msgstr "创建 PR(自动)"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Create PR action"
+msgstr "创建 PR 操作"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Create PR…"
+msgstr "创建 PR…"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Create project"
+msgstr "创建项目"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Create Pull Request"
+msgstr "创建拉取请求"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Create task"
+msgstr "创建任务"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Create:"
+msgstr "创建:"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Created a worktree on \"{newBranch}\", but the changes conflicted and "
+"remain in a git stash — resolve them in the worktree."
+msgstr "在“{newBranch}”上创建了一个工作树,但更改发生冲突并保留在 git 存储中 - 在工作树中解决它们。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Credentials are configured."
+msgstr "凭证已配置。"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Credits"
+msgstr "鸣谢"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "current streak"
+msgstr "当前连续天数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Current streak"
+msgstr "当前连续天数"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Custom"
+msgstr "定制"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Custom commands available from the project context menu (right-click)."
+msgstr "可从项目上下文菜单(右键单击)使用自定义命令。"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Dark"
+msgstr "深色"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Decline"
+msgstr "拒绝"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Default"
+msgstr "默认"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Default Create PR action"
+msgstr "默认创建 PR 操作"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Default new thread"
+msgstr "默认新线程"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Default permissions"
+msgstr "默认权限"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Default thread removal"
+msgstr "默认线程删除"
+
+#. Thread remove action: delete permanently
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Delete"
+msgstr "删除"
+
+#. placeholder {0}: branch.name
+#. placeholder {0}: entry.group.groupName
+#. placeholder {0}: thread.title
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Delete {0}"
+msgstr "删除{0}"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Delete branch?"
+msgstr "删除分支?"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete file"
+msgstr "删除文件"
+
+#. Tooltip: permanently delete the archived thread
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete permanently"
+msgstr "永久删除"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Delete thread"
+msgstr "删除线程"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Delete Thread"
+msgstr "删除线程"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Delete thread?"
+msgstr "删除线程?"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Delete to-do"
+msgstr "删除待办事项"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Delete Worktree"
+msgstr "删除工作树"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Delete worktree {0}"
+msgstr "删除工作树{0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Delete:"
+msgstr "删除:"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Deleting"
+msgstr "正在删除"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/helpers.ts
+msgid "Deny"
+msgstr "拒绝"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Deny and tell the agent what to do differently…"
+msgstr "拒绝并告诉代理换一种做法……"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrHeaderCard.tsx
+msgid "Description"
+msgstr "描述"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Description (optional)"
+msgstr "说明(可选)"
+
+#. placeholder {0}: detectionScopeLabel(status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>({0})0>"
+msgstr "检测到<0>({0})0>"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>(local)0>"
+msgstr "检测到<0>(本地)0>"
+
+#. placeholder {0}: status.envDistro ? `WSL (${status.envDistro})` : "WSL"
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Detected <0>{0}0>"
+msgstr "检测到 <0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Detecting agents…"
+msgstr "正在检测代理……"
+
+#. Settings section: developer/debug tools
+#. Settings section: developer/debug tools
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Dev"
+msgstr "开发"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Development-only overrides. Only visible in the LIGHTCODE DEV build."
+msgstr "仅开发覆盖。仅在 LIGHTCODE DEV 版本中可见。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Device used by the composer voice input button."
+msgstr "输入框语音输入按钮使用的设备。"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Disable"
+msgstr "禁用"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable {tierLabel} effort"
+msgstr "禁用{tierLabel}级别"
+
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Disable Browser MCP"
+msgstr "禁用浏览器 MCP"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Disable CLI hook plugin (L1)"
+msgstr "禁用 CLI 挂钩插件 (L1)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Disable Project"
+msgstr "禁用项目"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Disable tiers an external provider collapses (e.g. keep only High and "
+"Max)."
+msgstr "禁用外部服务商合并的级别(例如仅保留High和Max)。"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Disabled"
+msgstr "已禁用"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Discard unsaved changes in {path}?"
+msgstr "放弃{path}中未保存的更改?"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+msgid "Discard unsaved editor changes?"
+msgstr "放弃未保存的编辑器更改?"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Discovering coding agents…"
+msgstr "正在发现编码代理……"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss"
+msgstr "关闭"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Dismiss error"
+msgstr "忽略错误"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "dismissed review"
+msgstr "驳回审查"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Display name in the sidebar."
+msgstr "在侧边栏中显示名称。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Docs"
+msgstr "文档"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Don't ask again"
+msgstr "不要再问"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Don't show hook install proposal"
+msgstr "不显示挂钩安装建议"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "done"
+msgstr "完成"
+
+#. Notification status: thread is done
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Done"
+msgstr "完成"
+
+#: src/renderer/notifications.ts
+msgid "Done · Waiting for your input"
+msgstr "完成 · 等待您的输入"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Download image"
+msgstr "下载图片"
+
+#. placeholder {0}: name || t`the chosen folder`
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Downloading into “{0}”. This can take a moment for large repositories."
+msgstr "下载到“{0}”。对于大型存储库,这可能需要一些时间。"
+
+#. placeholder {0}: Math.round(downloadProgress.progress)
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model {0}%"
+msgstr "下载语音模型{0}%"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Downloading voice model..."
+msgstr "正在下载语音模型..."
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Downloading{v} — {percent}%{speedSuffix}"
+msgstr "下载{v}—{percent}%{speedSuffix}"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Downloading{versionLabel}"
+msgstr "正在下载{versionLabel}"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Draft"
+msgstr "草稿"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Drag to reorder how providers appear in the model picker."
+msgstr "拖动以重新排序提供程序在模型选择器中的显示方式。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Drag to reorder; double-click to edit"
+msgstr "拖动即可重新排序;双击进行编辑"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Drop here to attach"
+msgstr "拖放到此处以附加"
+
+#: src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+msgid "Drops incoming hook envelopes on the supervisor so agents fall back to "
+"L2 (OSC 9;4 progress) without touching install or iTerm2 notifications. "
+"Takes effect on the next hook event — no restart needed."
+msgstr "在监管进程上丢弃传入的挂钩信封,以便代理回退到 L2(OSC 9;4 进度),而无需触及安装或 iTerm2 "
+"通知。在下一个挂钩事件时生效——无需重启。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "e.g. Work"
+msgstr "例如工作"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Edit"
+msgstr "编辑"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit file"
+msgstr "编辑文件"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Edit profile"
+msgstr "编辑资料"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+msgid "Edit:"
+msgstr "编辑:"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+msgid "Editor"
+msgstr "编辑器"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Editor LSP"
+msgstr "编辑器 LSP"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Editor tabs"
+msgstr "编辑器选项卡"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Effort and context"
+msgstr "思考强度与上下文"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Effort levels"
+msgstr "思考级别"
+
+#. About page label: Electron framework version
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Electron"
+msgstr "Electron"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "Enable"
+msgstr "启用"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Enable {tierLabel} effort"
+msgstr "启用{tierLabel}级别"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Enable language server support for type checking, completions, and "
+"diagnostics. Requires a language server installed."
+msgstr "启用语言服务器对类型检查、完成和诊断的支持。需要安装语言服务器。"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Enable microphone access in your system settings, then try again."
+msgstr "在系统设置中启用麦克风访问,然后重试。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Enable notifications"
+msgstr "启用通知"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Enable Project"
+msgstr "启用项目"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Enable providers in settings"
+msgstr "在设置中启用提供商"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Enabled"
+msgstr "启用"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Enables <0>cookies0> and <1>storage1>. Cookies can contain session "
+"tokens and storage often holds auth state — only enable when you trust "
+"both the agent and the sites it visits."
+msgstr "启用<0>cookie0>和<1>存储1>。Cookie "
+"可以包含会话令牌,并且存储通常保存身份验证状态——仅当您信任代理及其访问的站点时才启用。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Enhanced (Hooks)"
+msgstr "增强型(挂钩)"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Enter a repository URL."
+msgstr "输入存储库 URL。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Enter plan mode"
+msgstr "进入计划模式"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Environment"
+msgstr "环境"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable name"
+msgstr "环境变量名称"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variable value"
+msgstr "环境变量值"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Environment variables"
+msgstr "环境变量"
+
+#: src/renderer/components/thread/ChatPane/parts/items/FileChange.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "error"
+msgstr "错误"
+
+#. Notification status: agent error
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/components/thread/ChatPane/parts/items/ErrorItem.tsx
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/components/ui/toastContent.ts
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Error"
+msgstr "错误"
+
+#: src/renderer/notifications.ts
+msgid "Error · Agent encountered an error"
+msgstr "错误 · 代理遇到错误"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Exclude patterns"
+msgstr "排除模式"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Exit plan mode"
+msgstr "退出计划模式"
+
+#. placeholder {0}: renderedSession.failedExitCode
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Exited with code {0}. Close to retry."
+msgstr "已退出,退出码为 {0}。关闭以重试。"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand"
+msgstr "展开"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Expand {label}"
+msgstr "展开{label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Expand all"
+msgstr "全部展开"
+
+#: src/renderer/components/thread/ThreadErrorDock.tsx
+msgid "Expand error"
+msgstr "展开错误"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Expand todo dock"
+msgstr "展开待办事项停靠栏"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External"
+msgstr "外部"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "External provider"
+msgstr "外部服务商"
+
+#: src/renderer/components/thread/threadDraftViewHelpers.ts
+msgid "Extra High"
+msgstr "超高"
+
+#. placeholder {0}: sourceAgent?.label ?? thread.agentKind
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Extracting context from {0}..."
+msgstr "从{0}中提取上下文 ..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "failed"
+msgstr "失败了"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to close pull request: {detail}"
+msgstr "无法关闭拉取请求:{detail}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to create pull request: {detail}"
+msgstr "无法创建拉取请求:{detail}"
+
+#: src/renderer/views/ProfileOverlay/useProfileData.ts
+msgid "Failed to load profile stats."
+msgstr "加载资料统计失败。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Failed to merge pull request: {detail}"
+msgstr "无法合并拉取请求:{detail}"
+
+#: src/renderer/components/thread/buildModelPickerControls.tsx
+msgid "Fast"
+msgstr "快"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Fast mode"
+msgstr "快速模式"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest (Whisper tiny)"
+msgstr "最快(Whisper tiny)"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Fastest uses Whisper tiny; Better uses Whisper base."
+msgstr "“最快”使用 Whisper tiny;“更好”使用 Whisper base。"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Favorites"
+msgstr "收藏夹"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Fetch"
+msgstr "获取"
+
+#: src/renderer/components/composer/ComposerAddMenu.tsx
+msgid "File"
+msgstr "文件"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "File changes will appear here."
+msgstr "文件更改将显示在此处。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File is too large to preview."
+msgstr "文件太大,无法预览。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File no longer exists on disk."
+msgstr "文件不再存在于磁盘上。"
+
+#. placeholder {0}: entry.insertions + entry.deletions
+#. placeholder {0}: file.insertions + file.deletions
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "File too large to display ({0, plural, one {# line changed} other {# "
+"lines changed}})"
+msgstr "文件太大无法显示({0, plural, one {# 行已更改} other {# 行已更改}})"
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "File uses an unsupported encoding."
+msgstr "文件使用不受支持的编码。"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Files"
+msgstr "文件"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.worktreeBranch
+#. placeholder {0}: thread.worktreeBranch ?? thread.title
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Files for {0}"
+msgstr "{0}的文件"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Files matching these globs are hidden from the @file mention search."
+msgstr "与这些 glob 匹配的文件在 @file 提及搜索中隐藏。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Finish your review"
+msgstr "完成您的审查"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Finished"
+msgstr "完成"
+
+#: src/renderer/notifications.ts
+msgid "Finished · Waiting for your input"
+msgstr "已完成·等待您的输入"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Antigravity CLI integration using Lightcode's native "
+"runtime."
+msgstr "使用 Lightcode 的本机运行时实现一流的 Antigravity CLI 集成。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Claude Code integration using Lightcode's native SDK "
+"runtime."
+msgstr "使用 Lightcode 的本机 SDK 运行时进行一流的 Claude Code 集成。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Codex CLI integration using Lightcode's native app-server "
+"runtime."
+msgstr "使用 Lightcode 的本机应用程序服务器运行时进行一流的 Codex CLI 集成。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Command Code CLI integration using Lightcode's native "
+"runtime."
+msgstr "使用 Lightcode 的本机运行时实现一流的 Command Code CLI 集成。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class Grok Build CLI integration using Lightcode's native runtime."
+msgstr "使用 Lightcode 的本机运行时进行一流的 Grok Build CLI 集成。"
+
+#: src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+msgid "First-class OpenCode integration using Lightcode's native SDK runtime."
+msgstr "使用 Lightcode 的本机 SDK 运行时进行一流的 OpenCode 集成。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+msgid "Fix in Agent"
+msgstr "在代理中修复"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Folder name"
+msgstr "文件夹名称"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force Delete"
+msgstr "强制删除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Force delete? Unmerged changes will be lost."
+msgstr "强行删除?未合并的更改将会丢失。"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Fork"
+msgstr "派生"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Format files"
+msgstr "格式化文件"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Forward"
+msgstr "前进"
+
+#. placeholder {0}: activeRequest.providerLabel
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Found a signed-in {0} session."
+msgstr "找到已登录的{0}会话。"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frost the sidebar with the system blur material (vibrancy), echoing "
+"recent macOS. Falls back to a translucent tint where unsupported."
+msgstr "使用系统模糊材质(vibrancy)为侧边栏添加磨砂效果,呼应新版macOS。不支持时回退为半透明着色。"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Frosting of the {appearance}-mode sidebar over the system blur. Higher "
+"holds the theme color; lower shows more of what's behind."
+msgstr "在系统模糊之上为{appearance}模式侧边栏添加磨砂效果。数值越高越保留主题色;越低则越多透出背后内容。"
+
+#: src/renderer/components/providers/codex/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Full access"
+msgstr "完全访问权限"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Fullscreen overlay"
+msgstr "全屏覆盖"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "General"
+msgstr "一般"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Generate commit message"
+msgstr "生成提交消息"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate PR summary"
+msgstr "生成 PR 摘要"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Generate with AI"
+msgstr "用人工智能生成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/imageViewSource.ts
+msgid "Generated image"
+msgstr "生成的图片"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates commit messages from staged changes."
+msgstr "从分阶段更改生成提交消息。"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Generates short titles for new threads."
+msgstr "为新线程生成短标题。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Get task"
+msgstr "获取任务"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Git"
+msgstr "git"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Git {command} failed: {detail}"
+msgstr "Git {command}失败:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Git Review"
+msgstr "git 审查"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Git review mode"
+msgstr "Git 审核模式"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}"
+msgstr "{0}的 Git 状态"
+
+#. placeholder {0}: props.projectName
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Git status for {0}: not a Git repository"
+msgstr "{0}的 Git 状态:不是 Git 存储库"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "GitHub Repository"
+msgstr "GitHub 存储库"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Gitignored files to copy from the main project into each new worktree. "
+"Gitignore-style patterns, one per line (e.g., <0>.env.*0>)."
+msgstr "Gitignored 文件从主项目复制到每个新工作树中。 Gitignore 风格的模式,每行一个(例如 <0>.env.*0>)。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "GLM 5.2 (optional label)"
+msgstr "GLM 5.2(可选标签)"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Goal"
+msgstr "目标"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Goals set"
+msgstr "已设目标"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Group"
+msgstr "分组"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Group open threads"
+msgstr "对打开的线程进行分组"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "GUI chat font size"
+msgstr "GUI聊天字体大小"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "handle"
+msgstr "用户名"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Handle"
+msgstr "用户名"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Hard Reload"
+msgstr "硬重载"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Hidden resumable threads are swept every 5 minutes and unloaded after "
+"this idle age."
+msgstr "隐藏的可恢复线程每 5 分钟清理一次,并在此空闲期限后卸载。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Hide"
+msgstr "隐藏"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Hide all"
+msgstr "全部隐藏"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Hide browser"
+msgstr "隐藏浏览器"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide canonical runtime item inspector"
+msgstr "隐藏规范运行时项目检查器"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Hide context usage details"
+msgstr "隐藏上下文使用详细信息"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+msgid "Hide models you don't use from the model picker across every provider."
+msgstr "从每个提供商的模型选择器中隐藏您不使用的模型。"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+msgid "Hide panel"
+msgstr "隐藏面板"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Hide runtime debug panel"
+msgstr "隐藏运行时调试面板"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Hide sidebar"
+msgstr "隐藏侧边栏"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Hide terminal"
+msgstr "隐藏终端"
+
+#: src/renderer/views/HomeView.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Home"
+msgstr "首页"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Home scope"
+msgstr "主页范围"
+
+#. placeholder {0}: agent.id
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "ID: {0}"
+msgstr "编号:{0}"
+
+#. Microphone input level when not testing
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Idle"
+msgstr "空闲"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Image"
+msgstr "图片"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Image preview"
+msgstr "图片预览"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Inactive"
+msgstr "不活跃"
+
+#. Badge on an exclude pattern inherited from a lower scope
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "inherited"
+msgstr "继承的"
+
+#. placeholder {0}: globalUseIgnoreFiles ? t`on` : t`off`
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Inheriting the global setting (currently {0})."
+msgstr "继承全局设置(当前为{0})。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Initialize Repository"
+msgstr "初始化存储库"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Input level"
+msgstr "输入电平"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Inspect canonical runtime items"
+msgstr "检查规范运行时项目"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "install"
+msgstr "安装"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install"
+msgstr "安装"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0} for {env}."
+msgstr "为{env}安装{0}。"
+
+#. placeholder {0}: formatAgentList(props.agentStatuses.map((s) => s.label))
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "Install {0} to create a thread."
+msgstr "安装{0}以创建线程。"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {0}."
+msgstr "安装{0}。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Install {env}"
+msgstr "安装{env}"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Install CLI hooks"
+msgstr "安装 CLI 挂钩"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install in WSL: {distro}"
+msgstr "在 WSL 中安装:{distro}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install native providers first; use ACP for additional protocol agents."
+msgstr "首先安装原生提供程序;使用 ACP 作为附加协议代理。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Install on Windows"
+msgstr "在 Windows 上安装"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Install packages"
+msgstr "安装包"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install update"
+msgstr "安装更新"
+
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Install v{updateVersion}"
+msgstr "安装 v{updateVersion}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Install v{version}"
+msgstr "安装 v{version}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installed"
+msgstr "已安装"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Installing"
+msgstr "安装中"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+msgid "Installing in this terminal. Closes when finished."
+msgstr "在此终端中安装。完成后关闭。"
+
+#: src/renderer/state/slices/runtimeEventSlice.ts
+msgid "Interrupted: agent session ended before completion."
+msgstr "已中断:代理会话在完成之前结束。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Italic"
+msgstr "斜体"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "just now"
+msgstr "刚才"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+msgid "Keep Branch"
+msgstr "保留分支"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Keep the system awake while any thread is actively working."
+msgstr "当任何线程正在工作时保持系统唤醒状态(不休眠)。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Kill bash"
+msgstr "终止 bash"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language"
+msgstr "语言"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Language for AI-generated commit messages and pull request summaries. "
+"Thread titles always follow the app language."
+msgstr "AI 生成的提交信息和拉取请求摘要所使用的语言。线程标题始终跟随应用语言。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Language the speech model should expect when transcribing composer "
+"dictation."
+msgstr "语音模型在转录编辑器口述输入时应预期的语言。"
+
+#. placeholder {0}: agent.lastToolName
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Last tool: <0>{0}0>"
+msgstr "最后一个工具:<0>{0}0>"
+
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Launch thread"
+msgstr "启动线程"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Launching…"
+msgstr "正在启动…"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Leave a comment"
+msgstr "发表评论"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "Less"
+msgstr "少"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Lets agents call <0>eval0> to run arbitrary JavaScript inside the "
+"embedded page. Off by default — turn on only when you trust the loaded "
+"sites and the agent."
+msgstr "让代理调用 <0>eval0> 在嵌入页面内运行任意 JavaScript。默认关闭 - 仅当您信任加载的站点和代理时才打开。"
+
+#. About page label: software license row
+#. Link to the license file
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "License"
+msgstr "许可证"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "lifetime tokens"
+msgstr "累计token数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Lifetime tokens"
+msgstr "累计token数"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Light"
+msgstr "浅色"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List"
+msgstr "列表"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "List packages"
+msgstr "列出包"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "List tasks"
+msgstr "列出任务"
+
+#: src/renderer/components/common/PixelLoader.tsx
+msgid "Loading"
+msgstr "加载中"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Loading accounts…"
+msgstr "正在加载帐户..."
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+msgid "Loading diff..."
+msgstr "加载差异..."
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Loading editor…"
+msgstr "正在加载编辑器..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/useReadAbsoluteFile.tsx
+msgid "Loading file…"
+msgstr "正在加载文件..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Loading notes…"
+msgstr "正在加载笔记..."
+
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "Loading PR…"
+msgstr "正在加载 PR…"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Loading registry..."
+msgstr "正在加载注册表..."
+
+#: src/renderer/app.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Loading…"
+msgstr "加载中..."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "local"
+msgstr "本地"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Local"
+msgstr "本地"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Local changes need to be stashed before pulling from {branch}"
+msgstr "从 {branch} 拉取之前需要暂存(stash)本地更改"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Location"
+msgstr "位置"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging in"
+msgstr "正在登录"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logging out"
+msgstr "正在注销"
+
+#: src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "login"
+msgstr "登录"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login"
+msgstr "登录"
+
+#. placeholder {0}: detectionScopeLabel(entry.status)
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Login {0}"
+msgstr "登录{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Login required"
+msgstr "需要登录"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout"
+msgstr "退出"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Logout {env}"
+msgstr "注销{env}"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "longest streak"
+msgstr "最长连续天数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest streak"
+msgstr "最长连续天数"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Longest task"
+msgstr "最长任务"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Make the sidebar translucent — the system blur material on Windows 11, a "
+"translucent tint elsewhere."
+msgstr "将侧边栏设为半透明——在Windows 11上使用系统模糊材质,在其他平台上使用半透明着色。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Manual order"
+msgstr "手动排序"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+msgid "Mark All Done"
+msgstr "标记全部完成"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as done"
+msgstr "标记为已完成"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Mark as not done"
+msgstr "标记为未完成"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Mark done"
+msgstr "标记完成"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Mark Done"
+msgstr "标记完成"
+
+#: src/renderer/i18n/locales.ts
+msgid "Match app language"
+msgstr "跟随应用语言"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Match your system, or force light or dark."
+msgstr "匹配您的系统,或强制使用浅色或深色。"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize"
+msgstr "最大化"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Maximize browser"
+msgstr "最大化浏览器"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "MCP servers"
+msgstr "MCP服务器"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge & Remove"
+msgstr "合并和删除"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge conflicts must be resolved."
+msgstr "必须解决合并冲突。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge failed"
+msgstr "合并失败"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts"
+msgstr "合并有冲突"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Merge has conflicts:\n"
+"{files}"
+msgstr "合并有冲突:{files}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Locally & Remove Worktree"
+msgstr "本地合并并删除工作树"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge method"
+msgstr "合并方式"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge options"
+msgstr "合并选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Commit"
+msgstr "合并 PR:提交"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Rebase"
+msgstr "合并 PR:Rebase"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merge PR: Squash"
+msgstr "合并 PR:Squash"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Merge to Source"
+msgstr "合并到源"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Merge Worktree"
+msgstr "合并工作树"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Merged"
+msgstr "已合并"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Merging is blocked"
+msgstr "合并被阻止"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Messages sent"
+msgstr "已发送消息"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone"
+msgstr "麦克风"
+
+#. Fallback microphone device name with index
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone {fallbackNumber}"
+msgstr "麦克风{fallbackNumber}"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone access is off."
+msgstr "麦克风访问已关闭。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone input level"
+msgstr "麦克风输入电平"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "Microphone permission was denied."
+msgstr "麦克风权限被拒绝。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Microphone testing is not available in this environment."
+msgstr "在此环境中无法进行麦克风测试。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize browser to right panel"
+msgstr "将浏览器最小化到右侧面板"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Minimize to panel"
+msgstr "最小化到面板"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Mode"
+msgstr "模式"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model id"
+msgstr "模型id"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Model label"
+msgstr "模型标签"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Model order"
+msgstr "模型排序"
+
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Model usage"
+msgstr "模型用量"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Models"
+msgstr "模型"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Modes"
+msgstr "模式"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+msgid "More"
+msgstr "多"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/ApprovalActions.tsx
+msgid "More approval options"
+msgstr "更多审批选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More commit options"
+msgstr "更多提交选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "More PR actions"
+msgstr "更多 PR 操作"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "More PR options"
+msgstr "更多 PR 选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "More pull request options"
+msgstr "更多拉取请求选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "More sync options"
+msgstr "更多同步选项"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most active hour"
+msgstr "最活跃时段"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Most used plugins"
+msgstr "最常用插件"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used provider"
+msgstr "最常用服务商"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Most used reasoning"
+msgstr "最常用思考级别"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Move"
+msgstr "移动"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Move changes to a new worktree"
+msgstr "将更改移至新工作树"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Move todo dock to right panel"
+msgstr "将待办事项停靠栏移至右侧面板"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Moved your changes into a new worktree on \"{newBranch}\". "
+"\"{currentBranch}\" is now clean."
+msgstr "已将您的更改移至“{newBranch}”上的新工作树中。“{currentBranch}”现在是干净的。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "Moving changes…"
+msgstr "正在移动更改…"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Name"
+msgstr "名称"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Name your project and choose where to create it."
+msgstr "为您的项目命名并选择创建位置。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native"
+msgstr "原生"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native Providers"
+msgstr "原生提供商"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Native support"
+msgstr "原生支持"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs approval"
+msgstr "需要批准"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Needs Attention"
+msgstr "需要注意"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Approval required"
+msgstr "需要注意 · 需要批准"
+
+#: src/renderer/notifications.ts
+msgid "Needs Attention · Reply required"
+msgstr "需要关注 · 需要回复"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Needs reply"
+msgstr "需要回复"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action command"
+msgstr "新动作命令"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "New action name"
+msgstr "新动作名称"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New branch name..."
+msgstr "新分支名称..."
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile config directory"
+msgstr "新的 Claude 配置文件目录"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "New Claude profile name"
+msgstr "新 Claude 配置文件名称"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New File"
+msgstr "新文件"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "New Folder"
+msgstr "新建文件夹"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "New project"
+msgstr "新项目"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "New tab"
+msgstr "新标签页"
+
+#: src/renderer/components/thread/ThreadDraftChrome.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread"
+msgstr "新线程"
+
+#: src/renderer/commands/registry.ts
+msgid "New Thread"
+msgstr "新线程"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "New thread — {projectName}"
+msgstr "新线程 —{projectName}"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "New thread (draft)"
+msgstr "新线程(草稿)"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "New thread from this to-do"
+msgstr "基于此待办事项的新线程"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "New Thread in Worktree"
+msgstr "工作树中的新线程"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+msgid "New worktree"
+msgstr "新工作树"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Next image"
+msgstr "下一张图片"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "No active browser tab"
+msgstr "没有活动的浏览器选项卡"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No active session"
+msgstr "没有活动会话"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No activity yet."
+msgstr "暂无活动。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "No additional Claude profiles."
+msgstr "没有其他 Claude 配置文件。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+msgid "No agent available to generate PR summary"
+msgstr "没有代理可以生成 PR 摘要"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No agents in this phase."
+msgstr "此阶段没有代理。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No agents installed yet"
+msgstr "尚未安装代理"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No agents installed."
+msgstr "没有安装代理。"
+
+#: src/renderer/views/ProfileOverlay/parts/AiActions.tsx
+msgid "No AI commits, PRs, or conflict resolutions tracked yet."
+msgstr "暂未记录任何AI提交、PR或冲突解决。"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "No archived threads."
+msgstr "没有存档的线程。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "No branches found"
+msgstr "未找到分支"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "No browser tab open"
+msgstr "没有打开浏览器选项卡"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+msgid "No changes"
+msgstr "没有变化"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "No changes to display"
+msgstr "没有显示任何变化"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "No checks reported for this PR."
+msgstr "没有为此 PR 报告检查。"
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "No commands found"
+msgstr "没有找到命令"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "No commits found."
+msgstr "没有找到提交。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No content streams."
+msgstr "没有内容流。"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "No conversation yet. Be the first to comment."
+msgstr "还没有对话。成为第一个发表评论的人。"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No data yet"
+msgstr "还没有数据"
+
+#: src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+msgid "No data yet."
+msgstr "暂无数据。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No description"
+msgstr "无描述"
+
+#. placeholder {0}: entry.filePath
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+msgid "No diff available for {0}"
+msgstr "{0}没有可用的差异"
+
+#: src/renderer/components/diff/DiffCardList.tsx
+msgid "No diff for {visiblePath}"
+msgstr "{visiblePath}没有差异"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "No file checkpoint is stored for this message."
+msgstr "没有为此消息存储文件检查点。"
+
+#. placeholder {0}: tree.searchQuery
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "No files match \"{0}\"."
+msgstr "没有文件匹配“{0}”。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No GitHub CLI accounts found. Sign in with <0>gh auth login0>, or "
+"<1>paste a clone URL1>."
+msgstr "未找到 GitHub CLI 帐户。使用<0>gh auth login0>登录,或<1>粘贴克隆网址1>。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No matches for “{query}”."
+msgstr "没有匹配“{query}”。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No matches."
+msgstr "没有匹配项。"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "No matching agents."
+msgstr "没有匹配的代理。"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No matching threads"
+msgstr "没有匹配的线程"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No MCP tools used yet."
+msgstr "暂未使用任何MCP工具。"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "No messages yet"
+msgstr "还没有消息"
+
+#: src/renderer/components/composer/voiceError.ts
+msgid "No microphone found."
+msgstr "找不到麦克风。"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "No models found"
+msgstr "未找到模型"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "No other agents installed"
+msgstr "没有安装其他代理"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "No patterns."
+msgstr "没有模式。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "No phases yet."
+msgstr "还没有阶段。"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "No prompts"
+msgstr "无提示"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "No providers are being tracked."
+msgstr "未跟踪任何提供商。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "No providers ready yet"
+msgstr "尚无就绪的提供商"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "No remote configured. Add a remote to enable push and pull."
+msgstr "未配置远程仓库。添加远程仓库以启用推送和拉取。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "No repositories found."
+msgstr "未找到存储库。"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "No runtime items yet for this thread."
+msgstr "该线程还没有运行时项目。"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No skills used yet."
+msgstr "暂未使用任何技能。"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "No speech detected."
+msgstr "未检测到语音。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+msgid "No staged changes"
+msgstr "没有暂存的更改"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No subagents used yet."
+msgstr "暂未使用任何子智能体。"
+
+#: src/renderer/components/thread/ThreadDraftView.tsx
+msgid "No supported agents detected"
+msgstr "未检测到支持的代理"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "No threads"
+msgstr "没有线程"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "No threads yet."
+msgstr "暂无对话。"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "No windows reported"
+msgstr "没有报告窗口"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "No worktree"
+msgstr "无工作树"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "No wrap"
+msgstr "不换行"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "None"
+msgstr "无"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Not a git repository"
+msgstr "不是 git 存储库"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Not a Git repository"
+msgstr "不是 Git 存储库"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Not found"
+msgstr "未找到"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Not installed"
+msgstr "未安装"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not running"
+msgstr "未运行"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Not signed in"
+msgstr "未登录"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Not supported"
+msgstr "不支持"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+msgid "Notes"
+msgstr "注释"
+
+#: src/renderer/views/ProfileOverlay/parts/PluginUsage.tsx
+msgid "Nothing tracked yet. It'll appear here as you use it."
+msgstr "暂无记录。使用过程中将在此显示。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Notifications"
+msgstr "通知"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify for L2 CLI threads"
+msgstr "通知 L2 CLI 线程"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Notify me about"
+msgstr "通知我有关"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "off"
+msgstr "关闭"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+msgid "Older"
+msgstr "更早"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "on"
+msgstr "开"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Only when unfocused"
+msgstr "仅当窗口失去焦点时"
+
+#: src/renderer/notifications.ts
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrMetaRow.tsx
+msgid "Open"
+msgstr "打开"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Open {label}"
+msgstr "打开{label}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Open a terminal"
+msgstr "打开终端"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Open a thread first to attach to it."
+msgstr "首先打开一个线程以附加到它。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open All"
+msgstr "打开全部"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Open all in group"
+msgstr "组内全部打开"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Open as page"
+msgstr "打开为页面"
+
+#. Context menu action: open the new thread in a side-by-side panel
+#: src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+msgid "Open as Panel"
+msgstr "作为面板打开"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Open browser"
+msgstr "打开浏览器"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Open check"
+msgstr "打开检查"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Command Palette"
+msgstr "打开命令面板"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+msgid "Open commit on GitHub"
+msgstr "在 GitHub 上打开提交"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Open conflict resolver in"
+msgstr "在以下位置打开冲突解决器"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Open dialog"
+msgstr "打开对话框"
+
+#: src/renderer/commands/registry.ts
+msgid "Open File"
+msgstr "打开文件"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Files"
+msgstr "打开文件"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Open fullscreen"
+msgstr "全屏打开"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+msgid "Open Git panel"
+msgstr "打开 Git 面板"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Git Review"
+msgstr "打开 Git 审查"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "Open git review as a right-side panel or a full page."
+msgstr "将 git review 作为右侧面板或整页打开。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open image preview"
+msgstr "打开图片预览"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Open in editor"
+msgstr "在编辑器中打开"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Open links in"
+msgstr "在以下位置打开链接"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+msgid "Open new tab"
+msgstr "打开新选项卡"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Open new threads as a full page or a side-by-side panel."
+msgstr "以整页或并排面板的形式打开新线程。"
+
+#. placeholder {0}: vis.prNumber
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Open PR #{0}"
+msgstr "打开 PR #{0}"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Open PR on GitHub"
+msgstr "在 GitHub 上打开 PR"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ImageView.tsx
+msgid "Open preview"
+msgstr "打开预览"
+
+#: src/renderer/commands/registry.ts
+msgid "Open Project Settings"
+msgstr "打开项目设置"
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Open requests"
+msgstr "未完成请求"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Open required URL"
+msgstr "打开需要的网址"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Open settings"
+msgstr "打开设置"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/composer/voiceError.ts
+msgid "Open Settings"
+msgstr "打开设置"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Open subagent: {0}"
+msgstr "打开子代理:{0}"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the effort picker"
+msgstr "打开工作量选择器"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Open the model picker"
+msgstr "打开模型选择器"
+
+#. placeholder {0}: request.receivedAt
+#. placeholder {1}: index + 1
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Opened {0} (#{1})"
+msgstr "已打开 {0} (#{1})"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Optional status hooks. Installed hooks update automatically; missing "
+"hooks are never installed automatically."
+msgstr "可选的状态挂钩。已安装的挂钩会自动更新;缺失的挂钩永远不会自动安装。"
+
+#: src/renderer/components/common/BranchSelector/parts/BranchFooterActions.tsx
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/common/OptionMenu.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+msgid "Options"
+msgstr "选项"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/userInputForm.tsx
+msgid "Or write a custom answer"
+msgstr "或者写一个自定义答案"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Outcome"
+msgstr "结果"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Over pace — runs out early"
+msgstr "节奏过快 — 提前用完"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Override Claude defaults — e.g. ANTHROPIC_BASE_URL and "
+"ANTHROPIC_AUTH_TOKEN."
+msgstr "覆盖Claude默认值——例如ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Overriding the global setting for this project."
+msgstr "覆盖该项目的全局设置。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package config"
+msgstr "包配置"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+msgid "Package manager"
+msgstr "包管理器"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Page"
+msgstr "页面"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Panel"
+msgstr "面板"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste"
+msgstr "粘贴"
+
+#. placeholder {0}: activeDeviceCode.code
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Paste <0>{0}0> here. Click to copy."
+msgstr "将 <0>{0}0> 粘贴到此处。点击复制。"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+msgid "Paste in input"
+msgstr "粘贴到输入中"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Paused"
+msgstr "已暂停"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+msgid "peak day"
+msgstr "最活跃日"
+
+#: src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+msgid "Peak day"
+msgstr "最活跃日"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanItem.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "pending"
+msgstr "待定"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "pending review"
+msgstr "待审查"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "Pending steer"
+msgstr "等待引导"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/PermissionDetailsLine.tsx
+msgid "permission"
+msgstr "权限"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Pick element"
+msgstr "选取元素"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionIconPicker.tsx
+msgid "Pick icon"
+msgstr "选择图标"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker failed"
+msgstr "选取器失败"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Picker returned no attachment"
+msgstr "选择器未返回任何附件"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Pin to top"
+msgstr "固定到顶部"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+msgid "Pinned"
+msgstr "已固定"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Plan"
+msgstr "计划"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play a sound when a notification is shown."
+msgstr "显示通知时播放声音。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Play notification sound"
+msgstr "播放通知声音"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Point this profile at a non-Anthropic provider (z.ai, …) with custom env "
+"vars, model names, and effort levels."
+msgstr "将此配置指向非Anthropic服务商(z.ai,…),并自定义环境变量、模型名称和思考级别。"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Popular editor themes adapted to Lightcode. Each follows the light or "
+"dark mode above."
+msgstr "流行的编辑器主题适应 Lightcode。每个都遵循上面的浅色或深色模式。"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "PR actions"
+msgstr "PR 操作"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR options"
+msgstr "PR 选项"
+
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "PR Review"
+msgstr "PR 审查"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+msgid "PR sections"
+msgstr "PR 部分"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "PR title (leave empty to auto-generate)"
+msgstr "PR 标题(留空以自动生成)"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pre-commit hook failed"
+msgstr "预提交挂钩失败"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Presets"
+msgstr "预设"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Prevent sleep while working"
+msgstr "工作时阻止系统休眠"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Preview {0}"
+msgstr "预览{0}"
+
+#: src/renderer/components/composer/ImageLightbox.tsx
+msgid "Previous image"
+msgstr "上一张图片"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Profile"
+msgstr "个人资料"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Profiles"
+msgstr "配置文件"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+msgid "Project"
+msgstr "项目"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+msgid "Project name"
+msgstr "项目名称"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Project notes"
+msgstr "项目笔记"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Project Settings"
+msgstr "项目设置"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "Project-specific overrides on top of the global search settings."
+msgstr "在全局搜索设置基础上的项目特定覆盖。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Prompt"
+msgstr "提示"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Prompts"
+msgstr "提示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/PlanProposal.tsx
+msgid "Proposed plan"
+msgstr "拟议计划"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "provider"
+msgstr "提供商"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Provider"
+msgstr "提供商"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Provider has not reported token usage."
+msgstr "提供商尚未报告令牌使用情况。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Provider presets"
+msgstr "服务商预设"
+
+#. plural
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "providers"
+msgstr "提供商"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Providers"
+msgstr "提供商"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull"
+msgstr "拉取"
+
+#. placeholder {0}: vis.behind
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull ({0})"
+msgstr "拉 ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull ({behind})"
+msgstr "拉 ({behind})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Pull ↓{behind}"
+msgstr "拉 ↓{behind}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull did not complete. Your local changes remain in a Lightcode stash."
+msgstr "拉取未完成。您的本地更改仍保留在 Lightcode 贮藏区中。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Pull failed: {detail}"
+msgstr "拉取失败:{detail}"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Pull from {0}?"
+msgstr "从{0}拉取?"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull from {sourceBranch} ({sourceAhead})"
+msgstr "从{sourceBranch}({sourceAhead}) 拉取"
+
+#. placeholder {0}: vis.sourceAhead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Pull from Source ({0})"
+msgstr "从源拉取 ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Pull Rebase ({behind})"
+msgstr "拉变基 ({behind})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Pull request options"
+msgstr "拉取请求选项"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push"
+msgstr "推送"
+
+#. placeholder {0}: vis.ahead
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Push ({0})"
+msgstr "推 ({0})"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Push ({ahead})"
+msgstr "推 ({ahead})"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Push ↑{ahead}"
+msgstr "推送 ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Push failed: {detail}"
+msgstr "推送失败:{detail}"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionSwitcher.tsx
+msgid "Questions"
+msgstr "问题"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Quota reached"
+msgstr "已达到配额"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out"
+msgstr "已用尽"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Ran out · resets in {resets}"
+msgstr "耗尽 · 在{resets}中重置"
+
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+msgid "Rate limited"
+msgstr "已限速"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Rate limited. Try again shortly."
+msgstr "已限速。请稍后重试。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Re-applying local changes has conflicts"
+msgstr "重新应用本地更改有冲突"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Re-login"
+msgstr "重新登录"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Ready"
+msgstr "就绪"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Ready for Review"
+msgstr "准备审查"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+msgid "Reasoning"
+msgstr "推理"
+
+#: src/renderer/components/common/ProviderModelMenu/parts/buildItems.ts
+msgid "Recent"
+msgstr "最近"
+
+#: src/renderer/views/HomeView.tsx
+msgid "Recent threads"
+msgstr "最近的线程"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Reconstructed from local logs at public API rates — it does not reflect "
+"your real bill on subscription plans. Shown only in the usage panel."
+msgstr "以公共 API 费率从本地日志重建 — 它不反映您订阅计划的真实账单。仅在使用面板中显示。"
+
+#. Button: re-fetch provider usage now
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh"
+msgstr "刷新"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Refresh {0} authentication"
+msgstr "刷新{0}身份验证"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Refresh detected agents"
+msgstr "刷新检测到的代理"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Refresh registry"
+msgstr "刷新注册表"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Refresh usage in the background every N minutes. Set to 0 to turn off "
+"(manual only). The 2-minute floor respects provider rate limits."
+msgstr "每N分钟在后台刷新一次使用情况。设置为 0 关闭(仅限手动)。 2 分钟下限遵守提供商的速率限制。"
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {0} authentication status."
+msgstr "正在刷新{0}身份验证状态。"
+
+#. placeholder {0}: status.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Refreshing {env} {0} authentication status."
+msgstr "正在刷新{env}{0}身份验证状态。"
+
+#: src/renderer/RendererCrashScreen.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Reload"
+msgstr "重新加载"
+
+#: src/renderer/components/common/BranchSelector/parts/useBranchList.ts
+msgid "Remote"
+msgstr "远程"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote name"
+msgstr "远程名称"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Remote URL"
+msgstr "远程网址"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove"
+msgstr "删除"
+
+#. placeholder {0}: att.name
+#: src/renderer/components/composer/AttachmentBar.tsx
+msgid "Remove {0}"
+msgstr "删除{0}"
+
+#. placeholder {0}: display.title
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove {0} from panel"
+msgstr "从面板中删除{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Remove {pattern}"
+msgstr "删除{pattern}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+msgid "Remove action"
+msgstr "删除动作"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove Claude profile"
+msgstr "删除 Claude 配置文件"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove environment variable"
+msgstr "移除环境变量"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Remove from favorites"
+msgstr "从收藏夹中删除"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Remove from group"
+msgstr "从组中删除"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Remove from panel"
+msgstr "从面板上移除"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Remove model"
+msgstr "移除模型"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+msgid "Remove Project"
+msgstr "删除项目"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Remove worktree?"
+msgstr "删除工作树?"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Rename"
+msgstr "重命名"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Rename Group"
+msgstr "重命名组"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+msgid "Rename thread"
+msgstr "重命名线程"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer crashed"
+msgstr "渲染器崩溃"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer failed during startup"
+msgstr "渲染器在启动期间失败"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit a React error"
+msgstr "渲染器遇到了 React 错误"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an uncaught error"
+msgstr "渲染器遇到未捕获的错误"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "Renderer hit an unhandled promise rejection"
+msgstr "渲染器遇到未处理的 Promise 拒绝"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reorder {0}"
+msgstr "重新排序{0}"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Reorder {label}"
+msgstr "重新排序{label}"
+
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Report an Issue"
+msgstr "报告问题"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "repository"
+msgstr "仓库"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Repository"
+msgstr "仓库"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Repository pre-receive hook is blocking the merge."
+msgstr "存储库预接收挂钩正在阻止合并。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Repository URL"
+msgstr "存储库网址"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Request changes"
+msgstr "请求更改"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/ThreadRuntimeRequestPanel.tsx
+msgid "Request details"
+msgstr "请求详情"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "requested changes"
+msgstr "要求更改"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Required reviews, conversations, or status checks not met."
+msgstr "未满足所需的审查、对话或状态检查。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+msgid "reset"
+msgstr "重置"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+msgid "Reset model order"
+msgstr "重置模型顺序"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset sidebar frosting to default"
+msgstr "将侧边栏磨砂效果重置为默认"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Reset to default"
+msgstr "重置为默认"
+
+#: src/renderer/components/layout/BrowserDrawerShell.tsx
+msgid "Resize browser drawer"
+msgstr "调整浏览器抽屉的大小"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize column"
+msgstr "调整列大小"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize git panel"
+msgstr "调整 git 面板大小"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Resize notes and to-dos"
+msgstr "调整笔记和待办事项的大小"
+
+#: src/renderer/components/layout/SplitPaneContainer.tsx
+msgid "Resize row"
+msgstr "调整行大小"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize sidebar"
+msgstr "调整侧边栏大小"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/TerminalSurfaces.tsx
+msgid "Resize split"
+msgstr "调整分割大小"
+
+#: src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+msgid "Resize terminal panel"
+msgstr "调整终端面板大小"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Resolves merge conflicts during rebase or merge."
+msgstr "解决变基或合并期间的合并冲突。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore"
+msgstr "恢复"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+msgid "Restore browser"
+msgstr "恢复浏览器"
+
+#: src/renderer/views/SettingsOverlay/parts/ArchivedThreadsSettings.tsx
+msgid "Restore thread"
+msgstr "恢复线程"
+
+#: src/renderer/hooks/usePrWriteActions.ts
+msgid "Retry with admin"
+msgstr "使用管理员重试"
+
+#: src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Return to app"
+msgstr "返回应用程序"
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Reveal in File Explorer"
+msgstr "在文件资源管理器中显示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Reveal in file tree"
+msgstr "在文件树中显示"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert"
+msgstr "恢复"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all"
+msgstr "全部恢复"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Revert all changes"
+msgstr "恢复所有更改"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Revert changes"
+msgstr "恢复更改"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to checkpoint?"
+msgstr "恢复到此检查点?"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "Revert to this checkpoint"
+msgstr "恢复到此检查点"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Review Changes"
+msgstr "审查变更"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review comment"
+msgstr "审查评论"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Review decision"
+msgstr "审查决定"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Review on request"
+msgstr "根据要求进行审查"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Review PR"
+msgstr "审查 PR"
+
+#. placeholder {0}: branch.name
+#: src/renderer/components/common/BranchSelector/parts/BranchListBox.tsx
+msgid "Review PR #{prNumber} for {0}"
+msgstr "查看{0}的 PR #{prNumber}"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Right"
+msgstr "右"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Right panel"
+msgstr "右面板"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Run"
+msgstr "运行"
+
+#. placeholder {0}: workflow.runId
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Run {0}"
+msgstr "运行{0}"
+
+#. placeholder {0}: agentStatus.loginCommand
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Run {0} before this thread can run."
+msgstr "在此线程运行之前运行{0}。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Run {loginCommand} to sign in."
+msgstr "运行{loginCommand}进行登录。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+msgid "Run command"
+msgstr "运行命令"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Run in a separate worktree"
+msgstr "在单独的工作树中运行"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Run local transcription on the GPU when available."
+msgstr "如果可用,请在 GPU 上运行本地转录。"
+
+#: src/renderer/commands/registry.ts
+msgid "Run Terminal Command"
+msgstr "运行终端命令"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "running"
+msgstr "运行中"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs before a worktree is removed (e.g., <0>rm -rf node_modules0>)."
+msgstr "在删除工作树之前运行(例如,<0>rm -rf node_modules0>)。"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Runs in a terminal after a new worktree is created (e.g., <0>pnpm "
+"install0>)."
+msgstr "创建新工作树后在终端中运行(例如,<0>pnpm install0>)。"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out early"
+msgstr "提早用完"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Runs out in {runOut}"
+msgstr "在{runOut}中用完"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime"
+msgstr "运行时"
+
+#: src/renderer/components/thread/ThreadContent.tsx
+msgid "Runtime debug"
+msgstr "运行时调试"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Runtime options"
+msgstr "运行时选项"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save"
+msgstr "保存"
+
+#. placeholder {0}: envVarAuthMethod.name
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Save {0} credentials."
+msgstr "保存{0}凭据。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Save Claude profile"
+msgstr "保存 Claude 配置文件"
+
+#: src/renderer/commands/registry.ts
+msgid "Save File"
+msgstr "保存文件"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Saved credentials are shared across all environments."
+msgstr "保存的凭据在所有环境中共享。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning {wslDistro} for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "扫描{wslDistro}来查找已安装的 CLI。这通常需要几秒钟。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning Windows and WSL for installed CLIs. This usually takes a couple "
+"of seconds."
+msgstr "扫描 Windows 和 WSL 以查找已安装的 CLI。这通常需要几秒钟。"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Scanning your system for installed CLIs. This usually takes a couple of "
+"seconds."
+msgstr "扫描系统中已安装的 CLI。这通常需要几秒钟。"
+
+#: src/renderer/commands/registry.ts
+msgid "Scripts"
+msgstr "脚本"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Scroll speed multiplier for the terminal scrollback buffer."
+msgstr "终端回滚缓冲区的滚动速度倍增器。"
+
+#: src/renderer/components/terminal/XTermSurface.tsx
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Scroll to bottom"
+msgstr "滚动到底部"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SearchSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Search"
+msgstr "搜索"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents"
+msgstr "搜索代理"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Search agents..."
+msgstr "搜索代理..."
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Search branches..."
+msgstr "搜索分支..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Search files"
+msgstr "搜索文件"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models"
+msgstr "搜索模型"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Search models..."
+msgstr "搜索模型..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Search or enter address"
+msgstr "搜索或输入地址"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories"
+msgstr "搜索存储库"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Search repositories…"
+msgstr "搜索存储库..."
+
+#: src/renderer/components/thread/ChatPane/ChatRuntimeDebugPanel.tsx
+msgid "Search runtime items…"
+msgstr "搜索运行时项目..."
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search threads"
+msgstr "搜索线程"
+
+#: src/renderer/commands/registry.ts
+msgid "Search Threads"
+msgstr "搜索线程"
+
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Search…"
+msgstr "搜索..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Searching..."
+msgstr "正在搜索..."
+
+#: src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+msgid "Searching…"
+msgstr "正在搜索…"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectThreadList.tsx
+msgid "See more"
+msgstr "查看更多"
+
+#: src/renderer/components/common/OptionMenu.tsx
+msgid "Select"
+msgstr "选择"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+msgid "Select a file from the tree"
+msgstr "从树中选择一个文件"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "Select a file to start editing."
+msgstr "选择一个文件开始编辑。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select a repository."
+msgstr "选择一个存储库。"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "Select account"
+msgstr "选择账户"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Select an agent to see its prompt and outcome."
+msgstr "选择一个代理以查看其提示和结果。"
+
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "Select branch"
+msgstr "选择分支"
+
+#: src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+msgid "Select device"
+msgstr "选择设备"
+
+#: src/renderer/components/common/ProviderModelMenu/ProviderModelMenu.tsx
+msgid "Select model"
+msgstr "选择模型"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Select project"
+msgstr "选择项目"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Send a message..."
+msgstr "发送消息..."
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Send message"
+msgstr "发送消息"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Sent selection to terminal."
+msgstr "将选择发送到终端。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Separate Claude Code accounts by config directory, or point a profile at "
+"an external provider (z.ai, …). Open a profile to configure its env "
+"vars, models, and effort."
+msgstr "按配置目录区分Claude Code账户,或将配置指向外部服务商(z.ai,…)。打开某个配置以设置其环境变量、模型和思考级别。"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Set or view an experimental goal"
+msgstr "设置或查看实验目标"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/SettingsOverlay/SettingsOverlay.tsx
+msgid "Settings"
+msgstr "设置"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+msgid "Setup script"
+msgstr "设置脚本"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Share"
+msgstr "分享"
+
+#: src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+msgid "Share your activity"
+msgstr "分享你的活动"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show a compact per-provider usage ring in the sidebar."
+msgstr "在侧边栏中显示每个提供商的紧凑使用环。"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "Show a projectless Home scope for OS-level agent sessions."
+msgstr "为操作系统级别的代理会话显示一个无项目的主页范围。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Show all"
+msgstr "显示全部"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Show Bookmark Bar"
+msgstr "显示书签栏"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show circles in sidebar"
+msgstr "在侧边栏中显示圆圈"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "Show composer"
+msgstr "显示编辑器"
+
+#: src/renderer/components/thread/ThreadContextIndicator.tsx
+msgid "Show context usage details"
+msgstr "显示上下文使用详细信息"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Show estimated cost"
+msgstr "显示预计费用"
+
+#: src/renderer/components/thread/ChatPane/parts/items/InlineFolderPathChip.tsx
+msgid "Show in file explorer"
+msgstr "在文件资源管理器中显示"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show less"
+msgstr "显示较少"
+
+#: src/renderer/components/thread/ChatPane/parts/items/UserMessage.tsx
+msgid "Show more"
+msgstr "显示更多"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications"
+msgstr "显示通知"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Show notifications when thread status changes."
+msgstr "当线程状态更改时显示通知。"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "Show opened links in"
+msgstr "打开链接的方式"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show preview"
+msgstr "显示预览"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Show runtime debug panel"
+msgstr "显示运行时调试面板"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/PrReviewOverlay/parts/PrReviewSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Show sidebar"
+msgstr "显示侧边栏"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+msgid "Show source"
+msgstr "显示来源"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show the microphone button in the composer."
+msgstr "在编辑器中显示麦克风按钮。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Show voice input button"
+msgstr "显示语音输入按钮"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Sidebar frosting"
+msgstr "侧边栏磨砂效果"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign in"
+msgstr "登录"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Sign in needed"
+msgstr "需要登录"
+
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Sign in required"
+msgstr "需要登录"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Sign in with the agent CLI."
+msgstr "使用代理 CLI 登录。"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Sign out {label}"
+msgstr "退出{label}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signed in"
+msgstr "已登录"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Signing in"
+msgstr "正在登录"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Signing in…"
+msgstr "正在登录..."
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out {env}. Detected agents will refresh when it finishes."
+msgstr "注销{env}。检测到的代理将在完成后刷新。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Signing out. Detected agents will refresh when it finishes."
+msgstr "正在退出。检测到的代理将在完成后刷新。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Skill: {skill}"
+msgstr "技能:{skill}"
+
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Skills"
+msgstr "技能"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Skills explored"
+msgstr "已探索技能"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Some checks are failing or pending."
+msgstr "一些检查失败或待处理。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by created"
+msgstr "按创建排序"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+msgid "Sort by last updated"
+msgstr "按上次更新排序"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Sort threads"
+msgstr "对线程进行排序"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+msgid "Split Terminal"
+msgstr "拆分终端"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Split view"
+msgstr "分割视图"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictGroup.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Stage"
+msgstr "暂存"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Stage all"
+msgstr "全部暂存"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "staged"
+msgstr "已暂存"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Staged"
+msgstr "已暂存"
+
+#. placeholder {0}: gitStatus.staged.length
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+msgid "Staged ({0})"
+msgstr "已暂存({0})"
+
+#. Button: start the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Start"
+msgstr "开始"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Start {appName} to see usage"
+msgstr "启动{appName}以查看用量"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Start a new thread from the selected text"
+msgstr "从选定的文本开始一个新线程"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+msgid "Start a new thread from this to-do"
+msgstr "从此待办事项开始一个新线程"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+msgid "Start from scratch"
+msgstr "从头开始"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Start the composer collapsed in terminal-native threads. A collapsed "
+"composer routes browser element picks straight to the terminal."
+msgstr "在终端原生线程中以折叠状态启动编辑器。折叠的编辑器会将浏览器元素选择直接路由到终端。"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Start voice input"
+msgstr "开始语音输入"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Start Without Context"
+msgstr "在没有上下文的情况下开始"
+
+#: src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+msgid "Started {targetLabel} thread"
+msgstr "开始{targetLabel}线程"
+
+#. Button label while the microphone test is starting
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Starting"
+msgstr "启动中"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Starting voice input"
+msgstr "开始语音输入"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "starting…"
+msgstr "开始…"
+
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "Stash & Pull"
+msgstr "贮藏并拉取"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is inferred from terminal output (L2). Install the hook plugin in "
+"settings for structured updates."
+msgstr "状态根据终端输出 (L2) 推断。在设置中安装挂钩插件以获取结构化更新。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status is provided by the agent control protocol (ACP)."
+msgstr "状态由代理控制协议 (ACP) 提供。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status updates come from the CLI hook plugin."
+msgstr "状态更新来自 CLI 挂钩插件。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Status:"
+msgstr "状态:"
+
+#. Button: stop the microphone level test
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Stop"
+msgstr "停止"
+
+#: src/renderer/components/thread/ThreadComposer.tsx
+msgid "Stop response"
+msgstr "停止响应"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Stop task"
+msgstr "停止任务"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Stop voice input"
+msgstr "停止语音输入"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as plain text"
+msgstr "以明文存储"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Store as secret (encrypted at rest)"
+msgstr "以密文存储(静态加密)"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent"
+msgstr "子代理"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Subagent not found."
+msgstr "未找到子代理。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentToolCall.tsx
+msgid "Subagent Result"
+msgstr "子代理结果"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+#: src/renderer/views/SettingsOverlay/parts/ProfileSettings.tsx
+msgid "Subagents"
+msgstr "子代理"
+
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/parts/QuestionRows.tsx
+#: src/renderer/components/thread/ThreadRuntimeRequestPanel/structuredElicitation.tsx
+msgid "Submit"
+msgstr "提交"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback and approve merging these changes."
+msgstr "提交反馈并批准合并这些更改。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback that must be addressed before merging."
+msgstr "提交合并前必须解决的反馈。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit feedback without explicit approval."
+msgstr "未经明确批准就提交反馈。"
+
+#: src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+msgid "Submit review"
+msgstr "提交审查"
+
+#: src/renderer/components/providers/acpGeneric/index.tsx
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Supervised"
+msgstr "监督"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support mode appears once the session connects."
+msgstr "会话连接后就会出现支持模式。"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Support:"
+msgstr "支持:"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+msgid "Swap notes and to-dos"
+msgstr "切换笔记和待办事项"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Switch branch"
+msgstr "切换分支"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode"
+msgstr "切换模式"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Switch mode: {title}"
+msgstr "切换模式:{title}"
+
+#: src/renderer/components/thread/ProjectSwitchMenu.tsx
+msgid "Switch project"
+msgstr "切换项目"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to agent mode"
+msgstr "将此聊天切换到代理模式"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Switch this chat to plan mode"
+msgstr "将此聊天切换到计划模式"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+msgid "Sync"
+msgstr "同步"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync (Rebase)"
+msgstr "同步(变基)"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+msgid "Sync ↓{behind} ↑{ahead}"
+msgstr "同步 ↓{behind} ↑{ahead}"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Sync failed: {detail}"
+msgstr "同步失败:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CommitSyncPanel.tsx
+msgid "Sync options"
+msgstr "同步选项"
+
+#: src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+msgid "Syncs with Cloud"
+msgstr "与Cloud同步"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/i18n/locales.ts
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "System"
+msgstr "系统"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "System Browser"
+msgstr "系统浏览器"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "System default"
+msgstr "系统默认"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+msgid "Take Screenshot"
+msgstr "截图"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+msgid "Target branch"
+msgstr "目标分支"
+
+#: src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+msgid "Target provider"
+msgstr "目标提供商"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Task output"
+msgstr "任务输出"
+
+#. placeholder {0}: selectedAgent?.label ?? targetProviderFallback
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell {0} what to do next..."
+msgstr "告诉{0}下一步该做什么..."
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "Tell the target provider what to do next..."
+msgstr "告诉目标提供商下一步该做什么..."
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal"
+msgstr "终端"
+
+#. placeholder {0}: project.name
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+#: src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+msgid "Terminal for {0}"
+msgstr "{0}的终端"
+
+#: src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+msgid "Terminal input"
+msgstr "终端输入"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Terminal not ready — added selection to composer."
+msgstr "终端未就绪 — 已将所选内容添加到编辑器。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal panel font size"
+msgstr "终端面板字体大小"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal position"
+msgstr "终端位置"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Terminal scroll speed"
+msgstr "终端滚动速度"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+#: src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+msgid "Terminal tabs"
+msgstr "终端选项卡"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Test microphone"
+msgstr "测试麦克风"
+
+#: src/renderer/components/thread/ThreadComposerSection.tsx
+msgid "the agent"
+msgstr "代理"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "the app"
+msgstr "该应用程序"
+
+#: src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+msgid "the chosen folder"
+msgstr "所选文件夹"
+
+#: src/renderer/RendererCrashScreen.tsx
+msgid "The normal app shell could not render. The diagnostics below are shown "
+"before reload so the failure can be investigated."
+msgstr "正常的应用程序外壳无法呈现。以下诊断信息在重新加载之前显示,以便可以调查故障。"
+
+#: src/renderer/components/thread/ContinueInProviderDialog.tsx
+msgid "the target provider"
+msgstr "目标提供商"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Theme"
+msgstr "主题"
+
+#: src/renderer/components/common/EffortContextMenu/EffortContextMenu.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thinking"
+msgstr "思考"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "This agent is not installed."
+msgstr "未安装此代理。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "this environment"
+msgstr "这个环境"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file is too large for the built-in editor."
+msgstr "该文件过大,内置编辑器无法打开。"
+
+#: src/renderer/views/FileEditorOverlay/parts/FileEditorPane/FileEditorPane.tsx
+msgid "This file uses an unsupported encoding."
+msgstr "此文件使用不受支持的编码。"
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\" from its remote."
+msgstr "这将从远程永久删除分支“{0}”。"
+
+#. placeholder {0}: pendingDelete?.branch.name ?? ""
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This permanently deletes the branch \"{0}\"."
+msgstr "这将永久删除分支“{0}”。"
+
+#: src/renderer/components/thread/ChatPane/parts/CheckpointRevertControls.tsx
+msgid "This removes later messages and restores files when a checkpoint "
+"snapshot is available."
+msgstr "当检查点快照可用时,这会删除稍后的消息并恢复文件。"
+
+#. placeholder {0}: pendingDelete.branch.name
+#. placeholder {1}: pendingDelete.threadCount
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\" and closes {1, plural, one {# "
+"linked thread} other {# linked threads}}, then deletes the branch."
+msgstr "这将删除“{0}”上的工作树并关闭 {1, plural, other {# 个关联线程}},然后删除分支。"
+
+#. placeholder {0}: pendingDelete.branch.name
+#: src/renderer/components/common/BranchSelector/BranchSelector.tsx
+msgid "This removes the worktree on \"{0}\", then deletes the branch."
+msgstr "这将删除“{0}”上的工作树,然后删除分支。"
+
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "This thread uses worktree <0>{0}0>. Also remove the worktree "
+"directory?"
+msgstr "该线程使用工作树 <0>{0}0>。还要删除工作树目录吗?"
+
+#. placeholder {0}: activeDialog.sourceBranch
+#: src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+msgid "This worktree has local changes. Lightcode can temporarily stash them, "
+"pull from {0}, then re-apply your changes."
+msgstr "该工作树有本地更改。Lightcode 可以暂时贮藏(stash)它们,从 {0} 拉取,然后重新应用您的更改。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/Reasoning.tsx
+msgid "Thought"
+msgstr "思考"
+
+#: src/renderer/commands/registry.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+msgid "Thread"
+msgstr "线程"
+
+#. Dialog button: delete the thread and remove its worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread + Worktree"
+msgstr "线程+工作树"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Thread context usage"
+msgstr "线程上下文使用"
+
+#: src/renderer/components/thread/ThreadDockUI.tsx
+msgid "Thread dock"
+msgstr "线程停靠栏"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Thread failed to start."
+msgstr "线程无法启动。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "Thread finished or waiting for your input."
+msgstr "线程已完成或正在等待您的输入。"
+
+#: src/renderer/components/thread/ThreadGoalDock.tsx
+msgid "Thread goal dock"
+msgstr "线程目标停靠栏"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Thread is already unloaded."
+msgstr "线程已经卸载。"
+
+#: src/renderer/components/thread/PresentationModeTabs.tsx
+msgid "Thread mode"
+msgstr "线程模式"
+
+#. Dialog button: delete the thread but keep the worktree directory
+#: src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+msgid "Thread Only"
+msgstr "仅线程"
+
+#: src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+msgid "Thread sort order"
+msgstr "线程排序顺序"
+
+#: src/renderer/components/thread/ThreadTodoDock.tsx
+msgid "Thread todo dock"
+msgstr "线程待办事项停靠栏"
+
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+#: src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+msgid "Threads"
+msgstr "线程"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Threads marked done that have not been touched for this many days are "
+"archived automatically on app launch. Set to 0 to disable."
+msgstr "标记为“已完成”且已多日未触及的线程将在应用程序启动时自动存档。设置为 0 以禁用。"
+
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Title Generation"
+msgstr "标题生成"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+msgid "To-dos"
+msgstr "待办事项"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Toggle Fast mode"
+msgstr "切换快速模式"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Toggle models off to hide them from the selector."
+msgstr "关闭模型以将其隐藏在选择器中。"
+
+#: src/renderer/commands/registry.ts
+msgid "Toggle Terminal"
+msgstr "切换终端"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+msgid "Tokens"
+msgstr "Token"
+
+#. placeholder {0}: tokens!.providers.map((p) => p.label).join(", ")
+#: src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+msgid "Tokens from {0}"
+msgstr "来自{0}的token"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Tool search"
+msgstr "工具搜索"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total prompts"
+msgstr "提示总数"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total skills used"
+msgstr "已用技能总数"
+
+#: src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+msgid "Total threads"
+msgstr "对话总数"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track {label} usage"
+msgstr "跟踪{label}使用情况"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Track per-provider session, weekly, and monthly usage. Windows are "
+"reported by each provider; estimated cost is reconstructed from local "
+"logs."
+msgstr "跟踪每个提供商的会话、每周和每月使用情况。各时间窗口由每个提供商报告;估计成本根据本地日志重建。"
+
+#. Usage status when provider tracking is disabled
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Tracking off"
+msgstr "追踪关闭"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Transcribing voice"
+msgstr "正在转录语音"
+
+#: src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+msgid "Translucent sidebar"
+msgstr "半透明侧边栏"
+
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Turn tracking on or off per provider. Disabled providers are skipped by "
+"the auto-refresh."
+msgstr "打开或关闭每个提供商的跟踪。自动刷新会跳过已禁用的提供商。"
+
+#: src/renderer/commands/CommandPalette.tsx
+msgid "Type a command"
+msgstr "输入命令"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to authenticate {0}."
+msgstr "无法验证{0}。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to create WSL worktree directory \"{path}\""
+msgstr "无法创建 WSL 工作树目录“{path}”"
+
+#. placeholder {0}: props.selectedAgent.label
+#: src/renderer/components/thread/ThreadDraftComposerArea.tsx
+msgid "Unable to install {0} hooks."
+msgstr "无法安装{0}挂钩。"
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to install {0}."
+msgstr "无法安装{0}。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to log out {0}."
+msgstr "无法注销{0}。"
+
+#. placeholder {0}: input.label
+#: src/renderer/actions/agentLoginActions.ts
+msgid "Unable to open {0} login."
+msgstr "无法打开{0}登录。"
+
+#: src/renderer/commands/registry.ts
+msgid "Unable to open file"
+msgstr "无法打开文件"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {0}: status.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to refresh {0} status."
+msgstr "无法刷新{0}状态。"
+
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAuthRequiredDock.tsx
+msgid "Unable to refresh {0}."
+msgstr "无法刷新{0}。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to refresh Claude profiles."
+msgstr "无法刷新 Claude 配置文件。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to remove {0} credentials."
+msgstr "无法删除{0}凭据。"
+
+#: src/renderer/actions/worktreeActions.ts
+msgid "Unable to remove worktree."
+msgstr "无法删除工作树。"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Unable to resolve home directory for WSL distro \"{distro}\""
+msgstr "无法解析 WSL 发行版“{distro}”的主目录"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to save {0} credentials."
+msgstr "无法保存{0}凭据。"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Unable to save Claude {displayLabel} profile."
+msgstr "无法保存Claude {displayLabel}配置。"
+
+#: src/renderer/utils/shellUtils.ts
+msgid "Unable to start {label}."
+msgstr "无法启动{label}。"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName}): {detailText}"
+msgstr "无法更新{0}({envName}):{detailText}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} ({envName})."
+msgstr "无法更新{0}({envName})。"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0} hooks."
+msgstr "无法更新{0}挂钩。"
+
+#. placeholder {0}: agentStatus.label
+#. placeholder {1}: detail.slice(0, 240)
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Unable to update {0}: {1}"
+msgstr "无法更新{0}:{1}"
+
+#. placeholder {0}: agent.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}: {detailText}"
+msgstr "无法更新{0}:{detailText}"
+
+#. placeholder {0}: agent.label
+#. placeholder {0}: agentStatus.label
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unable to update {0}."
+msgstr "无法更新{0}。"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+msgid "Ungroup All"
+msgstr "全部取消分组"
+
+#: src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+#: src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+msgid "Unified view"
+msgstr "统一视图"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Uninstall"
+msgstr "卸载"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+#: src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+msgid "Unknown"
+msgstr "未知"
+
+#: src/renderer/notifications.ts
+msgid "Unknown project"
+msgstr "未知项目"
+
+#: src/renderer/components/providers/usageFormat.ts
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+msgid "Unlimited"
+msgstr "无限"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after"
+msgstr "在以下时间后卸载空闲线程"
+
+#: src/renderer/views/SettingsOverlay/parts/ThreadSettings.tsx
+msgid "Unload idle threads after (minutes)"
+msgstr "在以下分钟数后卸载空闲线程"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unload Thread"
+msgstr "卸载线程"
+
+#: src/renderer/components/thread/ThreadView.tsx
+msgid "Unmark done"
+msgstr "取消标记完成"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unmark Done"
+msgstr "取消标记完成"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Unphased:"
+msgstr "未分阶段:"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Unpin"
+msgstr "取消固定"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileRow.tsx
+#: src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+msgid "Unstage"
+msgstr "取消暂存"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/FileGroup.tsx
+msgid "Unstage all"
+msgstr "全部取消暂存"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+msgid "unstaged"
+msgstr "未暂存"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Unsupported"
+msgstr "不支持"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update"
+msgstr "更新"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update {0} to {updateLabel}"
+msgstr "将{0}更新为{updateLabel}"
+
+#: src/renderer/components/thread/ThreadAgentUpdateDock.tsx
+msgid "Update available"
+msgstr "可用更新"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update branch"
+msgstr "更新分支"
+
+#: src/renderer/i18n/sharedMessages.ts
+msgid "Update error: {detail}"
+msgstr "更新错误:{detail}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update method"
+msgstr "更新方法"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Update task"
+msgstr "更新任务"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel}"
+msgstr "更新到{updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0}"
+msgstr "将{0}更新到{updateLabel}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to {updateLabel} for {0} ({env})"
+msgstr "将{0}({env})更新到{updateLabel}"
+
+#. placeholder {0}: agent.version
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Update to v{0}"
+msgstr "更新到 v{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Update to v{latestRegistryVersion}"
+msgstr "更新到 v{latestRegistryVersion}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with merge commit"
+msgstr "使用合并提交更新"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/PrSection.tsx
+msgid "Update with rebase"
+msgstr "使用变基更新"
+
+#. placeholder {0}: formatUpdatedAgo(lastUpdated, nowTick, t)
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+msgid "Updated {0}"
+msgstr "更新了{0}"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Updating"
+msgstr "更新中"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0}"
+msgstr "正在更新{0}"
+
+#. placeholder {0}: props.agentLabel
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Updating {0} ({env})"
+msgstr "更新{0}({env})"
+
+#: src/renderer/components/layout/UnifiedRightPanel.tsx
+#: src/renderer/components/providers/ProviderUsageRail.tsx
+#: src/renderer/components/thread/ThreadContextDock.tsx
+#: src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+#: src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+#: src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+msgid "Usage"
+msgstr "用量"
+
+#: src/renderer/components/providers/usageFormat.ts
+msgid "Usage not supported"
+msgstr "不支持使用"
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+msgid "Usage settings"
+msgstr "使用设置"
+
+#: src/renderer/components/thread/ThreadContextDock.tsx
+msgid "Usage unknown"
+msgstr "用量未知"
+
+#: src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+msgid "Use an existing folder"
+msgstr "使用现有文件夹"
+
+#: src/renderer/components/providers/codex/index.tsx
+msgid "Use config"
+msgstr "使用配置"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use detected session?"
+msgstr "使用检测到的会话?"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+msgid "Use ignore files"
+msgstr "使用忽略文件"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use Session"
+msgstr "使用会话"
+
+#: src/renderer/views/MainView/parts/AppOverlays.tsx
+msgid "Use this account for usage tracking, or change users in the browser "
+"before continuing."
+msgstr "使用此帐户进行使用情况跟踪,或在继续之前更改浏览器中的用户。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Use WebGPU acceleration"
+msgstr "使用WebGPU加速"
+
+#: src/renderer/components/thread/threadContextUsage.ts
+msgid "Used"
+msgstr "已使用"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "Using the built-in Claude model list."
+msgstr "正在使用内置的Claude模型列表。"
+
+#. placeholder {0}: status.bundledVersion
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "v{0} available"
+msgstr "v{0}可用"
+
+#: src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+msgid "value"
+msgstr "值"
+
+#. About page label: app version row
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+msgid "Version"
+msgstr "版本"
+
+#. placeholder {0}: metadata.authMethod
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "via {0}"
+msgstr "通过{0}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/commandSummary.ts
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "View"
+msgstr "查看"
+
+#. placeholder {0}: provider.label
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible {0} models"
+msgstr "可见{0}模型"
+
+#: src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Visible models"
+msgstr "可见模型"
+
+#: src/renderer/components/composer/VoiceInputButton.tsx
+msgid "Voice input is not available in this environment."
+msgstr "在此环境中无法使用语音输入。"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input language"
+msgstr "语音输入语言"
+
+#: src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+msgid "Voice input model"
+msgstr "语音输入模型"
+
+#: src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+msgid "Wait for the thread to finish starting."
+msgstr "等待线程完成启动。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authEnv} {authMethodName} authentication. Detected agents "
+"will refresh when it finishes."
+msgstr "等待{authEnv}{authMethodName}验证。检测到的代理将在完成后刷新。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {authMethodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "等待{authMethodName}身份验证。检测到的代理将在完成后刷新。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {env} {methodName} authentication. Detected agents will "
+"refresh when it finishes."
+msgstr "等待{env}{methodName}验证。检测到的代理将在完成后刷新。"
+
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Waiting for {methodName} authentication. Detected agents will refresh "
+"when it finishes."
+msgstr "等待{methodName}身份验证。检测到的代理将在完成后刷新。"
+
+#: src/renderer/components/thread/ThreadPendingSteerStrip.tsx
+msgid "waiting for agent to stop"
+msgstr "等待代理停止"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Waiting for workflow to spawn agents…"
+msgstr "正在等待工作流生成代理..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up"
+msgstr "唤醒"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}"
+msgstr "{interval} 后唤醒"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up in {interval}: {reason}"
+msgstr "{interval} 后唤醒:{reason}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Wake up: {reason}"
+msgstr "唤醒:{reason}"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environment…"
+msgstr "正在预热 shell 环境..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up shell environments..."
+msgstr "正在预热 shell 环境..."
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+msgid "Warming up WSL shell environment…"
+msgstr "正在预热 WSL shell 环境..."
+
+#: src/renderer/components/thread/ChatPane/parts/items/ToolCallGroup.tsx
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+#: src/renderer/components/thread/ChatPane/parts/items/WebSearchItem.tsx
+msgid "Web search"
+msgstr "网页搜索"
+
+#. External link to the product website
+#: src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Website"
+msgstr "网站"
+
+#: src/renderer/views/SettingsOverlay/parts/GitSettings.tsx
+msgid "What the Create PR button does by default: open a dialog to edit the "
+"title and description first, or auto-generate them and create the PR in "
+"one click. You can also switch this from the button's menu."
+msgstr "默认情况下,“创建 PR”按钮的作用是:打开一个对话框,首先编辑标题和描述,或者自动生成它们并一键创建 PR。您也可以从按钮的菜单中进行切换。"
+
+#: src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+msgid "When enabled, search respects <0>.gitignore0> entries."
+msgstr "启用后,搜索会考虑 <0>.gitignore0> 条目。"
+
+#: src/renderer/views/SettingsOverlay/parts/BrowserSettings.tsx
+msgid "When links open in a Lightcode browser tab, choose where the browser is "
+"revealed."
+msgstr "当链接在 Lightcode 浏览器选项卡中打开时,选择浏览器的显示位置。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When off, suppress notifications from terminal threads whose status "
+"comes from the OSC fallback (no CLI hook plugin)."
+msgstr "关闭时,抑制状态来自 OSC 回退(无 CLI 挂钩插件)的终端线程的通知。"
+
+#: src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+msgid "When to display in-app toasts for visible threads."
+msgstr "何时显示可见线程的应用内 Toast。"
+
+#: src/renderer/views/SettingsOverlay/parts/GeneralSettings.tsx
+msgid "When you close the window, keep Lightcode running in the system tray. "
+"Disable to quit on close."
+msgstr "当您关闭窗口时,请保持 Lightcode 在系统托盘中运行。禁用关闭时退出。"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where a browser element-picker selection goes in terminal-native "
+"threads. A collapsed composer always routes to the terminal."
+msgstr "在终端原生线程中,浏览器元素选择器的选择内容流向何处。折叠的输入框始终路由到终端。"
+
+#: src/renderer/views/WelcomeOverlay.tsx
+msgid "Where do you want to begin?"
+msgstr "您想从哪里开始?"
+
+#: src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+msgid "Where the terminal panel appears."
+msgstr "终端面板出现的位置。"
+
+#. placeholder {0}: env || t`this environment`
+#: src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+msgid "Will run in {0}:"
+msgstr "将在{0}运行:"
+
+#: src/renderer/components/thread/AgentDiscoveryScreen.tsx
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "Windows"
+msgstr "Windows"
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "Windows is not supported yet. Install inside WSL or on macOS/Linux."
+msgstr "尚不支持 Windows。在 WSL 内部或 macOS/Linux 上安装。"
+
+#: src/renderer/components/providers/composerControlBuilders.tsx
+msgid "Work"
+msgstr "工作"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Work in the current checkout"
+msgstr "在当前检出中工作"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+#: src/renderer/components/thread/ChatPane/parts/MessageList.tsx
+msgid "Worked for {elapsed}"
+msgstr "已工作 {elapsed}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow"
+msgstr "工作流程"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow finished. Child agents ran in a separate process and aren’t "
+"streamed here yet."
+msgstr "工作流程完成。子代理在单独的进程中运行,尚未在此处进行流式传输。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Workflow is running in the background. Child agents run in a separate "
+"process and aren’t streamed here yet."
+msgstr "工作流正在后台运行。子代理在单独的进程中运行,尚未在此处进行流式传输。"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowOverlayBody.tsx
+msgid "Workflow phases"
+msgstr "工作流程阶段"
+
+#: src/renderer/components/thread/ChatPane/parts/items/WorkflowResultGroup.tsx
+msgid "Workflow results"
+msgstr "工作流程结果"
+
+#: src/renderer/components/thread/ChatPane/parts/items/toolDisplay.ts
+msgid "Workflow: {description}"
+msgstr "工作流程:{description}"
+
+#: src/renderer/components/thread/ChatPane/parts/items/ActiveSubAgentTile.tsx
+msgid "Workflows"
+msgstr "工作流程"
+
+#: src/renderer/components/thread/ThreadHeaderStatus.tsx
+msgid "Working"
+msgstr "工作中"
+
+#: src/renderer/components/thread/ChatPane/ChatPane.tsx
+msgid "Working for {elapsed}"
+msgstr "已工作 {elapsed}"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+msgid "Working tree clean"
+msgstr "工作树干净"
+
+#: src/renderer/components/thread/ChatPane/parts/items/SubAgentOverlay.tsx
+msgid "Working…"
+msgstr "工作…"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree"
+msgstr "工作树"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree + changes"
+msgstr "工作树 + 更改"
+
+#: src/renderer/components/thread/WorktreeModeSelect.tsx
+msgid "Worktree mode"
+msgstr "工作树模式"
+
+#. placeholder {0}: props.projectName
+#. placeholder {0}: props.worktreeBranch
+#: src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+#: src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+msgid "Worktree: {0}"
+msgstr "工作树:{0}"
+
+#: src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+#: src/renderer/views/ProjectSettingsOverlay/parts/SettingsSidebar.tsx
+msgid "Worktrees"
+msgstr "工作树"
+
+#: src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+msgid "Wrap lines"
+msgstr "自动换行"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment"
+msgstr "撰写评论"
+
+#: src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+msgid "Write a comment…"
+msgstr "写评论..."
+
+#: src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesEditor.tsx
+msgid "Write notes for this project…"
+msgstr "为这个项目写笔记..."
+
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+#: src/renderer/views/SettingsOverlay/parts/AISettings.tsx
+msgid "WSL"
+msgstr "WSL"
+
+#. placeholder {0}: status.envDistro
+#: src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+msgid "WSL ({0})"
+msgstr "WSL({0})"
+
+#: src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+msgid "Your name"
+msgstr "你的名字"
diff --git a/src/renderer/main.tsx b/src/renderer/main.tsx
index 32d2c4cb..223f2add 100644
--- a/src/renderer/main.tsx
+++ b/src/renderer/main.tsx
@@ -13,6 +13,7 @@ import {
} from "./RendererCrashScreen";
import { isIgnorableRejection, isIgnorableWindowError } from "./rendererGlobalErrors";
import { bootstrapAppThemeFromCache } from "./theme/applyAppTheme";
+import { bootstrapAppLocaleFromCache } from "./i18n/i18n";
if (import.meta.env.DEV) {
const warn = console.warn.bind(console);
@@ -149,8 +150,13 @@ reactRoot = createRoot(root, {
},
});
-void import("./app")
- .then(({ App }) => {
+// Load the app chunk and the cached locale's catalog in parallel, then mount
+// once the catalog is active so non-English users don't flash the source locale
+// on first paint. bootstrapAppLocaleFromCache never rejects and is time-bounded
+// (a hung catalog can't wedge mount), so the app-chunk import stays the only
+// bootstrap rejection (handled below).
+void Promise.all([import("./app"), bootstrapAppLocaleFromCache()])
+ .then(([{ App }]) => {
reactRoot?.render(
diff --git a/src/renderer/notifications.ts b/src/renderer/notifications.ts
index 6501d061..3287d647 100644
--- a/src/renderer/notifications.ts
+++ b/src/renderer/notifications.ts
@@ -1,9 +1,11 @@
import { toast } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
import type { Thread, ThreadAttention, ThreadStatus } from "@/shared/contracts";
import { openThread } from "@/renderer/actions/threadActions";
import { useAppStore } from "@/renderer/state/appStore";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { readBridge } from "@/renderer/bridge";
+import { i18n } from "@/renderer/i18n/i18n";
type NotificationCategory = "done" | "needsAttention" | "error";
@@ -74,21 +76,21 @@ function isThreadInActivePanes(threadId: string): boolean {
function getProjectName(projectId: string): string {
const project = useAppStore.getState().projects.find((p) => p.id === projectId);
- return project?.name ?? "Unknown project";
+ return project?.name ?? i18n._(msg`Unknown project`);
}
function getStatusDetail(category: NotificationCategory, status: ThreadStatus): string {
switch (category) {
case "done":
return status === "finished"
- ? "Finished · Waiting for your input"
- : "Done · Waiting for your input";
+ ? i18n._(msg`Finished · Waiting for your input`)
+ : i18n._(msg`Done · Waiting for your input`);
case "needsAttention":
return status === "needs_approval"
- ? "Needs Attention · Approval required"
- : "Needs Attention · Reply required";
+ ? i18n._(msg`Needs Attention · Approval required`)
+ : i18n._(msg`Needs Attention · Reply required`);
case "error":
- return "Error · Agent encountered an error";
+ return i18n._(msg`Error · Agent encountered an error`);
}
}
@@ -120,7 +122,7 @@ function showToastNotification(
const toastId = toast[variant](projectName, {
actionProps: {
- children: "Open",
+ children: i18n._(msg`Open`),
onPress: open,
variant: "secondary",
},
diff --git a/src/renderer/state/sharedSettingsStore.ts b/src/renderer/state/sharedSettingsStore.ts
index ecfbfd67..35280522 100644
--- a/src/renderer/state/sharedSettingsStore.ts
+++ b/src/renderer/state/sharedSettingsStore.ts
@@ -7,6 +7,7 @@ import {
type SharedSettings,
type SharedSettingsInput,
} from "@/shared/settings";
+import type { AiContentLanguage, LocaleSetting } from "@/shared/locale";
import type {
GitReviewMode,
AgentInstanceConfig,
@@ -28,6 +29,8 @@ interface SharedSettingsState extends SharedSettings {
sharedSettingsHydrated: boolean;
setThemeMode: (mode: ThemeMode) => void;
setThemePreset: (id: string) => void;
+ setLocale: (locale: LocaleSetting) => void;
+ setGitTextLanguage: (value: AiContentLanguage) => void;
setTerminalPosition: (position: TerminalPosition) => void;
setCommitGenConfig: (provider: string, model: string, effort: string) => void;
setTitleGenConfig: (provider: string, model: string, effort: string) => void;
@@ -182,6 +185,16 @@ export const useSharedSettings = create()((set, get) => ({
set({ themePreset });
persistSettings(selectSharedSettings(get()));
},
+ setLocale: (locale) => {
+ if (get().locale === locale) return;
+ set({ locale });
+ persistSettings(selectSharedSettings(get()));
+ },
+ setGitTextLanguage: (gitTextLanguage) => {
+ if (get().gitTextLanguage === gitTextLanguage) return;
+ set({ gitTextLanguage });
+ persistSettings(selectSharedSettings(get()));
+ },
setTerminalPosition: (terminalPosition) => {
set({ terminalPosition });
persistSettings(selectSharedSettings(get()));
@@ -541,6 +554,8 @@ function selectSharedSettings(state: SharedSettingsState): SharedSettingsInput {
return {
themeMode: state.themeMode,
themePreset: state.themePreset,
+ locale: state.locale,
+ gitTextLanguage: state.gitTextLanguage,
terminalPosition: state.terminalPosition,
commitGenProvider: state.commitGenProvider,
commitGenModel: state.commitGenModel,
diff --git a/src/renderer/state/slices/runtimeEventSlice.ts b/src/renderer/state/slices/runtimeEventSlice.ts
index 4ad830a3..0e632257 100644
--- a/src/renderer/state/slices/runtimeEventSlice.ts
+++ b/src/renderer/state/slices/runtimeEventSlice.ts
@@ -1,3 +1,4 @@
+import { msg } from "@lingui/core/macro";
import type {
CanonicalItemType,
CanonicalRequestType,
@@ -9,9 +10,10 @@ import type {
ThreadContextUsage,
ToolCallPayload,
} from "@/shared/contracts";
+import { i18n } from "@/renderer/i18n/i18n";
import type { AppStoreState, SliceCreator } from "./shared";
-const STALE_SUB_AGENT_ERROR_MESSAGE = "Interrupted: agent session ended before completion.";
+const STALE_SUB_AGENT_ERROR_MESSAGE = msg`Interrupted: agent session ended before completion.`;
type RuntimePersistenceDirtyListener = (threadIds: readonly string[]) => void;
@@ -901,7 +903,9 @@ function terminateSubAgentItem(item: RuntimeChatItem): RuntimeChatItem {
const nextPayload: ToolCallPayload = {
...payload,
status: "error",
- ...(payload.result === undefined ? { result: { error: STALE_SUB_AGENT_ERROR_MESSAGE } } : {}),
+ ...(payload.result === undefined
+ ? { result: { error: i18n._(STALE_SUB_AGENT_ERROR_MESSAGE) } }
+ : {}),
};
return {
...item,
diff --git a/src/renderer/testSetup.ts b/src/renderer/testSetup.ts
index 0df6a605..ebd1a668 100644
--- a/src/renderer/testSetup.ts
+++ b/src/renderer/testSetup.ts
@@ -1,4 +1,8 @@
import "@testing-library/jest-dom/vitest";
+// Side-effect import: loads + activates the source ("en") catalog so Lingui
+// macros resolve in tests. Components rendered under test still need to be
+// wrapped in an I18nProvider — use `renderWithI18n` from ./testUtils/i18n.
+import "@/renderer/i18n/i18n";
if (typeof globalThis.ResizeObserver === "undefined") {
globalThis.ResizeObserver = class ResizeObserver {
diff --git a/src/renderer/testUtils/i18n.tsx b/src/renderer/testUtils/i18n.tsx
new file mode 100644
index 00000000..5153c1cd
--- /dev/null
+++ b/src/renderer/testUtils/i18n.tsx
@@ -0,0 +1,26 @@
+import type { ReactElement } from "react";
+import { render, type RenderOptions, type RenderResult } from "@testing-library/react";
+import { I18nProvider } from "@lingui/react";
+import { i18n } from "@/renderer/i18n/i18n";
+
+/**
+ * Render under test wrapped in an `I18nProvider`, so components using Lingui
+ * macros (``, `useLingui`) have an active i18n context. The "en" catalog
+ * is loaded + activated by the renderer test setup.
+ *
+ * Drop-in for Testing Library's `render`; import it as `render` in tests that
+ * mount translated components:
+ *
+ * ```ts
+ * import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
+ * ```
+ */
+export function renderWithI18n(
+ ui: ReactElement,
+ options?: Omit,
+): RenderResult {
+ return render(ui, {
+ wrapper: ({ children }) => {children} ,
+ ...options,
+ });
+}
diff --git a/src/renderer/utils/shellUtils.ts b/src/renderer/utils/shellUtils.ts
index e1822379..016f6ece 100644
--- a/src/renderer/utils/shellUtils.ts
+++ b/src/renderer/utils/shellUtils.ts
@@ -1,6 +1,8 @@
import { toast } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
import type { ProjectLocation } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
+import { i18n } from "@/renderer/i18n/i18n";
interface StartShellPayload {
shellId: string;
@@ -12,7 +14,7 @@ export function startShellWithToast(payload: StartShellPayload, label: string):
void readBridge()
.startShell(payload)
.catch((error) =>
- toast.danger(error instanceof Error ? error.message : `Unable to start ${label}.`),
+ toast.danger(error instanceof Error ? error.message : i18n._(msg`Unable to start ${label}.`)),
);
}
diff --git a/src/renderer/utils/titleGen.ts b/src/renderer/utils/titleGen.ts
index 774c6f38..379d40dc 100644
--- a/src/renderer/utils/titleGen.ts
+++ b/src/renderer/utils/titleGen.ts
@@ -1,6 +1,8 @@
import type { AgentStatus, ProjectLocation } from "@/shared/contracts";
+import { resolveAiLanguageName } from "@/shared/locale";
import { readBridge } from "@/renderer/bridge";
import { generateTitleWithFallback } from "@/renderer/components/providers";
+import { detectOSLocale } from "@/renderer/i18n/locales";
import { useAppStore, makeThreadTitle } from "@/renderer/state/appStore";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
@@ -17,6 +19,10 @@ export function generateTitleAsync(
const model = isWsl ? settings.wslTitleGenModel : settings.titleGenModel;
const effort = isWsl ? settings.wslTitleGenEffort : settings.titleGenEffort;
+ // Thread titles are "conversation" text: they follow the app language. When
+ // it resolves to English the directive is omitted, preserving the default
+ // "match the user's message language" behavior.
+ const language = resolveAiLanguageName("match-app", settings.locale, detectOSLocale());
void generateTitleWithFallback({
projectLocation,
@@ -25,6 +31,7 @@ export function generateTitleAsync(
model,
effort,
prompt,
+ ...(language ? { language } : {}),
invoke: (payload) => {
return readBridge().generateTitle(payload);
},
diff --git a/src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx b/src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
index a22ba440..4a2a76c8 100644
--- a/src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
+++ b/src/renderer/views/FileEditorOverlay/FileEditorOverlay.tsx
@@ -1,4 +1,5 @@
import { toast } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { ArrowLeft } from "lucide-react";
import { PageLayout } from "@/renderer/components/layout/PageLayout";
import {
@@ -11,6 +12,7 @@ import { FileEditorPane } from "./parts/FileEditorPane/FileEditorPane";
import { SidebarButton } from "@/renderer/components/common";
export function FileEditorOverlay(props: { onClose: () => void }) {
+ const { t } = useLingui();
const rootContext = useFileEditorStore((state) => state.rootContext);
const buffers = useFileEditorStore((state) => state.buffers);
const openFile = useFileEditorStore((state) => state.openFile);
@@ -23,7 +25,7 @@ export function FileEditorOverlay(props: { onClose: () => void }) {
);
function requestClose() {
- if (hasDirtyBuffers && !window.confirm("Discard unsaved editor changes?")) {
+ if (hasDirtyBuffers && !window.confirm(t`Discard unsaved editor changes?`)) {
return;
}
props.onClose();
@@ -31,7 +33,7 @@ export function FileEditorOverlay(props: { onClose: () => void }) {
return (
@@ -56,7 +58,7 @@ export function FileEditorOverlay(props: { onClose: () => void }) {
}
- label="Return to app"
+ label={t`Return to app`}
onPress={requestClose}
/>
diff --git a/src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx b/src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
index ea57f1f0..3d3cb798 100644
--- a/src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
+++ b/src/renderer/views/FileEditorOverlay/parts/FileEditorModal.tsx
@@ -1,4 +1,5 @@
import { Button, Modal, toast } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { Maximize2, X } from "lucide-react";
import { overlaySidebarColumnClass } from "@/renderer/components/layout/sidebarChrome";
import { useFileEditorStore } from "@/renderer/state/fileEditorStore";
@@ -6,6 +7,7 @@ import { FileEditorPane } from "./FileEditorPane/FileEditorPane";
import { ProjectTreeView } from "./ProjectTreeView/ProjectTreeView";
export function FileEditorModal() {
+ const { t } = useLingui();
const rootContext = useFileEditorStore((state) => state.rootContext);
const overlayMode = useFileEditorStore((state) => state.overlayMode);
const activePath = useFileEditorStore((state) => state.activePath);
@@ -20,7 +22,7 @@ export function FileEditorModal() {
);
function requestClose() {
- if (hasDirtyBuffers && !window.confirm("Discard unsaved editor changes?")) {
+ if (hasDirtyBuffers && !window.confirm(t`Discard unsaved editor changes?`)) {
return;
}
setOverlayMode(null);
@@ -48,7 +50,7 @@ export function FileEditorModal() {
{rootContext.rootLabel}
- {activePath ?? "Select a file from the tree"}
+ {activePath ?? t`Select a file from the tree`}
void;
onClose?: () => void;
}) {
+ const { t } = useLingui();
const activePath = useFileEditorStore((state) => state.activePath);
const rootProjectLocation = useFileEditorStore(
(state) => state.rootContext?.projectLocation ?? null,
@@ -85,7 +87,7 @@ export function FileEditorPane(props: {
const store = useFileEditorStore.getState();
const tabBuffer = store.buffers[path];
if (tabBuffer?.status === "ready" && tabBuffer.isDirty) {
- if (!window.confirm(`Discard unsaved changes in ${path}?`)) {
+ if (!window.confirm(t`Discard unsaved changes in ${path}?`)) {
return;
}
store.discardFileChanges(path);
@@ -173,7 +175,7 @@ export function FileEditorPane(props: {
>
) : (
- Select a file to start editing.
+ Select a file to start editing.
)}
@@ -192,6 +194,7 @@ function TabStripHeader(props: {
onOpenFullscreen?: () => void;
onClose?: () => void;
}) {
+ const { t } = useLingui();
const paths = useTabPaths();
if (paths.length === 0) return null;
@@ -205,7 +208,7 @@ function TabStripHeader(props: {
{paths.map((path, index) => (
- Loading editor…
+ Loading editor…
}
/>
) : (
- {bufferStatus === "binary"
- ? "Binary files can't be edited here."
- : bufferStatus === "too_large"
- ? "This file is too large for the built-in editor."
- : "This file uses an unsupported encoding."}
+ {bufferStatus === "binary" ? (
+ Binary files can't be edited here.
+ ) : bufferStatus === "too_large" ? (
+ This file is too large for the built-in editor.
+ ) : (
+ This file uses an unsupported encoding.
+ )}
)}
diff --git a/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx b/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
index f010178c..0e212676 100644
--- a/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
+++ b/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/EditorToolbar.tsx
@@ -1,5 +1,6 @@
import { Code, Eye, Maximize2, Save, X } from "lucide-react";
import { Tooltip } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
export function EditorToolbar(props: {
isMarkdown: boolean;
@@ -11,6 +12,7 @@ export function EditorToolbar(props: {
onOpenFullscreen?: () => void;
onClose?: () => void;
}) {
+ const { t } = useLingui();
const {
isMarkdown,
showPreview,
@@ -36,7 +38,7 @@ export function EditorToolbar(props: {
- {showPreview ? "Show source" : "Show preview"}
+ {showPreview ? Show source : Show preview }
) : null}
@@ -51,14 +53,16 @@ export function EditorToolbar(props: {
- Save
+
+ Save
+
) : null}
{onOpenFullscreen ? (
@@ -68,7 +72,7 @@ export function EditorToolbar(props: {
diff --git a/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts b/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
index 65390905..0d122a1d 100644
--- a/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
+++ b/src/renderer/views/FileEditorOverlay/parts/FileEditorPane/parts/mergeConflict/codeLensProvider.ts
@@ -1,5 +1,7 @@
+import { msg } from "@lingui/core/macro";
import type { Monaco } from "@monaco-editor/react";
import type { editor as MonacoEditor, languages, IRange, IDisposable } from "monaco-editor";
+import { i18n } from "@/renderer/i18n/i18n";
import type { ConflictBlock } from "@/renderer/utils/mergeConflicts";
export interface CodeLensCommandIds {
@@ -40,7 +42,7 @@ export function createMergeConflictCodeLensProvider(
id: `lc-merge-${index}-current`,
command: {
id: commandIds.acceptCurrent,
- title: "Accept Current Change",
+ title: i18n._(msg`Accept Current Change`),
arguments: [model.uri.toString(), index],
},
});
@@ -49,7 +51,7 @@ export function createMergeConflictCodeLensProvider(
id: `lc-merge-${index}-incoming`,
command: {
id: commandIds.acceptIncoming,
- title: "Accept Incoming Change",
+ title: i18n._(msg`Accept Incoming Change`),
arguments: [model.uri.toString(), index],
},
});
@@ -58,7 +60,7 @@ export function createMergeConflictCodeLensProvider(
id: `lc-merge-${index}-both`,
command: {
id: commandIds.acceptBoth,
- title: "Accept Both Changes",
+ title: i18n._(msg`Accept Both Changes`),
arguments: [model.uri.toString(), index],
},
});
diff --git a/src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx b/src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
index f50a9675..db02a609 100644
--- a/src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
+++ b/src/renderer/views/FileEditorOverlay/parts/FileEditorPanel.tsx
@@ -1,4 +1,5 @@
import { useEffect, useEffectEvent, useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import { useFileEditorStore } from "@/renderer/state/fileEditorStore";
import { FileEditorPane } from "./FileEditorPane/FileEditorPane";
@@ -7,6 +8,7 @@ import { FileEditorPane } from "./FileEditorPane/FileEditorPane";
* Files are selected from the right sidebar's file tree.
*/
export function FileEditorPanel() {
+ const { t } = useLingui();
const rootContext = useFileEditorStore((state) => state.rootContext);
const overlayMode = useFileEditorStore((state) => state.overlayMode);
const setOverlayMode = useFileEditorStore((state) => state.setOverlayMode);
@@ -27,7 +29,7 @@ export function FileEditorPanel() {
const hasDirty = Object.values(useFileEditorStore.getState().buffers).some(
(buffer) => buffer.status === "ready" && buffer.isDirty,
);
- if (hasDirty && !window.confirm("Discard unsaved editor changes?")) {
+ if (hasDirty && !window.confirm(t`Discard unsaved editor changes?`)) {
return;
}
setOverlayMode(null);
diff --git a/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx b/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
index 3aaec229..99daae18 100644
--- a/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
+++ b/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/ProjectTreeView.tsx
@@ -1,4 +1,5 @@
import { Button, Tooltip, toast } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import {
ChevronsDownUp,
FilePlus,
@@ -35,6 +36,7 @@ export function ProjectTreeView(props: {
onSelectFile: (path: string) => void;
onPinFile?: (path: string) => void;
}) {
+ const { t } = useLingui();
const tree = useProjectTree(props);
const rootIsDropTarget = useIsDropTarget("");
const rootLoading = useIsPathLoading("");
@@ -65,17 +67,17 @@ export function ProjectTreeView(props: {
items={[
{
id: "reveal-root",
- label: "Reveal in File Explorer",
+ label: t`Reveal in File Explorer`,
icon: ,
},
- { id: "new-file", label: "New File", icon: },
- { id: "new-folder", label: "New Folder", icon: },
+ { id: "new-file", label: t`New File`, icon: },
+ { id: "new-folder", label: t`New Folder`, icon: },
{
id: "collapse-all",
- label: "Collapse All",
+ label: t`Collapse All`,
icon: ,
},
- { id: "refresh", label: "Refresh", icon: },
+ { id: "refresh", label: t`Refresh`, icon: },
]}
onAction={(action) => {
void tree.handleRootAction(action);
@@ -114,7 +116,7 @@ export function ProjectTreeView(props: {
tree.setSearchQuery(event.target.value)}
onKeyDown={(event) => {
@@ -127,7 +129,7 @@ export function ProjectTreeView(props: {
{tree.searchQuery && (
tree.setSearchQuery("")}
className="flex size-4 shrink-0 items-center justify-center rounded text-muted hover:bg-[var(--row-hover)] hover:text-foreground"
>
@@ -146,7 +148,9 @@ export function ProjectTreeView(props: {
- Collapse all folders
+
+ Collapse all folders
+
@@ -161,7 +165,7 @@ export function ProjectTreeView(props: {
tree.searchLoading ? (
- Searching…
+ Searching…
) : tree.searchResults.length > 0 ? (
@@ -175,7 +179,7 @@ export function ProjectTreeView(props: {
) : (
- No files match "{tree.searchQuery}".
+ No files match "{tree.searchQuery}".
)
) : (
@@ -183,7 +187,7 @@ export function ProjectTreeView(props: {
{rootLoading && !isAnyDirectoryLoaded ? (
- Loading…
+ Loading…
) : (
@@ -273,7 +277,7 @@ function ProjectTreeVirtualRow(props: {
style={{ paddingLeft: `${row.depth * 14 + 8}px` }}
>
- Loading…
+ Loading…
);
}
diff --git a/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx b/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
index 0d6ee66a..2a10c25f 100644
--- a/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
+++ b/src/renderer/views/FileEditorOverlay/parts/ProjectTreeView/parts/TreeEntryRow.tsx
@@ -1,4 +1,5 @@
import { toast } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { ChevronRight, Copy, FilePlus, FolderOpen, FolderPlus, Pencil, Trash2 } from "lucide-react";
import type { ProjectTreeEntry } from "@/shared/contracts";
import { ContextMenu, PixelLoader } from "@/renderer/components/common";
@@ -31,6 +32,7 @@ export function TreeEntryRow(props: {
onHandleCreate: (parentPath: string, type: "file" | "directory", value: string) => Promise;
renderChildren?: boolean;
}) {
+ const { t } = useLingui();
const { entry, depth, draft, setDraft } = props;
const isDirectory = entry.type === "directory";
const isSelected = useIsTabActive(entry.path);
@@ -48,41 +50,41 @@ export function TreeEntryRow(props: {
items={[
{
id: "reveal",
- label: "Reveal in File Explorer",
+ label: t`Reveal in File Explorer`,
icon: ,
},
...(isDirectory
? [
{
id: "new-file",
- label: "New File",
+ label: t`New File`,
icon: ,
},
{
id: "new-folder",
- label: "New Folder",
+ label: t`New Folder`,
icon: ,
},
]
: []),
{
id: "copy-path",
- label: "Copy Path",
+ label: t`Copy Path`,
icon: ,
},
{
id: "copy-relative-path",
- label: "Copy Relative Path",
+ label: t`Copy Relative Path`,
icon: ,
},
{
id: "rename",
- label: "Rename",
+ label: t`Rename`,
icon: ,
},
{
id: "delete",
- label: "Delete",
+ label: t`Delete`,
icon: ,
variant: "danger",
},
@@ -257,7 +259,7 @@ function TreeChildren(props: {
style={{ paddingLeft: `${depth * 14 + 8}px` }}
>
- Loading…
+ Loading…
) : (
entries.map((child) => (
diff --git a/src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx b/src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
index b55a37eb..b67b14d2 100644
--- a/src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
+++ b/src/renderer/views/GitReviewOverlay/GitReviewOverlay.tsx
@@ -2,6 +2,7 @@ import { useEffect, useState } from "react";
import { ArrowLeft, ChevronDown, Columns2, GitBranch, RefreshCw, Rows2 } from "lucide-react";
import { Button, Dropdown, Label, toast, Tooltip } from "@heroui/react";
import type { Selection } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { Project, ProjectLocation, GitStatusResult } from "@/shared/contracts";
import { friendlyError } from "@/shared/messages";
import { readBridge } from "@/renderer/bridge";
@@ -34,6 +35,7 @@ export function GitReviewOverlay(props: {
onMergeAndRemove,
onClose,
} = props;
+ const { t } = useLingui();
const effectiveLocation = locationOverride ?? project.location;
// Create a project view with the effective location so child components
// (GitReviewSidebar, GitDiffContent) use the right path for IPC calls.
@@ -147,7 +149,7 @@ export function GitReviewOverlay(props: {
return (
@@ -187,7 +189,7 @@ export function GitReviewOverlay(props: {
variant="ghost"
size="sm"
className="h-5 min-w-0 max-w-[min(140px,24vw)] shrink px-1.5 text-xs text-muted"
- aria-label="Switch branch"
+ aria-label={t`Switch branch`}
>
{gitStatus.branch}
@@ -212,7 +214,7 @@ export function GitReviewOverlay(props: {
onClick={() => handleSelectFile(null, false)}
>
- All files
+ All files
{selectedFile}
@@ -227,8 +229,12 @@ export function GitReviewOverlay(props: {
{diffFilter === "changes"
- ? `Changes${gitStatus ? ` (${gitStatus.unstaged.length})` : ""}`
- : `Staged${gitStatus ? ` (${gitStatus.staged.length})` : ""}`}
+ ? gitStatus
+ ? t`Changes (${gitStatus.unstaged.length})`
+ : t`Changes`
+ : gitStatus
+ ? t`Staged (${gitStatus.staged.length})`
+ : t`Staged`}
@@ -242,15 +248,15 @@ export function GitReviewOverlay(props: {
}}
>
{gitStatus && gitStatus.staged.length > 0 ? (
-
+
-
+
) : null}
{gitStatus && gitStatus.unstaged.length > 0 ? (
-
+
-
+
) : null}
@@ -263,7 +269,7 @@ export function GitReviewOverlay(props: {
setDiffMode(DIFF_MODE.Split)}
>
setDiffMode(DIFF_MODE.Unified)}
>
void handleRefresh()}
>
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
index b1a32910..f3ca512d 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/GitDiffContent.tsx
@@ -1,5 +1,6 @@
import { useEffect, useRef, useState } from "react";
import { setEnableFastDiffTemplate } from "@git-diff-view/react";
+import { Trans } from "@lingui/react/macro";
import "@git-diff-view/react/styles/diff-view.css";
// Must match worker setting — enables pre-rendered HTML templates (dangerouslySetInnerHTML)
@@ -170,7 +171,7 @@ export function GitDiffContent(props: {
if (!gitStatus?.isRepo) {
return (
- Not a git repository
+ Not a git repository
);
}
@@ -188,7 +189,11 @@ export function GitDiffContent(props: {
{filtered.length === 0 && !loading && (
- {diffFilter === "staged" ? "No staged changes" : "No changes to display"}
+ {diffFilter === "staged" ? (
+ No staged changes
+ ) : (
+ No changes to display
+ )}
)}
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
index 8e0a34a6..8619bd7a 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/DiffSection.tsx
@@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { DiffFile, DiffView, highlighter } from "@git-diff-view/react";
+import { Plural, Trans } from "@lingui/react/macro";
import type { Project } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import { buildInWorker, diffFileFromBundle } from "../../diffBuildClient";
@@ -108,7 +109,15 @@ export function DiffSection(props: {
{!collapsed && (
- {`File too large to display (${(entry.insertions + entry.deletions).toLocaleString()} lines changed)`}
+
+ File too large to display (
+
+ )
+
)}
@@ -118,7 +127,7 @@ export function DiffSection(props: {
if (!activeDiffFile) {
return (
- No diff available for {entry.filePath}
+ No diff available for {entry.filePath}
);
}
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
index ee7ea6af..ba1e471b 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/FileHeader.tsx
@@ -1,4 +1,5 @@
import { ChevronDown, ChevronRight } from "lucide-react";
+import { Trans } from "@lingui/react/macro";
import { handleKeyActivate } from "@/renderer/utils/a11y";
import type { DiffEntry } from "./diffHelpers";
@@ -22,7 +23,7 @@ export function FileHeader(props: {
)}
- {entry.staged ? "staged" : "unstaged"}
+ {entry.staged ? staged : unstaged }
{entry.filePath}
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
index 04ddcf85..423a73ed 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitDiffContent/parts/SingleFileDiff.tsx
@@ -1,5 +1,6 @@
import { useEffect, useState } from "react";
import { DiffFile, DiffView } from "@git-diff-view/react";
+import { Trans } from "@lingui/react/macro";
import type { Project } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import {
@@ -65,12 +66,12 @@ export function SingleFileDiff(props: {
{loading && (
- Loading diff...
+ Loading diff...
)}
{!loading && !diffFile && (
- No changes to display
+ No changes to display
)}
{diffFile && (
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx b/src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
index aa6a7655..ccfeff07 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewPanel.tsx
@@ -9,6 +9,7 @@ import {
WrapText,
} from "lucide-react";
import { toast, Tooltip } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type { Project, ProjectLocation, GitStatusResult } from "@/shared/contracts";
import { friendlyError } from "@/shared/messages";
import { readBridge } from "@/renderer/bridge";
@@ -57,6 +58,7 @@ export function GitReviewPanel(props: {
onClose,
hideHeader,
} = props;
+ const { t } = useLingui();
const threadRemoveAction = useSharedSettings((s) => s.threadRemoveAction);
const effectiveLocation = locationOverride ?? project.location;
const effectiveProject = locationOverride ? { ...project, location: effectiveLocation } : project;
@@ -209,7 +211,7 @@ export function GitReviewPanel(props: {
@@ -232,7 +234,7 @@ export function GitReviewPanel(props: {
{threadRemoveAction === "archive" ? (
@@ -245,7 +247,7 @@ export function GitReviewPanel(props: {
setWrapLines((v) => !v)}
>
@@ -253,7 +255,7 @@ export function GitReviewPanel(props: {
void handleRefresh()}
>
@@ -304,7 +306,7 @@ export function GitReviewPanel(props: {
@@ -326,7 +328,7 @@ export function GitReviewPanel(props: {
{threadRemoveAction === "archive" ? (
@@ -339,7 +341,7 @@ export function GitReviewPanel(props: {
setWrapLines((v) => !v)}
>
@@ -347,7 +349,7 @@ export function GitReviewPanel(props: {
void handleRefresh()}
>
@@ -355,7 +357,7 @@ export function GitReviewPanel(props: {
@@ -363,7 +365,7 @@ export function GitReviewPanel(props: {
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.test.tsx b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.test.tsx
index bd6858fa..52b18c38 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.test.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.test.tsx
@@ -1,4 +1,5 @@
-import { fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { fireEvent, screen, waitFor } from "@testing-library/react";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { ReactNode } from "react";
import { beforeEach, describe, expect, it, vi } from "vitest";
import type { GitStatusResult, Project } from "@/shared/contracts";
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
index 9d448953..54873d5b 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/GitReviewSidebar.tsx
@@ -11,6 +11,7 @@ import {
PanelLeftClose,
} from "lucide-react";
import { Button, ButtonGroup, Dropdown, Label, Modal, Separator } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { GitBranchInfo, GitStatusResult, PrCreateMode, Project } from "@/shared/contracts";
import { getProjectAgentStatuses } from "@/shared/agentStatus";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
@@ -88,6 +89,7 @@ export function GitReviewSidebar(props: {
mode = "overlay",
wrapLines = false,
} = props;
+ const { t } = useLingui();
const storeKey = statusKey ?? project.id;
const isWorktreeStatus = Boolean(statusKey);
const { isCollapsed, collapse, expand } = useSidebar();
@@ -245,11 +247,11 @@ export function GitReviewSidebar(props: {
runPrMode(prMode);
};
const altPrMode: PrCreateMode = isAutoPrMode ? "dialog" : "auto";
- const altPrModeLabel = isAutoPrMode ? "Create PR…" : "Create PR (Auto)";
+ const altPrModeLabel = isAutoPrMode ? t`Create PR…` : t`Create PR (Auto)`;
const createPrButtonContent = (
<>
{createPrPending ? : }
- {isAutoPrMode ? "Create PR (Auto)" : "Create PR"}
+ {isAutoPrMode ? Create PR (Auto) : Create PR }
>
);
const [isInitializingRepo, setIsInitializingRepo] = useState(false);
@@ -297,7 +299,7 @@ export function GitReviewSidebar(props: {
}
- label="Changes"
+ label={t`Changes`}
isActive
/>
@@ -307,13 +309,13 @@ export function GitReviewSidebar(props: {
}
- label="Return to app"
+ label={t`Return to app`}
onPress={onClose}
/>
}
- label="Show sidebar"
+ label={t`Show sidebar`}
onPress={expand}
/>
>
@@ -349,7 +351,7 @@ export function GitReviewSidebar(props: {
)}
{gitStatus && gitStatus.staged.length > 0 && (
0 && (
- Not a git repository
+
+ Not a git repository
+
{onInitRepository && (
- Initialize Repository
+ Initialize Repository
>
)
}
@@ -421,11 +425,15 @@ export function GitReviewSidebar(props: {
- Working tree clean
+
+ Working tree clean
+
- {hasRemote
- ? "File changes will appear here."
- : "No remote configured. Add a remote to enable push and pull."}
+ {hasRemote ? (
+ File changes will appear here.
+ ) : (
+ No remote configured. Add a remote to enable push and pull.
+ )}
{!hasRemote && onAddRemote && (
setAddRemoteOpen(true)}
>
- Add Remote
+ Add Remote
)}
@@ -516,7 +524,7 @@ export function GitReviewSidebar(props: {
@@ -524,7 +532,7 @@ export function GitReviewSidebar(props: {
{
if (key === "pr-auto") selectPrMode("auto");
else if (key === "pr-dialog") selectPrMode("dialog");
@@ -539,16 +547,20 @@ export function GitReviewSidebar(props: {
{showMergeActions ? (
<>
-
+
-
+
-
+
>
) : null}
@@ -584,21 +596,37 @@ export function GitReviewSidebar(props: {
- Add Remote
+
+ Add Remote
+
-
@@ -178,7 +182,7 @@ export function CommitSyncPanel(props: {
) : (
COMMIT_ACTION_ICONS[primaryCommitAction]
)}
- {COMMIT_ACTION_LABELS[primaryCommitAction]}
+ {t(COMMIT_ACTION_LABELS[primaryCommitAction])}
>
)}
@@ -195,7 +199,7 @@ export function CommitSyncPanel(props: {
@@ -203,7 +207,7 @@ export function CommitSyncPanel(props: {
{
if (key === "pull-from-source") {
void handlePullFromSource();
@@ -216,22 +220,24 @@ export function CommitSyncPanel(props: {
{COMMIT_ACTION_ICONS[action]}
- {COMMIT_ACTION_LABELS[action]}
+ {t(COMMIT_ACTION_LABELS[action])}
))}
{showPullFromSource ? (
- Pull from {sourceBranch} ({sourceAhead})
+
+ Pull from {sourceBranch} ({sourceAhead})
+
) : null}
@@ -252,7 +258,7 @@ export function CommitSyncPanel(props: {
{({ isPending }) => (
<>
{isPending ? : }
- Push ({ahead})
+ Push ({ahead})
>
)}
@@ -286,10 +292,12 @@ export function CommitSyncPanel(props: {
)}
{needsPush
- ? `Push${ahead > 0 ? ` (${ahead})` : ""}`
+ ? ahead > 0
+ ? t`Push (${ahead})`
+ : t`Push`
: behind > 0 || ahead > 0
- ? `Sync${behind > 0 ? ` ↓${behind}` : ""}${ahead > 0 ? ` ↑${ahead}` : ""}`
- : "Sync"}
+ ? `${t`Sync`}${behind > 0 ? ` ↓${behind}` : ""}${ahead > 0 ? ` ↑${ahead}` : ""}`
+ : t`Sync`}
>
)}
@@ -306,7 +314,7 @@ export function CommitSyncPanel(props: {
@@ -314,7 +322,7 @@ export function CommitSyncPanel(props: {
{
if (key === "pull-from-source") {
void handlePullFromSource();
@@ -324,44 +332,46 @@ export function CommitSyncPanel(props: {
}}
>
{showPull ? (
-
+
- Pull ({behind})
+ {t`Pull (${behind})`}
) : null}
{showPull ? (
-
+
- Pull Rebase ({behind})
+ {t`Pull Rebase (${behind})`}
) : null}
{showPush ? (
- 0 ? ` (${ahead})` : ""}`}>
+ 0 ? t`Push (${ahead})` : t`Push`}>
- Push{ahead > 0 ? ` (${ahead})` : ""}
+ {ahead > 0 ? t`Push (${ahead})` : t`Push`}
) : null}
{showSyncBoth ? (
-
+
- Sync
+ {t`Sync`}
) : null}
{showSyncBoth ? (
-
+
- Sync (Rebase)
+ {t`Sync (Rebase)`}
) : null}
{showPullFromSourceItem ? (
- Pull from {sourceBranch} ({sourceAhead})
+
+ Pull from {sourceBranch} ({sourceAhead})
+
) : null}
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
index 6b7f961c..12b10cc5 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictFileCard.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef, useState } from "react";
import { ChevronDown, ChevronRight, FileEdit, Plus } from "lucide-react";
import { DiffFile, DiffView, highlighter } from "@git-diff-view/react";
+import { Plural, Trans, useLingui } from "@lingui/react/macro";
import type { GitFileChange, Project } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import { useGitStore } from "@/renderer/state/gitStore";
@@ -40,6 +41,7 @@ export function ConflictFileCard(props: {
theme,
wrapLines,
} = props;
+ const { t } = useLingui();
const rowPadX = useGitReviewRowPadX();
const [expanded, setExpanded] = useState(false);
const [diffFile, setDiffFile] = useState(null);
@@ -157,7 +159,7 @@ export function ConflictFileCard(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-[var(--row-hover)] hover:text-foreground"
- title="Stage"
+ title={t`Stage`}
onClick={handleStageConflict}
onKeyDown={(e) =>
handleKeyActivate(e, () => void handleStageConflict(e), { stopPropagation: true })
@@ -169,7 +171,7 @@ export function ConflictFileCard(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-[var(--row-hover)] hover:text-foreground"
- title="Open in editor"
+ title={t`Open in editor`}
onClick={handleOpenInEditor}
onKeyDown={(e) =>
handleKeyActivate(e, () => handleOpenInEditor(e), { stopPropagation: true })
@@ -190,11 +192,21 @@ export function ConflictFileCard(props: {
)}
{!loading && tooLarge && (
- {`File too large to display (${(file.insertions + file.deletions).toLocaleString()} lines changed)`}
+
+ File too large to display (
+
+ )
+
)}
{!loading && !tooLarge && !diffFile && loadedKeyRef.current !== null && (
- No changes to display
+
+ No changes to display
+
)}
{diffFile && (
setExpanded((v) => !v)}
>
{expanded ? : }
- Conflicts
+ Conflicts
({files.length})
@@ -138,7 +140,7 @@ export function ConflictGroup(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-[var(--row-hover)] hover:text-foreground"
- title="Stage"
+ title={t`Stage`}
onClick={(e) => {
e.stopPropagation();
void handleStageConflict(file.path);
@@ -155,7 +157,7 @@ export function ConflictGroup(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-[var(--row-hover)] hover:text-foreground"
- title="Open in editor"
+ title={t`Open in editor`}
onClick={(e) => {
e.stopPropagation();
void handleOpenInEditor(file.path);
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
index 53d22b3c..66df74c4 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/ConflictResolutionActions.tsx
@@ -1,5 +1,6 @@
import { Sparkles } from "lucide-react";
import { Button } from "@heroui/react";
+import { Trans } from "@lingui/react/macro";
import { PixelLoader } from "@/renderer/components/common";
import { GitReviewSection } from "./GitReviewSection";
@@ -23,7 +24,7 @@ export function ConflictResolutionActions(props: {
onPress={onResolveWithAgent}
>
- Fix in Agent
+ Fix in Agent
(
<>
{isPending && }
- Abort Merge
+ Abort Merge
>
)}
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
index 15520f5d..4b1c990b 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/CreatePrModal.tsx
@@ -1,5 +1,6 @@
import { ChevronDown, GitPullRequest, Sparkles } from "lucide-react";
import { Button, ButtonGroup, Dropdown, Label, Modal, Tooltip } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { GitBranchInfo } from "@/shared/contracts";
import { PixelLoader, TextArea } from "@/renderer/components/common";
@@ -39,6 +40,7 @@ export function CreatePrModal(props: {
handleCreatePr,
handleGeneratePrSummary,
} = props;
+ const { t } = useLingui();
return (
@@ -46,7 +48,9 @@ export function CreatePrModal(props: {
- Create PR
+
+ Create PR
+
{effectiveBranch}
→
@@ -57,7 +61,7 @@ export function CreatePrModal(props: {
{
@@ -83,7 +87,7 @@ export function CreatePrModal(props: {
@@ -167,7 +175,7 @@ export function PrSection(props: {
{({ isPending }) => (
<>
{isPending ? : }
- Ready for Review
+ Ready for Review
>
)}
@@ -175,7 +183,7 @@ export function PrSection(props: {
@@ -183,13 +191,15 @@ export function PrSection(props: {
{
if (key === "close") void handleClosePr();
}}
>
-
- Close PR
+
+
+ Close PR
+
@@ -202,7 +212,9 @@ export function PrSection(props: {
- Merging is blocked
+
+ Merging is blocked
+
{canBypass && (
- Bypass branch protection rules (admin merge)
+ Bypass branch protection rules (admin merge)
)}
@@ -238,7 +250,7 @@ export function PrSection(props: {
{({ isPending }) => (
<>
{isPending ? : }
- Update branch
+ Update branch
>
)}
@@ -246,7 +258,7 @@ export function PrSection(props: {
@@ -254,17 +266,21 @@ export function PrSection(props: {
{
if (key === "rebase") void handleUpdatePrBranch(true);
else void handleUpdatePrBranch(false);
}}
>
-
- Update with merge commit
+
+
+ Update with merge commit
+
-
- Update with rebase
+
+
+ Update with rebase
+
@@ -282,7 +298,7 @@ export function PrSection(props: {
{({ isPending }) => (
<>
{isPending ? : }
- Merge PR: Squash
+ Merge PR: Squash
>
)}
@@ -290,7 +306,7 @@ export function PrSection(props: {
@@ -298,22 +314,28 @@ export function PrSection(props: {
{
if (key === "close") void handleClosePr();
else void handleMergePr(key as "merge" | "squash" | "rebase", bypass);
}}
>
-
- Merge PR: Commit
+
+
+ Merge PR: Commit
+
-
- Merge PR: Rebase
+
+
+ Merge PR: Rebase
+
-
- Close PR
+
+
+ Close PR
+
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
index a3e873b5..29132482 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/commitActions.ts
@@ -1,3 +1,5 @@
+import { msg } from "@lingui/core/macro";
+import type { MessageDescriptor } from "@lingui/core";
import type { CommitDefaultAction } from "@/shared/contracts";
export interface CommitActionAvailability {
@@ -7,10 +9,11 @@ export interface CommitActionAvailability {
canCreatePr: boolean;
}
-export const COMMIT_ACTION_LABELS: Record = {
- commit: "Commit",
- "commit-push": "Commit & Push",
- "commit-push-pr": "Commit & Create PR",
+/** Display labels keyed by the stable {@link CommitDefaultAction} id; resolve via `useLingui().t`. */
+export const COMMIT_ACTION_LABELS: Record = {
+ commit: msg`Commit`,
+ "commit-push": msg`Commit & Push`,
+ "commit-push-pr": msg`Commit & Create PR`,
};
/**
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
index e785adf4..b1fcef93 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
+++ b/src/renderer/views/GitReviewOverlay/parts/GitReviewSidebar/parts/useGitReviewActions.ts
@@ -1,9 +1,12 @@
import { toast } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type { GitBranchInfo, GitStatusResult, Project, ProjectLocation } from "@/shared/contracts";
import { getProjectAgentStatuses } from "@/shared/agentStatus";
import { buildWorktreeLocation } from "@/shared/worktree";
+import { resolveAiLanguageName } from "@/shared/locale";
import { msg, friendlyError, friendlyErrorWithDetail } from "@/shared/messages";
import { readBridge } from "@/renderer/bridge";
+import { detectOSLocale } from "@/renderer/i18n/locales";
import { captureProductEvent } from "@/renderer/analytics/posthog";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
import {
@@ -60,6 +63,7 @@ function truncateForToast(details: string): string {
}
export function useGitReviewActions(args: UseGitReviewActionsArgs) {
+ const { t } = useLingui();
const {
project,
gitStatus,
@@ -95,6 +99,15 @@ export function useGitReviewActions(args: UseGitReviewActionsArgs) {
const commitGenEffort = useSharedSettings((s) =>
isWsl ? s.wslCommitGenEffort : s.commitGenEffort,
);
+ // Commit messages and PR summaries are "git text": they follow the dedicated
+ // gitTextLanguage setting (default English), independent of the UI language.
+ const gitTextLanguageSetting = useSharedSettings((s) => s.gitTextLanguage);
+ const appLocale = useSharedSettings((s) => s.locale);
+ const gitTextLanguage = resolveAiLanguageName(
+ gitTextLanguageSetting,
+ appLocale,
+ detectOSLocale(),
+ );
const agentStatuses = useAgentStatusesStore((s) => s.agentStatuses);
const wslAgentStatuses = useAgentStatusesStore((s) => s.wslAgentStatuses);
@@ -185,6 +198,7 @@ export function useGitReviewActions(args: UseGitReviewActionsArgs) {
provider: commitGenProvider,
model: commitGenModel,
effort: commitGenEffort,
+ ...(gitTextLanguage ? { language: gitTextLanguage } : {}),
invoke: (payload) => readBridge().generateCommitMessage(payload),
});
}
@@ -275,7 +289,7 @@ export function useGitReviewActions(args: UseGitReviewActionsArgs) {
toast.danger(summary, {
description: truncateForToast(details),
actionProps: {
- children: "Copy details",
+ children: t`Copy details`,
onPress: () => void navigator.clipboard.writeText(details),
},
timeout: 0,
@@ -511,6 +525,7 @@ export function useGitReviewActions(args: UseGitReviewActionsArgs) {
baseBranch,
...(resolved.model ? { model: resolved.model } : {}),
...(resolved.effort ? { effort: resolved.effort } : {}),
+ ...(gitTextLanguage ? { language: gitTextLanguage } : {}),
});
captureProductEvent("git.pr_summary_generated", {
effort: resolved.effort || "default",
@@ -610,7 +625,7 @@ export function useGitReviewActions(args: UseGitReviewActionsArgs) {
const candidates = getCommitGenCandidates(projectAgentStatuses, commitGenProvider);
if (candidates.length === 0) {
- toast.danger("No agent available to generate PR summary");
+ toast.danger(t`No agent available to generate PR summary`);
return;
}
diff --git a/src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx b/src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
index 3e6e7b25..2d861288 100644
--- a/src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
+++ b/src/renderer/views/GitReviewOverlay/parts/GitStackedDiff.tsx
@@ -16,6 +16,7 @@ import {
Plus,
Undo2,
} from "lucide-react";
+import { Plural, Trans, useLingui } from "@lingui/react/macro";
import type { GitFileChange, Project } from "@/shared/contracts";
import { isLockFile } from "@/shared/gitUtils";
import { getFileIconUrl } from "@/renderer/components/common/fileIcons";
@@ -74,6 +75,7 @@ export function StackedFileCard(props: {
worktreePath,
worktreeBranch,
} = props;
+ const { t } = useLingui();
const rowPadX = useGitReviewRowPadX();
const [expanded, setExpanded] = useState(false);
const [revertOpen, setRevertOpen] = useState(false);
@@ -253,7 +255,7 @@ export function StackedFileCard(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-[var(--row-hover)] hover:text-foreground"
- title="Open in editor"
+ title={t`Open in editor`}
onClick={(e) => {
e.stopPropagation();
handleOpenInEditor();
@@ -268,7 +270,7 @@ export function StackedFileCard(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-[var(--row-hover)] hover:text-foreground"
- title={file.staged ? "Unstage" : "Stage"}
+ title={file.staged ? t`Unstage` : t`Stage`}
onClick={handleStageToggle}
onKeyDown={(e) =>
handleKeyActivate(
@@ -285,7 +287,7 @@ export function StackedFileCard(props: {
role="button"
tabIndex={0}
className="rounded p-0.5 text-muted transition-colors hover:bg-danger/10 hover:text-danger"
- title="Revert changes"
+ title={t`Revert changes`}
onClick={handleRevertClick}
onKeyDown={(e) =>
handleKeyActivate(e, () => setRevertOpen(true), { stopPropagation: true })
@@ -308,11 +310,21 @@ export function StackedFileCard(props: {
)}
{!loading && tooLarge && (
- {`File too large to display (${(file.insertions + file.deletions).toLocaleString()} lines changed)`}
+
+ File too large to display (
+
+ )
+
)}
{!loading && !tooLarge && !diffFile && loadedKeyRef.current !== null && (
- No changes to display
+
+ No changes to display
+
)}
{diffFile && (
@@ -333,13 +345,13 @@ export function StackedFileCard(props: {
+
Are you sure you want to revert {file.path}? This cannot be undone.
- >
+
}
- confirmLabel="Revert"
+ confirmLabel={t`Revert`}
onConfirm={() => void handleRevert()}
onClose={() => setRevertOpen(false)}
/>
diff --git a/src/renderer/views/HomeView.test.tsx b/src/renderer/views/HomeView.test.tsx
index b951045f..573289d9 100644
--- a/src/renderer/views/HomeView.test.tsx
+++ b/src/renderer/views/HomeView.test.tsx
@@ -1,4 +1,5 @@
-import { render, screen } from "@testing-library/react";
+import { screen } from "@testing-library/react";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import { beforeEach, describe, expect, it } from "vitest";
import type { AgentStatus, Project, Thread } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
diff --git a/src/renderer/views/HomeView.tsx b/src/renderer/views/HomeView.tsx
index d5510a87..c65f281e 100644
--- a/src/renderer/views/HomeView.tsx
+++ b/src/renderer/views/HomeView.tsx
@@ -1,5 +1,6 @@
import { ArrowRight, FolderOpen, House, Plus } from "lucide-react";
import { useShallow } from "zustand/shallow";
+import { Trans } from "@lingui/react/macro";
import { isHomeProject, isHomeProjectId } from "@/shared/homeScope";
import { useAppStore } from "@/renderer/state/appStore";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
@@ -44,7 +45,7 @@ export function HomeView() {
>
- Home
+ Home
@@ -70,7 +71,7 @@ export function HomeView() {
{recentThreads.length > 0 ? (
- Recent threads
+ Recent threads
{recentThreads.map((thread) => {
diff --git a/src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx b/src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
index 9a3a86a9..ff9f3a19 100644
--- a/src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
+++ b/src/renderer/views/LoginTerminalOverlay/LoginTerminalOverlay.tsx
@@ -1,5 +1,6 @@
import { useEffect, useRef, useState } from "react";
import { Button } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { X } from "lucide-react";
import { readBridge } from "@/renderer/bridge";
import {
@@ -19,6 +20,7 @@ import { XTermSurface, type XTermSurfaceHandle } from "@/renderer/components/ter
* reset their pending state.
*/
export function LoginTerminalOverlay() {
+ const { t } = useLingui();
const active = useLoginTerminalStore((state) => state.active);
const [renderedSession, setRenderedSession] = useState(null);
const [visible, setVisible] = useState(false);
@@ -94,7 +96,7 @@ export function LoginTerminalOverlay() {
if (!renderedSession) return null;
const isInstall = renderedSession.purpose === "install";
- const purposeNoun = isInstall ? "install" : "login";
+ const purposeNoun = isInstall ? t`install` : t`login`;
return (
@@ -124,21 +126,21 @@ export function LoginTerminalOverlay() {
}`}
>
{renderedSession.label} {purposeNoun}
- {renderedSession.failedExitCode !== undefined ? " failed" : ""}
+ {renderedSession.failedExitCode !== undefined ? <> {t`failed`}> : null}
{renderedSession.failedExitCode !== undefined
- ? `Exited with code ${renderedSession.failedExitCode}. Close to retry.`
+ ? t`Exited with code ${renderedSession.failedExitCode}. Close to retry.`
: isInstall
- ? "Installing in this terminal. Closes when finished."
- : "Complete the prompts in this terminal. Closes when finished."}
+ ? t`Installing in this terminal. Closes when finished.`
+ : t`Complete the prompts in this terminal. Closes when finished.`}
diff --git a/src/renderer/views/MainView/parts/AppContent/AppContent.tsx b/src/renderer/views/MainView/parts/AppContent/AppContent.tsx
index 24d24e8d..63a7a743 100644
--- a/src/renderer/views/MainView/parts/AppContent/AppContent.tsx
+++ b/src/renderer/views/MainView/parts/AppContent/AppContent.tsx
@@ -1,6 +1,7 @@
import { useShallow } from "zustand/shallow";
import { X } from "lucide-react";
import { toast } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type {
ExtractContextResult,
Project,
@@ -47,6 +48,7 @@ import { ThreadPane } from "./parts/ThreadPane";
import { DraftPane } from "./parts/DraftPane";
export function AppContent() {
+ const { t } = useLingui();
const view = useAppStore((state) => state.view);
const projectIds = useProjectIds();
const draftProjectId = view.kind === "draft" ? view.projectId : undefined;
@@ -58,8 +60,8 @@ export function AppContent() {
const activeGroupName = useAppStore((s) => {
const v = s.view;
if (v.kind !== "thread" || !v.activeGroupId) return undefined;
- const match = s.threads.find((t) => t.groupId === v.activeGroupId);
- return match?.groupName ?? match?.title ?? "Group";
+ const match = s.threads.find((thread) => thread.groupId === v.activeGroupId);
+ return match?.groupName ?? match?.title ?? t`Group`;
});
async function handleDraftStart(
project: Project,
@@ -112,7 +114,7 @@ export function AppContent() {
newWorktreeSetupPath = result.path;
if (worktreeTransferUncommitted && result.changesTransferred === false) {
toast.danger(
- "Couldn't copy your uncommitted changes into the new worktree — they remain on the current branch.",
+ t`Couldn't copy your uncommitted changes into the new worktree — they remain on the current branch.`,
);
}
} catch (err) {
@@ -144,7 +146,7 @@ export function AppContent() {
groupId: currentView.activeGroupId,
groupName: useAppStore
.getState()
- .threads.find((t) => t.groupId === currentView.activeGroupId)?.groupName,
+ .threads.find((thread) => thread.groupId === currentView.activeGroupId)?.groupName,
}
: undefined;
@@ -197,8 +199,8 @@ export function AppContent() {
groupName = sourceThread.groupName ?? sourceThread.title;
if (!sourceThread.groupId) {
useAppStore.setState((state) => ({
- threads: state.threads.map((t) =>
- t.id === sourceThread.id ? { ...t, groupId, groupName } : t,
+ threads: state.threads.map((thread) =>
+ thread.id === sourceThread.id ? { ...thread, groupId, groupName } : thread,
),
}));
}
@@ -268,7 +270,9 @@ export function AppContent() {
const targetLabel = agents.find((a) => a.kind === targetAgentKind)?.label ?? targetAgentKind;
toast.success(
- extractedContext ? `Context transferred to ${targetLabel}` : `Started ${targetLabel} thread`,
+ extractedContext
+ ? t`Context transferred to ${targetLabel}`
+ : t`Started ${targetLabel} thread`,
);
}
@@ -297,7 +301,7 @@ export function AppContent() {
const hasValidPanes = view.panes.some((id) =>
isDraftPaneId(id)
? projectIds.includes(parseDraftProjectId(id) ?? "")
- : storeThreads.some((t) => t.id === id),
+ : storeThreads.some((thread) => thread.id === id),
);
if (!hasValidPanes) {
@@ -360,7 +364,7 @@ export function AppContent() {
{activeGroupName}
useAppStore.getState().closeGroupView()}
>
diff --git a/src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx b/src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
index d4d2157e..999d4ef8 100644
--- a/src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
+++ b/src/renderer/views/MainView/parts/AppContent/parts/Thread/parts/ContinueInProviderDialog.tsx
@@ -1,5 +1,6 @@
import { useState } from "react";
import { Modal, ToggleButton, Tooltip } from "@heroui/react";
+import { Trans } from "@lingui/react/macro";
import type {
AgentStatus,
ExtractContextResult,
@@ -256,7 +257,9 @@ export function ContinueInProviderDialog(props: {
- Continue in another provider
+
+ Continue in another provider
+
@@ -264,7 +267,9 @@ export function ContinueInProviderDialog(props: {
{/* Target provider + config */}
- Target provider
+
+ Target provider
+
0 && (
- Context extraction ({sourceAgent?.label ?? thread.agentKind})
+ Context extraction ({sourceAgent?.label ?? thread.agentKind})
{modelEffortControls.map((control, index) =>
@@ -321,14 +326,16 @@ export function ContinueInProviderDialog(props: {
- Extracting context from {sourceAgent?.label ?? thread.agentKind}...
+ Extracting context from {sourceAgent?.label ?? thread.agentKind}...
)}
{phase === "error" && (
- Could not extract context.
+
+ Could not extract context.
+
{errorMessage && (
{errorMessage}
)}
@@ -340,36 +347,36 @@ export function ContinueInProviderDialog(props: {
{phase === "select" && (
<>
- Cancel
+ Cancel
handleAction(false)}
>
- Clone
+ Clone
handleAction(true)}
>
- Move
+ Move
>
)}
{phase === "extracting" && (
- Cancel
+ Cancel
)}
{phase === "error" && (
<>
- Cancel
+ Cancel
- Start Without Context
+ Start Without Context
>
)}
diff --git a/src/renderer/views/MainView/parts/AppOverlays.tsx b/src/renderer/views/MainView/parts/AppOverlays.tsx
index 9a6ecb05..3a5fd163 100644
--- a/src/renderer/views/MainView/parts/AppOverlays.tsx
+++ b/src/renderer/views/MainView/parts/AppOverlays.tsx
@@ -1,5 +1,6 @@
import { lazy, Suspense } from "react";
import { AlertDialog } from "@heroui/react";
+import { Trans } from "@lingui/react/macro";
import { PixelLoader } from "@/renderer/components/common";
import { buildWorktreeLocation } from "@/shared/worktree";
import { OverlayShell } from "@/renderer/components/layout/OverlayShell";
@@ -214,25 +215,30 @@ function UsageLoginConfirmationDialog() {
- Use detected session?
+
+ Use detected session?
+
- Found a signed-in {activeRequest.providerLabel} session.
+ Found a signed-in {activeRequest.providerLabel} session.
- Use this account for usage tracking, or change users in the browser before continuing.
+
+ Use this account for usage tracking, or change users in the browser before
+ continuing.
+
- Cancel
+ Cancel
respond("change")}>
- Change User
+ Change User
respond("use")}>
- Use Session
+ Use Session
diff --git a/src/renderer/views/MainView/parts/AppShell/AppShell.tsx b/src/renderer/views/MainView/parts/AppShell/AppShell.tsx
index 62e1ec2a..6ca00dd0 100644
--- a/src/renderer/views/MainView/parts/AppShell/AppShell.tsx
+++ b/src/renderer/views/MainView/parts/AppShell/AppShell.tsx
@@ -9,6 +9,7 @@ import {
useState,
} from "react";
import { useShallow } from "zustand/shallow";
+import { useLingui } from "@lingui/react/macro";
import { isMac, isWindows } from "@/renderer/bridge";
import { useTwoRafReady } from "@/renderer/hooks/useTwoRafReady";
import { useSidebarGlassActive } from "@/renderer/hooks/useGlassState";
@@ -310,6 +311,7 @@ function ShellSidebarResizeHandle(props: {
onMouseLeave: () => void;
onMouseDown: (event: React.MouseEvent) => void;
}) {
+ const { t } = useLingui();
const { isCollapsed, isOverlay } = useSidebarOverlayStore(
useShallow((s) => ({
isCollapsed: s.isCollapsed,
@@ -337,7 +339,7 @@ function ShellSidebarResizeHandle(props: {
onMouseDown={props.onMouseDown}
role="separator"
aria-orientation="vertical"
- aria-label="Resize sidebar"
+ aria-label={t`Resize sidebar`}
/>
);
}
@@ -353,6 +355,7 @@ export function AppShell(props: {
onRequestClosePanels?: () => void;
onDismissRightOverlay?: () => void;
}) {
+ const { t } = useLingui();
const { sidebar, content, sidebarHeader, contentHeader, rightPanel, gitPanel } = props;
const forceSidebarExpanded = props.forceSidebarExpanded === true;
const terminalPosition = useSharedSettings((s) => s.terminalPosition);
@@ -612,7 +615,7 @@ export function AppShell(props: {
onResizeStart={isBottom ? handlePanelBottomResizeStart : handlePanelResizeStart}
panelRef={panelRef}
panelInnerRef={panelInnerRef}
- ariaLabel="Resize terminal panel"
+ ariaLabel={t`Resize terminal panel`}
overlay={rightPanelAsOverlay}
overlayReady={rightOverlayReadyForDisplay}
overlayTop={rightOverlayTop}
@@ -630,7 +633,7 @@ export function AppShell(props: {
onResizeStart={handleGitPanelResizeStart}
panelRef={gitPanelRef}
panelInnerRef={gitPanelInnerRef}
- ariaLabel="Resize git panel"
+ ariaLabel={t`Resize git panel`}
overlay={gitPanelAsOverlay}
overlayReady={rightOverlayReadyForDisplay}
overlayTop={rightOverlayTop}
diff --git a/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.test.tsx b/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.test.tsx
index 5a2c1425..9cf4be0e 100644
--- a/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.test.tsx
+++ b/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.test.tsx
@@ -1,6 +1,7 @@
-import { fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { fireEvent, screen, waitFor } from "@testing-library/react";
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
import type { GhListAccountsResult, GhListReposResult } from "@/shared/contracts";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
const mocks = vi.hoisted(() => ({
listWslDistros: vi.fn<() => Promise>().mockResolvedValue([]),
diff --git a/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx b/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
index 44cc7c01..94e1b64f 100644
--- a/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
+++ b/src/renderer/views/MainView/parts/CreateProject/CloneProjectModal.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef, useState, type ReactNode } from "react";
import { ChevronDown, FolderOpen, Link2, Lock, Monitor, Search } from "lucide-react";
import { Button, Dropdown, Label, Modal } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { GitHubAccount, GitHubRepoSummary } from "@/shared/contracts";
import {
cloneFolderNameFromRepo,
@@ -68,6 +69,7 @@ export function CloneProjectModal() {
}
function CloneProjectForm() {
+ const { t } = useLingui();
const lastUsedProjectDirs = useSharedSettings((s) => s.lastUsedProjectDirs);
const [distros, setDistros] = useState([]);
@@ -184,7 +186,7 @@ function CloneProjectForm() {
.catch((error) => {
if (!active) return;
setRepos([]);
- setReposError(errorMessage(error, "Couldn't list repositories."));
+ setReposError(errorMessage(error, t`Couldn't list repositories.`));
});
return () => {
active = false;
@@ -207,10 +209,10 @@ function CloneProjectForm() {
mode === "github"
? selectedRepo
? null
- : "Select a repository."
+ : t`Select a repository.`
: url.trim()
? null
- : "Enter a repository URL.";
+ : t`Enter a repository URL.`;
const nameError = validateProjectName(name);
const parentError = validateScratchParent(scratchParent, choice);
const validationError = targetError ?? nameError ?? parentError;
@@ -258,48 +260,58 @@ function CloneProjectForm() {
await commitCloneProject({ choice, parentDir: scratchParent, name, source });
usePanelStore.getState().closeCloneProjectModal();
} catch (error) {
- setSubmitError(errorMessage(error, "Couldn't clone the repository."));
+ setSubmitError(errorMessage(error, t`Couldn't clone the repository.`));
} finally {
setBusy(false);
}
}
const cloneTarget =
- mode === "github" ? (selectedRepo?.nameWithOwner ?? "repository") : url.trim() || "repository";
+ mode === "github"
+ ? (selectedRepo?.nameWithOwner ?? t`repository`)
+ : url.trim() || t`repository`;
if (busy) {
return (
<>
- Cloning…
+
+ Cloning…
+
- Cloning {cloneTarget}
+
+ Cloning {cloneTarget}
+
- Downloading into “{name || "the chosen folder"}”. This can take a moment for large
- repositories.
+
+ Downloading into “{name || t`the chosen folder`}”. This can take a moment for large
+ repositories.
+
- Cloning…
+ Cloning…
>
);
}
- const runtimeLabel = runtimeKey === "native" ? "Native" : runtimeKey;
+ const runtimeLabel = runtimeKey === "native" ? t`Native` : runtimeKey;
return (
<>
- Clone a repository
+
+ Clone a repository
+
- Browse your GitHub repositories or paste a clone URL.
+ Browse your GitHub repositories or paste a clone URL.
@@ -311,7 +323,7 @@ function CloneProjectForm() {
selectMode("url")}>
- Clone URL
+ Clone URL
@@ -331,9 +343,11 @@ function CloneProjectForm() {
/>
) : (
- Repository URL
+
+ Repository URL
+
changeUrl(e.target.value)}
@@ -344,9 +358,11 @@ function CloneProjectForm() {
{/* Runtime (WSL only) */}
{showRuntime ? (
- Runtime
+
+ Runtime
+
-
+
{runtimeKey === "native" ? (
@@ -359,14 +375,16 @@ function CloneProjectForm() {
setRuntimeKey(String(key))}
>
-
+
- Native
+
+ Native
+
{distros.map((distro) => (
@@ -382,10 +400,12 @@ function CloneProjectForm() {
{/* Folder name */}
- Folder name
+
+ Folder name
+
{
nameTouched.current = true;
@@ -396,9 +416,11 @@ function CloneProjectForm() {
{/* Location */}
- Location
+
+ Location
+
void handleBrowse()}
@@ -410,7 +432,9 @@ function CloneProjectForm() {
{pickerLeaf.tail}
) : (
- Choose a folder…
+
+ Choose a folder…
+
)}
@@ -419,14 +443,14 @@ function CloneProjectForm() {
- Cancel
+ Cancel
void handleSubmit()}
>
- Clone
+ Clone
>
@@ -459,25 +483,32 @@ function GitHubBrowser(props: {
onSelectRepo: (repo: GitHubRepoSummary) => void;
onSwitchToUrl: () => void;
}) {
+ const { t } = useLingui();
const { accounts, selectedAccount } = props;
if (accounts === null) {
- return Loading accounts…
;
+ return (
+
+ Loading accounts…
+
+ );
}
if (accounts.length === 0) {
return (
- No GitHub CLI accounts found. Sign in with{" "}
- gh auth login, or{" "}
-
- paste a clone URL
-
- .
+
+ No GitHub CLI accounts found. Sign in with{" "}
+ gh auth login, or{" "}
+
+ paste a clone URL
+
+ .
+
);
}
@@ -486,16 +517,16 @@ function GitHubBrowser(props: {
{accounts.length > 1 ? (
-
+
- {selectedAccount?.login ?? "Select account"}
+ {selectedAccount?.login ?? t`Select account`}
props.onSearch(e.target.value)}
className="w-full pl-8"
@@ -556,6 +587,7 @@ function RepoList(props: {
selectedRepoId: string | null;
onSelectRepo: (repo: GitHubRepoSummary) => void;
}) {
+ const { t } = useLingui();
if (props.reposError) {
return (
@@ -575,7 +607,7 @@ function RepoList(props: {
if (props.filteredRepos.length === 0) {
return (
- {props.repos.length === 0 ? "No repositories found." : "No matches."}
+ {props.repos.length === 0 ? t`No repositories found.` : t`No matches.`}
);
}
@@ -601,7 +633,7 @@ function RepoList(props: {
{repo.isPrivate ? : null}
{/* Keep every row two lines tall so the list reads like the sidebar. */}
- {repo.description || "No description"}
+ {repo.description || t`No description`}
{repo.pushedAt ? (
diff --git a/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.test.tsx b/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.test.tsx
index fb79fdcb..679d2b8a 100644
--- a/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.test.tsx
+++ b/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.test.tsx
@@ -1,7 +1,8 @@
-import { fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { fireEvent, screen, waitFor } from "@testing-library/react";
import { Button } from "@heroui/react";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { usePanelStore } from "@/renderer/state/panelStore";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
const mocks = vi.hoisted(() => ({
addExistingProject: vi.fn<() => Promise>().mockResolvedValue(undefined),
diff --git a/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx b/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
index b41cafd5..3ee7f516 100644
--- a/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
+++ b/src/renderer/views/MainView/parts/CreateProject/CreateProjectMenu.tsx
@@ -1,6 +1,7 @@
import type { ReactNode } from "react";
import { FilePlus, FolderOpen, GitBranch } from "lucide-react";
import { Dropdown, Label } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { usePanelStore } from "@/renderer/state/panelStore";
import {
addExistingProject,
@@ -22,12 +23,13 @@ export function CreateProjectMenu(props: {
children: ReactNode;
onSelect?: (action: AddProjectAction) => void;
}) {
+ const { t } = useLingui();
return (
{props.children}
{
const action = key as AddProjectAction;
props.onSelect?.(action);
@@ -40,17 +42,23 @@ export function CreateProjectMenu(props: {
}
}}
>
-
+
- Start from scratch
+
+ Start from scratch
+
-
+
- Clone a repository
+
+ Clone a repository
+
-
+
- Use an existing folder
+
+ Use an existing folder
+
diff --git a/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.test.tsx b/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.test.tsx
index b2b3641b..01f5bcad 100644
--- a/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.test.tsx
+++ b/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.test.tsx
@@ -1,5 +1,6 @@
-import { act, fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { act, fireEvent, screen, waitFor } from "@testing-library/react";
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
const mocks = vi.hoisted(() => ({
listWslDistros: vi.fn<() => Promise>().mockResolvedValue([]),
diff --git a/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx b/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
index 39527ab7..dbbb9555 100644
--- a/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
+++ b/src/renderer/views/MainView/parts/CreateProject/CreateProjectModal.tsx
@@ -1,6 +1,7 @@
import { useEffect, useState } from "react";
import { ChevronDown, FolderOpen, Monitor } from "lucide-react";
import { Button, Dropdown, Label, Modal } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Input, TuxIcon } from "@/renderer/components/common";
import {
buildScratchTargetPath,
@@ -44,6 +45,7 @@ export function CreateProjectModal() {
}
function CreateProjectForm() {
+ const { t } = useLingui();
const platform = readBridge().platform;
const lastUsedProjectDirs = useSharedSettings((s) => s.lastUsedProjectDirs);
@@ -140,27 +142,33 @@ function CreateProjectForm() {
await commitCreateProject({ mode: "scratch", choice, dir: scratchParent, name });
usePanelStore.getState().closeCreateProjectModal();
} catch (error) {
- setSubmitError(error instanceof Error ? error.message : "Couldn't create the project.");
+ setSubmitError(error instanceof Error ? error.message : t`Couldn't create the project.`);
} finally {
setBusy(false);
}
}
- const runtimeLabel = runtimeKey === "native" ? "Native" : runtimeKey;
+ const runtimeLabel = runtimeKey === "native" ? t`Native` : runtimeKey;
return (
<>
- Start from scratch
- Name your project and choose where to create it.
+
+ Start from scratch
+
+
+ Name your project and choose where to create it.
+
- Project name
+
+ Project name
+
setName(e.target.value)}
onKeyDown={(e) => {
@@ -174,9 +182,11 @@ function CreateProjectForm() {
{showRuntime ? (
- Runtime
+
+ Runtime
+
-
+
{runtimeKey === "native" ? (
@@ -189,14 +199,16 @@ function CreateProjectForm() {
setRuntimeKey(String(key))}
>
-
+
- Native
+
+ Native
+
{distros.map((distro) => (
@@ -211,9 +223,11 @@ function CreateProjectForm() {
) : null}
- Location
+
+ Location
+
void handleBrowse()}
@@ -227,7 +241,9 @@ function CreateProjectForm() {
{pickerLeaf.tail}
) : (
- Choose a folder…
+
+ Choose a folder…
+
)}
@@ -236,7 +252,7 @@ function CreateProjectForm() {
- Cancel
+ Cancel
void handleSubmit()}
>
- Create project
+ Create project
>
diff --git a/src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx b/src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
index 0faadaed..6e77afed 100644
--- a/src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
+++ b/src/renderer/views/MainView/parts/ProjectAuxiliaryPanel.tsx
@@ -1,4 +1,5 @@
import { useRef } from "react";
+import { useLingui } from "@lingui/react/macro";
import type { Project } from "@/shared/contracts";
import { isHomeProjectId } from "@/shared/homeScope";
import { BrowserPanel } from "@/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel";
@@ -64,6 +65,7 @@ function resolveFilesRootContext(
}
export function ProjectAuxiliaryPanel(props: { includeTerminal: boolean }) {
+ const { t } = useLingui();
const projects = useAppStore((s) => s.projects);
const gitReviewContext = usePanelStore((s) => s.gitReviewContext);
const gitReviewAsPanel = usePanelStore((s) => s.gitReviewAsPanel);
@@ -147,11 +149,11 @@ export function ProjectAuxiliaryPanel(props: { includeTerminal: boolean }) {
function resolveProjectName(): string | undefined {
switch (activeTab) {
case "browser":
- return "Browser";
+ return t`Browser`;
case "usage":
- return "Usage";
+ return t`Usage`;
case "notes":
- return notesProjectId ? projectNameForScope({ projectId: notesProjectId }) : "Notes";
+ return notesProjectId ? projectNameForScope({ projectId: notesProjectId }) : t`Notes`;
case "files":
return resolvedFilesPanelContext?.rootLabel ?? projectNameForScope(activeProjectScope());
default:
diff --git a/src/renderer/views/MainView/parts/PullFromSourceDialog.tsx b/src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
index 6f73a70d..5143fdf2 100644
--- a/src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
+++ b/src/renderer/views/MainView/parts/PullFromSourceDialog.tsx
@@ -1,5 +1,6 @@
import { useState } from "react";
import { AlertDialog, toast } from "@heroui/react";
+import { Trans } from "@lingui/react/macro";
import { buildWorktreeLocation } from "@/shared/worktree";
import { msg } from "@/shared/messages";
import { openGitReviewForWorktree } from "@/renderer/actions/gitActions";
@@ -64,18 +65,22 @@ export function PullFromSourceDialog() {
const dialogContent = (
<>
- Pull from {activeDialog.sourceBranch}?
+
+ Pull from {activeDialog.sourceBranch}?
+
- This worktree has local changes. Lightcode can temporarily stash them, pull from{" "}
- {activeDialog.sourceBranch}, then re-apply your changes.
+
+ This worktree has local changes. Lightcode can temporarily stash them, pull from{" "}
+ {activeDialog.sourceBranch}, then re-apply your changes.
+
- Cancel
+ Cancel
- Stash & Pull
+ Stash & Pull
>
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.test.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.test.tsx
index 19e5de6e..a43ef667 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.test.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.test.tsx
@@ -1,5 +1,6 @@
-import { fireEvent, render } from "@testing-library/react";
+import { fireEvent } from "@testing-library/react";
import { beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import { useBrowserPanelStore } from "@/renderer/state/browserPanelStore";
import { usePanelStore } from "@/renderer/state/panelStore";
import { BrowserPanel } from "./BrowserPanel";
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
index 46622462..8cd2f84a 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/BrowserPanel.tsx
@@ -1,5 +1,6 @@
import { useCallback, useEffect, useRef, useState, type KeyboardEvent } from "react";
import { Tooltip } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Check, Copy, Maximize2, Minimize2, X } from "lucide-react";
import { isMac, readBridge } from "@/renderer/bridge";
import { useBrowserPanelStore } from "@/renderer/state/browserPanelStore";
@@ -17,6 +18,7 @@ import { useElementPicker } from "./hooks/useElementPicker";
const DEFAULT_HOME = "https://www.google.com";
export function BrowserPanel(props: { visible: boolean }) {
+ const { t } = useLingui();
const tabs = useBrowserPanelStore((s) => s.tabs);
const activeTabId = useBrowserPanelStore((s) => s.activeTabId);
const browserPanelOpen = usePanelStore((s) => s.browserPanelOpen);
@@ -92,7 +94,7 @@ export function BrowserPanel(props: { visible: boolean }) {
return (
@@ -108,15 +110,17 @@ export function BrowserPanel(props: { visible: boolean }) {
{isMac() && isFullscreenOverlay ? (
) : null}
- Browser
+
+ Browser
+
{browserPanelOpen ? (
@@ -127,8 +131,8 @@ export function BrowserPanel(props: { visible: boolean }) {
setBrowserOverlayMaximized(false)}
>
@@ -137,8 +141,8 @@ export function BrowserPanel(props: { visible: boolean }) {
setBrowserOverlayMaximized(true)}
>
@@ -147,8 +151,8 @@ export function BrowserPanel(props: { visible: boolean }) {
setBrowserOverlayOpen(false)}
>
@@ -203,6 +207,7 @@ export function BrowserPanel(props: { visible: boolean }) {
}
function BrowserDeviceCodeButton() {
+ const { t } = useLingui();
const deviceCode = useBrowserPanelStore((s) => s.usageLoginDeviceCode);
const [copied, setCopied] = useState(false);
const [tooltipOpen, setTooltipOpen] = useState(false);
@@ -247,8 +252,8 @@ function BrowserDeviceCodeButton() {
{copied ? (
@@ -256,15 +261,19 @@ function BrowserDeviceCodeButton() {
) : (
)}
- Paste
+
+ Paste
+
{activeDeviceCode.code}
- {copied ? "Code copied. " : ""}
- Paste {activeDeviceCode.code} here.
- Click to copy.
+ {copied ? Code copied. : ""}
+
+ Paste {activeDeviceCode.code} here.
+ Click to copy.
+
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
index cb8c3c47..5a234697 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/hooks/useElementPicker.ts
@@ -1,5 +1,6 @@
import { useCallback } from "react";
import { toast } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { useShallow } from "zustand/shallow";
import type { PromptSegment } from "@/shared/contracts";
import { isDraftPaneId, parseDraftProjectId } from "@/shared/paneId";
@@ -124,6 +125,7 @@ function buildSelectionSegments(attachment: PendingPickerAttachment): {
}
export function useElementPicker() {
+ const { t } = useLingui();
const activeTabId = useBrowserPanelStore((s) => s.activeTabId);
const pickerActive = useBrowserPanelStore((s) => s.pickerActive);
const setPickerActive = useBrowserPanelStore((s) => s.setPickerActive);
@@ -148,12 +150,12 @@ export function useElementPicker() {
const projectName = projects.find((p) => p.id === projectId)?.name;
return {
threadId: paneId,
- title: projectName ? `New thread — ${projectName}` : "New thread",
+ title: projectName ? t`New thread — ${projectName}` : t`New thread`,
canRouteToTerminal,
};
}
- const thread = threads.find((t) => t.id === paneId);
- return { threadId: paneId, title: thread?.title ?? "Thread", canRouteToTerminal };
+ const targetThread = threads.find((thread) => thread.id === paneId);
+ return { threadId: paneId, title: targetThread?.title ?? t`Thread`, canRouteToTerminal };
});
const cancelPicker = useCallback(async (): Promise => {
@@ -170,21 +172,21 @@ export function useElementPicker() {
const { prompt, segments } = buildSelectionSegments(attachment);
try {
await readBridge().stageThreadInput({ threadId, prompt, segments });
- toast.success("Sent selection to terminal.");
+ toast.success(t`Sent selection to terminal.`);
return;
} catch (error) {
// The PTY may not be ready (still launching, exited). Don't lose the
// pick — drop it into the composer instead.
console.error("[picker] failed to stage terminal input", error);
enqueueAttach({ threadId, ...attachment });
- toast.warning("Terminal not ready — added selection to composer.");
+ toast.warning(t`Terminal not ready — added selection to composer.`);
return;
}
}
enqueueAttach({ threadId, ...attachment });
- toast.success("Attached browser selection.");
+ toast.success(t`Attached browser selection.`);
},
- [enqueueAttach],
+ [enqueueAttach, t],
);
const startPicker = useCallback(async (): Promise => {
@@ -192,13 +194,15 @@ export function useElementPicker() {
return await cancelPicker();
}
if (!activeTabId) {
- toast.danger("No active browser tab");
- return { ok: false, cancelled: false, error: "No active browser tab" };
+ const error = t`No active browser tab`;
+ toast.danger(error);
+ return { ok: false, cancelled: false, error };
}
const targetIds = resolveTargetThreadIds();
if (targetIds.length === 0) {
- toast.danger("Open a thread first to attach to it.");
- return { ok: false, cancelled: false, error: "Open a thread first to attach to it" };
+ const error = t`Open a thread first to attach to it.`;
+ toast.danger(error);
+ return { ok: false, cancelled: false, error };
}
setPendingPickerAttachment(null);
setPickerActive(true);
@@ -209,8 +213,9 @@ export function useElementPicker() {
tabId: activeTabId,
});
if (!result.ok) {
- toast.danger(result.error ?? "Picker failed");
- return { ok: false, cancelled: false, error: result.error ?? "Picker failed" };
+ const error = result.error ?? t`Picker failed`;
+ toast.danger(error);
+ return { ok: false, cancelled: false, error };
}
if (result.cancelled) {
return { ok: true, cancelled: true };
@@ -218,8 +223,9 @@ export function useElementPicker() {
if (
!(result.attachmentPath && result.attachmentName && result.selector && result.sourceUrl)
) {
- toast.danger("Picker returned no attachment");
- return { ok: false, cancelled: false, error: "Picker returned no attachment" };
+ const error = t`Picker returned no attachment`;
+ toast.danger(error);
+ return { ok: false, cancelled: false, error };
}
const anchor = result.rect ? anchorFromSelectedRect(activeTabId, result.rect) : null;
const attachment: PendingPickerAttachment = {
@@ -250,6 +256,7 @@ export function useElementPicker() {
pickerActive,
setPendingPickerAttachment,
setPickerActive,
+ t,
]);
const chooseTargetForPendingPick = useCallback(
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
index 663232d4..05fe3395 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserEmptyState.tsx
@@ -1,16 +1,19 @@
import { Globe } from "lucide-react";
+import { Trans } from "@lingui/react/macro";
export function BrowserEmptyState(props: { onCreateTab: () => void }) {
return (
- No browser tab open
+
+ No browser tab open
+
- Open new tab
+ Open new tab
);
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
index 96907380..f1d70825 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserTabStrip.tsx
@@ -1,5 +1,6 @@
import { Globe, X } from "lucide-react";
import { useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import { readBridge } from "@/renderer/bridge";
import { useBrowserPanelStore } from "@/renderer/state/browserPanelStore";
@@ -29,6 +30,7 @@ function TabFavicon(props: { faviconUrl?: string; loading: boolean }) {
}
export function BrowserTabStrip() {
+ const { t } = useLingui();
const tabs = useBrowserPanelStore((s) => s.tabs);
const activeTabId = useBrowserPanelStore((s) => s.activeTabId);
const attentionTabId = useBrowserPanelStore((s) => s.attentionTabId);
@@ -95,12 +97,12 @@ export function BrowserTabStrip() {
loading={tab.loading}
{...(tab.faviconUrl ? { faviconUrl: tab.faviconUrl } : {})}
/>
- {tab.title || tab.url || "New tab"}
+ {tab.title || tab.url || t`New tab`}
{
e.stopPropagation();
readBridge()
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
index be05cead..5f498005 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/BrowserPanel/parts/BrowserToolbar.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef, useState, type FormEvent, type Key } from "react";
import { createPortal } from "react-dom";
import { Button, Dropdown, Label, Separator } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import {
ArrowLeft,
ArrowRight,
@@ -50,10 +51,11 @@ export function BrowserToolbar(props: {
onMenuPreviewChange: (dataUrl: string | null) => void;
}) {
const { onMenuPreviewChange } = props;
+ const { t } = useLingui();
const { activeTabId, activeTab } = useBrowserPanelStore(
useShallow((s) => ({
activeTabId: s.activeTabId,
- activeTab: s.activeTabId ? s.tabs.find((t) => t.tabId === s.activeTabId) : undefined,
+ activeTab: s.activeTabId ? s.tabs.find((tab) => tab.tabId === s.activeTabId) : undefined,
})),
);
const [urlInput, setUrlInput] = useState("");
@@ -77,7 +79,7 @@ export function BrowserToolbar(props: {
const consoleButtonClass = `${toolbarButtonClass} ${
activeTab?.devToolsOpen ? "text-accent hover:text-accent" : ""
}`;
- const pickerLabel = props.pickerActive ? "Cancel picker" : "Pick element";
+ const pickerLabel = props.pickerActive ? t`Cancel picker` : t`Pick element`;
useEffect(() => {
return () => onMenuPreviewChange(null);
@@ -147,18 +149,22 @@ export function BrowserToolbar(props: {
{target.title}
- Terminal
+
+ Terminal
+
,
{target.title}
- Composer
+
+ Composer
+
,
]
: [
@@ -177,7 +183,7 @@ export function BrowserToolbar(props: {
activeTabId &&
@@ -191,7 +197,7 @@ export function BrowserToolbar(props: {
activeTabId &&
@@ -205,7 +211,7 @@ export function BrowserToolbar(props: {
activeTabId &&
@@ -220,7 +226,7 @@ export function BrowserToolbar(props: {
setUrlInput(e.target.value)}
onFocus={(e) => {
@@ -257,7 +263,7 @@ export function BrowserToolbar(props: {
className="z-[1000] min-w-[220px]"
isNonModal
>
-
+
{renderPickItems()}
@@ -274,7 +280,7 @@ export function BrowserToolbar(props: {
>
-
+
{renderPickItems()}
@@ -301,7 +307,7 @@ export function BrowserToolbar(props: {
activeTabId &&
@@ -315,7 +321,7 @@ export function BrowserToolbar(props: {
@@ -323,7 +329,7 @@ export function BrowserToolbar(props: {
-
- Take Screenshot
+
+
+ Take Screenshot
+
-
- Hard Reload
+
+
+ Hard Reload
+
-
- Copy Current URL
+
+
+ Copy Current URL
+
-
- Show Bookmark Bar
+
+
+ Show Bookmark Bar
+
-
- Clear Browsing History
+
+
+ Clear Browsing History
+
-
- Clear Cookies
+
+
+ Clear Cookies
+
-
- Clear Cache
+
+
+ Clear Cache
+
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.test.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.test.tsx
index e3e57599..74dd8abb 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.test.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.test.tsx
@@ -1,5 +1,6 @@
-import { fireEvent, render, screen } from "@testing-library/react";
+import { fireEvent, screen } from "@testing-library/react";
import { beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { Project } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
import { useDevTerminalStore, type DevTerminalTab } from "@/renderer/state/devTerminalStore";
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
index 7865495c..a02dd5e5 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/DevTerminalPanel.tsx
@@ -1,4 +1,5 @@
import { useEffect, useRef, useState } from "react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Columns2 } from "lucide-react";
import { readBridge } from "@/renderer/bridge";
import { useAppStore } from "@/renderer/state/appStore";
@@ -12,6 +13,7 @@ import { RightTerminalLayout } from "./parts/RightTerminalLayout";
export function DevTerminalPanel(props: { hideHeader?: boolean }) {
const { hideHeader } = props;
+ const { t } = useLingui();
const projects = useAppStore((s) => s.projects);
const tabs = useDevTerminalStore((s) => s.tabs);
const activeProjectId = useDevTerminalStore((s) => s.activeProjectId);
@@ -28,15 +30,15 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
const terminalPosition = useSharedSettings((s) => s.terminalPosition);
const spawnedRef = useRef(new Set());
- const projectTabs = tabs.filter((t) => {
- if (t.projectId !== activeProjectId) return false;
- if (activeWorktreePath) return t.worktreePath === activeWorktreePath;
- return !t.worktreePath;
+ const projectTabs = tabs.filter((tab) => {
+ if (tab.projectId !== activeProjectId) return false;
+ if (activeWorktreePath) return tab.worktreePath === activeWorktreePath;
+ return !tab.worktreePath;
});
const activeProject = projects.find((p) => p.id === activeProjectId);
const selectedTabId =
projectTabs.find((tab) => tab.id === activeTabId)?.id ?? projectTabs.at(-1)?.id ?? "__add__";
- const activeTab = projectTabs.find((t) => t.id === selectedTabId);
+ const activeTab = projectTabs.find((tab) => tab.id === selectedTabId);
const isBottom = terminalPosition === "bottom";
@@ -69,7 +71,7 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
// pre-wrapped scrollback, so getting the very first lines right matters.
function handleTerminalResize(terminalId: string, size: TerminalSize) {
if (spawnedRef.current.has(terminalId)) return;
- const owningTab = tabs.find((t) => t.id === terminalId || t.splitId === terminalId);
+ const owningTab = tabs.find((tab) => tab.id === terminalId || tab.splitId === terminalId);
if (!owningTab) return;
const project = projects.find((p) => p.id === owningTab.projectId);
if (!project) return;
@@ -88,7 +90,7 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
}
function handleCloseTab(tab: DevTerminalTab) {
- const remaining = tabs.filter((t) => t.id !== tab.id);
+ const remaining = tabs.filter((other) => other.id !== tab.id);
if (tab.splitId) {
void readBridge()
.closeThread({ threadId: tab.splitId })
@@ -101,10 +103,10 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
.catch(() => undefined);
spawnedRef.current.delete(tab.id);
- const remainingInContext = remaining.filter((t) => {
- if (t.projectId !== tab.projectId) return false;
- if (activeWorktreePath) return t.worktreePath === activeWorktreePath;
- return !t.worktreePath;
+ const remainingInContext = remaining.filter((other) => {
+ if (other.projectId !== tab.projectId) return false;
+ if (activeWorktreePath) return other.worktreePath === activeWorktreePath;
+ return !other.worktreePath;
});
if (remainingInContext.length === 0) {
if (!isBottom) closeAllPanels();
@@ -142,10 +144,10 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
if (!isBottom) return [];
if (tab.splitId) {
- return [{ id: "close-split", label: "Close Split", icon: }];
+ return [{ id: "close-split", label: t`Close Split`, icon: }];
}
return [
- { id: "split-terminal", label: "Split Terminal", icon: },
+ { id: "split-terminal", label: t`Split Terminal`, icon: },
];
}
@@ -160,7 +162,7 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
handleAddTab();
return;
}
- const parentTab = projectTabs.find((t) => t.splitId === id);
+ const parentTab = projectTabs.find((tab) => tab.splitId === id);
setActiveTab(parentTab ? parentTab.id : id);
}
@@ -172,7 +174,7 @@ export function DevTerminalPanel(props: { hideHeader?: boolean }) {
onClick={handleAddTab}
type="button"
>
- Open a terminal
+ Open a terminal
) : null;
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
index 14d06316..50a14d3b 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/BottomTerminalLayout.tsx
@@ -1,5 +1,6 @@
import { Columns2, PanelBottomClose, Plus, Trash2 } from "lucide-react";
import { Tabs } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type { Project, TerminalSize } from "@/shared/contracts";
import { useDevTerminalStore, type DevTerminalTab } from "@/renderer/state/devTerminalStore";
import { ContextMenu } from "@/renderer/components/common";
@@ -30,6 +31,7 @@ export function BottomTerminalLayout(props: {
handleTabContextAction: (tab: DevTerminalTab, key: string) => void;
onTerminalResize?: (terminalId: string, size: TerminalSize) => void;
}) {
+ const { t } = useLingui();
const {
tabs,
projectTabs,
@@ -67,7 +69,7 @@ export function BottomTerminalLayout(props: {
useDevTerminalStore.getState().closePanel()}
>
@@ -83,7 +85,7 @@ export function BottomTerminalLayout(props: {
onSelectionChange={handleSelectionChange}
>
-
+
{tabRows.map(({ id, tab, isSplit }) => {
const parentSelected = selectedTabId === tab.id;
return (
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
index 135b8168..cad001df 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/DevTerminalPanel/parts/RightTerminalLayout.tsx
@@ -1,5 +1,6 @@
import { PanelRightClose, Plus, Trash2 } from "lucide-react";
import { Tabs } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type { Project, TerminalSize } from "@/shared/contracts";
import { useDevTerminalStore, type DevTerminalTab } from "@/renderer/state/devTerminalStore";
import { PanelHeaderProjectName } from "@/renderer/components/layout/PanelHeaderProjectName";
@@ -25,6 +26,7 @@ export function RightTerminalLayout(props: {
handleSelectionChange: (key: string | number) => void;
onTerminalResize?: (terminalId: string, size: TerminalSize) => void;
}) {
+ const { t } = useLingui();
const {
tabs,
projectTabs,
@@ -51,7 +53,7 @@ export function RightTerminalLayout(props: {
useDevTerminalStore.getState().closePanel()}
>
@@ -66,7 +68,7 @@ export function RightTerminalLayout(props: {
onSelectionChange={handleSelectionChange}
>
-
+
{projectTabs.map((tab) => (
void;
onTerminalResize?: (terminalId: string, size: TerminalSize) => void;
}) {
+ const { t } = useLingui();
const {
tabs,
selectedTabId,
@@ -167,11 +169,11 @@ export function TerminalSurfaces(props: {
onMouseDown={handleResizeStart}
role="separator"
aria-orientation="vertical"
- aria-label="Resize split"
+ aria-label={t`Resize split`}
/>
{tabs
- .filter((t) => t.splitId)
+ .filter((tab) => tab.splitId)
.map((tab) => (
s.setDoc);
// Read the loaded document once at mount — feeding store updates back into the
// editor on every keystroke would reset the caret.
@@ -29,11 +31,11 @@ export function NotesEditor(props: { projectId: string }) {
const editor = useEditor({
extensions: [
StarterKit,
- Placeholder.configure({ placeholder: "Write notes for this project…" }),
+ Placeholder.configure({ placeholder: t`Write notes for this project…` }),
],
content: (initialContentRef.current as object | null) ?? "",
editorProps: {
- attributes: { class: "lc-notes-prose", "aria-label": "Project notes" },
+ attributes: { class: "lc-notes-prose", "aria-label": t`Project notes` },
},
onCreate: () => {
initializedRef.current = true;
@@ -78,7 +80,7 @@ export function NotesEditor(props: { projectId: string }) {
editor.chain().focus().toggleBold().run()}
>
@@ -86,7 +88,7 @@ export function NotesEditor(props: { projectId: string }) {
editor.chain().focus().toggleItalic().run()}
>
@@ -95,11 +97,11 @@ export function NotesEditor(props: { projectId: string }) {
- New thread
+ New thread
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
index 8e8911f2..4457176f 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/NotesPanel.tsx
@@ -1,5 +1,6 @@
import { useCallback, useEffect, useRef, useState } from "react";
import { ArrowUpDown } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { overlaySidebarSurfaceClass } from "@/renderer/components/layout/sidebarChrome";
import { useNotesStore } from "@/renderer/state/notesStore";
import {
@@ -26,6 +27,7 @@ const clampRatio = (n: number) => Math.min(MAX_RATIO, Math.max(MIN_RATIO, n));
*/
export function NotesPanel(props: { projectId: string }) {
const { projectId } = props;
+ const { t } = useLingui();
const ensureLoaded = useNotesStore((s) => s.ensureLoaded);
const flush = useNotesStore((s) => s.flush);
const status = useNotesStore((s) => s.byProject[projectId]?.status ?? "unloaded");
@@ -67,7 +69,7 @@ export function NotesPanel(props: { projectId: string }) {
- Loading notes…
+ Loading notes…
);
}
@@ -96,14 +98,14 @@ export function NotesPanel(props: { projectId: string }) {
e.stopPropagation()}
onClick={() => {
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
index db81261e..7e363642 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoList.tsx
@@ -3,6 +3,7 @@ import { PointerActivationConstraints } from "@dnd-kit/dom";
import { DragDropProvider, KeyboardSensor, PointerSensor, type DragEndEvent } from "@dnd-kit/react";
import { isSortable } from "@dnd-kit/react/sortable";
import { Plus } from "lucide-react";
+import { Plural, Trans, useLingui } from "@lingui/react/macro";
import { newThreadFromText } from "@/renderer/actions/notesActions";
import { useNotesStore } from "@/renderer/state/notesStore";
import { TodoRow } from "./TodoRow";
@@ -27,6 +28,7 @@ const todoListSensors = [
/** Structured per-project to-do list rendered alongside the notes editor. */
export function TodoList(props: { projectId: string }) {
const { projectId } = props;
+ const { t } = useLingui();
const todos = useNotesStore((s) => s.byProject[projectId]?.todos ?? []);
const addTodo = useNotesStore((s) => s.addTodo);
const toggleTodo = useNotesStore((s) => s.toggleTodo);
@@ -35,7 +37,7 @@ export function TodoList(props: { projectId: string }) {
const moveTodo = useNotesStore((s) => s.moveTodo);
const [draft, setDraft] = useState("");
- const remaining = todos.reduce((n, t) => (t.done ? n : n + 1), 0);
+ const remaining = todos.reduce((n, todo) => (todo.done ? n : n + 1), 0);
function handleDragEnd(event: DragEndEvent) {
if (event.canceled) return;
@@ -55,9 +57,13 @@ export function TodoList(props: { projectId: string }) {
return (
- To-dos
+
+ To-dos
+
{todos.length > 0 ? (
- {remaining} open
+
+
+
) : null}
@@ -82,7 +88,7 @@ export function TodoList(props: { projectId: string }) {
setDraft(e.target.value)}
onKeyDown={(e) => {
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
index 7249afd6..7c39383f 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/NotesPanel/TodoRow.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef, useState } from "react";
import { useSortable } from "@dnd-kit/react/sortable";
import { Check, MessageSquarePlus, Trash2 } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { NotesTodoItem } from "@/shared/contracts";
import { ContextMenu } from "@/renderer/components/common";
@@ -17,6 +18,7 @@ export function TodoRow(props: {
onNewThread: () => void;
}) {
const { todo, index, projectId, onToggle, onChangeText, onRemove, onNewThread } = props;
+ const { t } = useLingui();
const [editing, setEditing] = useState(false);
const [draft, setDraft] = useState(todo.text);
const inputRef = useRef(null);
@@ -57,10 +59,15 @@ export function TodoRow(props: {
items={[
{
id: "new-thread",
- label: "New thread from this to-do",
+ label: t`New thread from this to-do`,
icon: ,
},
- { id: "delete", label: "Delete", icon: , variant: "danger" },
+ {
+ id: "delete",
+ label: t`Delete`,
+ icon: ,
+ variant: "danger",
+ },
]}
onAction={(key) => {
if (key === "new-thread") onNewThread();
@@ -80,7 +87,7 @@ export function TodoRow(props: {
? "border-foreground bg-foreground text-background"
: "border-[color:var(--border)] text-transparent hover:border-foreground"
}`}
- title={todo.done ? "Mark as not done" : "Mark as done"}
+ title={todo.done ? t`Mark as not done` : t`Mark as done`}
onPointerDown={(e) => e.stopPropagation()}
onClick={onToggle}
>
@@ -111,7 +118,7 @@ export function TodoRow(props: {
className={`m-0 min-w-0 flex-1 cursor-grab truncate p-0 text-left text-xs leading-5 ${
todo.done ? "text-muted line-through" : "text-foreground"
}`}
- title="Drag to reorder; double-click to edit"
+ title={t`Drag to reorder; double-click to edit`}
// Edit on double-click so a single click + drag is free to reorder
// (single-click edit would flip on `editing`, disabling the sortable).
onDoubleClick={() => {
@@ -133,7 +140,7 @@ export function TodoRow(props: {
e.stopPropagation()}
onClick={onNewThread}
>
@@ -142,7 +149,7 @@ export function TodoRow(props: {
e.stopPropagation()}
onClick={onRemove}
>
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
index ade52e1a..8cfc19ea 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/UsagePanel.tsx
@@ -1,6 +1,8 @@
import { startTransition, useEffect, useRef, useState } from "react";
import { DragDropProvider, type DragEndEvent } from "@dnd-kit/react";
import { isSortable } from "@dnd-kit/react/sortable";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
import { openUsageSettings } from "@/renderer/actions/panelActions";
import { readBridge } from "@/renderer/bridge";
import { resolveDisplayedProviders } from "@/renderer/components/providers/usageProviders";
@@ -9,20 +11,23 @@ import { useProviderUsageStore } from "@/renderer/state/providerUsageStore";
import { useUsageLoginStateStore } from "@/renderer/state/usageLoginStateStore";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { UsageProviderCard } from "./parts/UsageProviderCard";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
/** "Updated 12s ago" style relative label from an epoch-ms timestamp. */
-function formatUpdatedAgo(fetchedAt: number, now: number): string {
+function formatUpdatedAgo(fetchedAt: number, now: number, t: TranslateFn): string {
const seconds = Math.max(0, Math.round((now - fetchedAt) / 1000));
- if (seconds < 5) return "just now";
- if (seconds < 60) return `${seconds}s ago`;
+ if (seconds < 5) return t(msg`just now`);
+ if (seconds < 60) return t(msg`${seconds}s ago`);
const minutes = Math.round(seconds / 60);
- if (minutes < 60) return `${minutes}m ago`;
+ if (minutes < 60) return t(msg`${minutes}m ago`);
const hours = Math.round(minutes / 60);
- if (hours < 24) return `${hours}h ago`;
- return `${Math.round(hours / 24)}d ago`;
+ if (hours < 24) return t(msg`${hours}h ago`);
+ const days = Math.round(hours / 24);
+ return t(msg`${days}d ago`);
}
export function UsagePanel() {
+ const { t } = useLingui();
const providerOrder = useSharedSettings((s) => s.usage.providerOrder);
const disabledProviders = useSharedSettings((s) => s.usage.disabledProviders);
const collapsedProviders = useSharedSettings((s) => s.usage.collapsedProviders);
@@ -109,13 +114,15 @@ export function UsagePanel() {
{displayed.length === 0 ? (
- No providers are being tracked.
+
+ No providers are being tracked.
+
- Enable providers in settings
+ Enable providers in settings
) : (
@@ -140,7 +147,7 @@ export function UsagePanel() {
{lastUpdated > 0 ? (
- Updated {formatUpdatedAgo(lastUpdated, nowTick)}
+ Updated {formatUpdatedAgo(lastUpdated, nowTick, t)}
) : null}
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
index 5e892d7e..3b005cc0 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsagePanelHeaderActions.tsx
@@ -1,5 +1,6 @@
import { startTransition, useState } from "react";
import { ChevronsDownUp, ChevronsUpDown, RefreshCw, Settings2 } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import { openUsageSettings } from "@/renderer/actions/panelActions";
import { readBridge } from "@/renderer/bridge";
import { panelHeaderIconButtonClass } from "@/renderer/components/layout/sidebarChrome";
@@ -13,6 +14,7 @@ import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
*/
export function UsagePanelHeaderActions(props: { dragControlClass: string }) {
const { dragControlClass } = props;
+ const { t } = useLingui();
const providerOrder = useSharedSettings((s) => s.usage.providerOrder);
const disabledProviders = useSharedSettings((s) => s.usage.disabledProviders);
const collapsedProviders = useSharedSettings((s) => s.usage.collapsedProviders);
@@ -49,7 +51,7 @@ export function UsagePanelHeaderActions(props: { dragControlClass: string }) {
{allCollapsed ? (
@@ -62,7 +64,7 @@ export function UsagePanelHeaderActions(props: { dragControlClass: string }) {
@@ -70,7 +72,7 @@ export function UsagePanelHeaderActions(props: { dragControlClass: string }) {
diff --git a/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx b/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
index 4d092553..76e69190 100644
--- a/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
+++ b/src/renderer/views/MainView/parts/RightPanel/parts/UsagePanel/parts/UsageProviderCard.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import { useSortable } from "@dnd-kit/react/sortable";
import { ChevronDown, ChevronRight, GripVertical, LogOut } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { type UsageSnapshot, usageWindowDisplayLabel } from "@lightcode/agents-usage";
import { readBridge } from "@/renderer/bridge";
import { ProviderIcon } from "@/renderer/components/providers/ProviderIcon";
@@ -66,6 +67,7 @@ export function UsageProviderCard(props: {
onToggleCollapse: (id: string) => void;
}) {
const { id, label, index, collapsed, onToggleCollapse } = props;
+ const { t } = useLingui();
const snapshot = useProviderUsage(id);
const hasStoredSession = useHasStoredSession(id);
const [signingIn, setSigningIn] = useState(false);
@@ -167,7 +169,7 @@ export function UsageProviderCard(props: {
@@ -175,7 +177,7 @@ export function UsageProviderCard(props: {
onToggleCollapse(id)}
className="flex min-w-0 flex-1 items-center gap-2 text-left outline-none focus-visible:focus-ring"
>
@@ -208,8 +210,8 @@ export function UsageProviderCard(props: {
{canSignOut ? (
void handleSignOut()}
disabled={signingOut}
className="flex size-5 shrink-0 items-center justify-center rounded-md text-muted/60 transition-colors hover:bg-muted/10 hover:text-foreground disabled:opacity-50"
@@ -220,7 +222,7 @@ export function UsageProviderCard(props: {
onToggleCollapse(id)}
className="flex size-5 shrink-0 items-center justify-center rounded-md text-muted/60 transition-colors hover:bg-muted/10 hover:text-foreground"
>
@@ -255,7 +257,7 @@ export function UsageProviderCard(props: {
disabled={signingIn}
className="rounded-lg border border-[color:var(--separator)] bg-surface px-2.5 py-1 text-xs font-medium text-foreground transition-colors hover:bg-muted/10 disabled:opacity-50"
>
- {signingIn ? "Signing in…" : "Sign in"}
+ {signingIn ? Signing in… : Sign in }
) : null}
@@ -267,19 +269,21 @@ export function UsageProviderCard(props: {
}
function UsageProviderMeta(props: { snapshot: UsageSnapshot }) {
+ const { t } = useLingui();
const { snapshot } = props;
const lines: string[] = [];
if (snapshot.cost) {
- const tokens = snapshot.tokens?.total ? ` · ${formatTokens(snapshot.tokens.total)} tokens` : "";
- lines.push(
- `~${formatMoney(snapshot.cost.amount, snapshot.cost.currency)}${tokens} · ${snapshot.cost.period} · est.`,
- );
+ const tokens = snapshot.tokens?.total
+ ? ` · ${t`${formatTokens(snapshot.tokens.total)} tokens`}`
+ : "";
+ const money = formatMoney(snapshot.cost.amount, snapshot.cost.currency);
+ lines.push(t`~${money}${tokens} · ${snapshot.cost.period} · est.`);
}
if (snapshot.credits?.unlimited) {
- lines.push("Unlimited");
+ lines.push(t`Unlimited`);
} else if (snapshot.credits) {
lines.push(
- `${snapshot.credits.label ?? "Credits"}: ${formatMoney(
+ `${snapshot.credits.label ?? t`Credits`}: ${formatMoney(
snapshot.credits.balance,
snapshot.credits.currency,
)}`,
diff --git a/src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx b/src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
index f6b277a1..fccdaac9 100644
--- a/src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/Sidebar.tsx
@@ -11,6 +11,7 @@ import {
} from "lucide-react";
import { startTransition, useEffect } from "react";
import { useShallow } from "zustand/shallow";
+import { Trans, useLingui } from "@lingui/react/macro";
import { AnimatedTerminalIcon } from "@/renderer/components/common/AnimatedTerminalIcon";
import { getAppName } from "@/shared/appName";
import type { Thread } from "@/shared/contracts";
@@ -50,6 +51,7 @@ import { SidebarProjectThreadList } from "./parts/SidebarProjectThreadList";
function UpdateButtons(props: { iconOnly?: boolean }) {
const { iconOnly = false } = props;
+ const { t } = useLingui();
const updatePhase = useUpdateStore((s) => s.phase);
const updateVersion = useUpdateStore((s) => s.version);
const downloadPercent = useUpdateStore((s) => s.downloadPercent);
@@ -79,7 +81,7 @@ function UpdateButtons(props: { iconOnly?: boolean }) {
- Downloading{versionLabel} — {Math.round(downloadPercent)}%
+ Downloading{versionLabel} — {Math.round(downloadPercent)}%
{byteLine ? ` · ${byteLine}` : ""}
{speedLine ? ` · ${speedLine}` : ""}
@@ -91,7 +93,9 @@ function UpdateButtons(props: { iconOnly?: boolean }) {
- Downloading{versionLabel}
+
+ Downloading{versionLabel}
+
{byteLine ?? ""}
@@ -113,13 +117,14 @@ function UpdateButtons(props: { iconOnly?: boolean }) {
}
- label={updateVersion ? `Install v${updateVersion}` : "Install update"}
+ label={updateVersion ? t`Install v${updateVersion}` : t`Install update`}
onPress={() => void readBridge().installUpdate()}
/>
);
}
function HomeTerminalButton(props: { projectId: string; projectName: string }) {
+ const { t } = useLingui();
const hasTerminal = useIsProjectTerminalOpen(props.projectId);
const isActiveTerminal = useIsProjectTerminalActive(props.projectId);
const isBusy = useIsProjectTerminalBusy(props.projectId);
@@ -127,7 +132,7 @@ function HomeTerminalButton(props: { projectId: string; projectName: string }) {
state.projects.filter((project) => !isHomeProject(project)).map((project) => project.id),
@@ -244,7 +250,7 @@ export function Sidebar() {
}
- label="Search"
+ label={t`Search`}
isActive={threadSearchOpen}
onPress={openThreadSearch}
/>
@@ -257,13 +263,13 @@ export function Sidebar() {
}
- label="Settings"
+ label={t`Settings`}
onPress={openSettings}
/>
}
- label="Show sidebar"
+ label={t`Show sidebar`}
onPress={expand}
/>
@@ -277,7 +283,9 @@ export function Sidebar() {
{projectIds.length === 0 && !(homeScopeEnabled && homeProject) ? (
- Add a project to start
+
+ Add a project to start
+
) : (
@@ -294,7 +302,9 @@ export function Sidebar() {
label={
- Home
+
+ Home
+
}
className="lightcode-sidebar-project-nudge !pl-1"
@@ -328,12 +338,12 @@ export function Sidebar() {
}
- label="Settings"
+ label={t`Settings`}
onPress={openSettings}
/>
}
- label="Hide sidebar"
+ label={t`Hide sidebar`}
onPress={collapse}
/>
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
index 69923269..22fe26c3 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/DeleteWorktreeDialog.tsx
@@ -1,5 +1,6 @@
import { useState } from "react";
import { AlertDialog, Checkbox } from "@heroui/react";
+import { Trans } from "@lingui/react/macro";
import { Button } from "@/renderer/components/common/Button";
const PREF_KEY = "lightcode-delete-worktree-pref";
@@ -36,11 +37,15 @@ export function DeleteWorktreeDialog(props: {
- Delete thread?
+
+ Delete thread?
+
- This thread uses worktree{" "}
- {props.worktreeBranch}. Also
- remove the worktree directory?
+
+ This thread uses worktree{" "}
+ {props.worktreeBranch}.
+ Also remove the worktree directory?
+
@@ -48,18 +53,22 @@ export function DeleteWorktreeDialog(props: {
- Don't ask again
+ Don't ask again
- Cancel
+ Cancel
- Thread Only
+
+ Thread Only
+
- Thread + Worktree
+
+ Thread + Worktree
+
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
index b995ad37..94c9cc95 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/ForceDeleteBranchDialog.tsx
@@ -1,3 +1,4 @@
+import { Trans, useLingui } from "@lingui/react/macro";
import { ConfirmDialog } from "@/renderer/components/common";
export function ForceDeleteBranchDialog(props: {
@@ -7,21 +8,26 @@ export function ForceDeleteBranchDialog(props: {
onClose: () => void;
onForceDelete: () => void;
}) {
+ const { t } = useLingui();
return (
- Branch {props.branch} has unmerged changes:
+
+ Branch {props.branch} has unmerged changes:
+
{props.errorMessage}
- Force delete? Unmerged changes will be lost.
+
+ Force delete? Unmerged changes will be lost.
+
>
}
- cancelLabel="Keep Branch"
- confirmLabel="Force Delete"
+ cancelLabel={t`Keep Branch`}
+ confirmLabel={t`Force Delete`}
onConfirm={props.onForceDelete}
onClose={props.onClose}
/>
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.test.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.test.tsx
index 41101eea..7bd6a8a5 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.test.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.test.tsx
@@ -1,6 +1,7 @@
-import { render, screen, waitFor } from "@testing-library/react";
+import { screen, waitFor } from "@testing-library/react";
import type { ReactNode } from "react";
import { beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { GitStatusResult, PrData, ProjectLocation } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
import { useGitStore } from "@/renderer/state/gitStore";
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
index 4c34585a..cf76d3ba 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/GitBadge.tsx
@@ -1,6 +1,7 @@
import { useEffect, useId, useRef, useState } from "react";
import { GitBranch, GitBranchMinus, GitFork, GitPullRequest } from "lucide-react";
import { Tooltip } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { useDraggable } from "@dnd-kit/react";
import { readBridge } from "@/renderer/bridge";
import { useAppStore } from "@/renderer/state/appStore";
@@ -35,6 +36,7 @@ export function GitBadge(props: {
*/
fallbackToWorktreeIcon?: boolean;
}) {
+ const { t } = useLingui();
const elementRef = useRef(null);
const dragId = useId();
useDraggable({
@@ -144,7 +146,7 @@ export function GitBadge(props: {
ref={elementRef}
role="button"
tabIndex={0}
- aria-label={`Git status for ${props.projectName}: not a Git repository`}
+ aria-label={t`Git status for ${props.projectName}: not a Git repository`}
className={`${gitBadgeButtonClass} ${
props.isActive ? "bg-accent/15 ring-1 ring-accent/40" : "text-muted/60"
}`}
@@ -159,7 +161,9 @@ export function GitBadge(props: {
- Not a Git repository
+
+ Not a Git repository
+
);
}
@@ -175,7 +179,7 @@ export function GitBadge(props: {
ref={elementRef}
role="button"
tabIndex={0}
- aria-label={`Git status for ${props.projectName}`}
+ aria-label={t`Git status for ${props.projectName}`}
className={`${gitBadgeButtonClass} ${
props.isActive
? "bg-accent/15 ring-1 ring-accent/40"
@@ -194,7 +198,9 @@ export function GitBadge(props: {
- Open Git panel
+
+ Open Git panel
+
);
}
@@ -206,7 +212,7 @@ export function GitBadge(props: {
ref={elementRef}
role="button"
tabIndex={0}
- aria-label={`Git status for ${props.projectName}`}
+ aria-label={t`Git status for ${props.projectName}`}
className={`shrink-0 cursor-grab rounded px-1 py-0.5 transition-colors hover:bg-[var(--row-hover)] hover:text-foreground active:cursor-grabbing ${
props.isActive ? "bg-accent/15 ring-1 ring-accent/40" : "text-muted/60"
}`}
@@ -231,7 +237,9 @@ export function GitBadge(props: {
- Worktree: {props.projectName}
+
+ Worktree: {props.projectName}
+
)}
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
index 7ceaeef6..a5a6c328 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/InlineRenameInput.tsx
@@ -1,10 +1,12 @@
import { useEffect, useRef, useState } from "react";
+import { useLingui } from "@lingui/react/macro";
export function InlineRenameInput(props: {
initialValue: string;
onCommit: (value: string) => void;
onCancel: () => void;
}) {
+ const { t } = useLingui();
const inputRef = useRef(null);
const [value, setValue] = useState(props.initialValue);
const committedRef = useRef(false);
@@ -31,7 +33,7 @@ export function InlineRenameInput(props: {
return (
setValue(e.target.value)}
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
index f2d6aff4..b61e90ed 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/NewThreadButton.tsx
@@ -1,6 +1,7 @@
import { useRef } from "react";
import { Columns2, Plus } from "lucide-react";
import { useDraggable } from "@dnd-kit/react";
+import { useLingui } from "@lingui/react/macro";
import { ContextMenu, SidebarButton } from "@/renderer/components/common";
import type { DragSourceData } from "@/renderer/dnd";
@@ -13,6 +14,7 @@ export function NewThreadButton(props: {
onPress: () => void;
onOpenAsPanel: () => void;
}) {
+ const { t } = useLingui();
const newThreadRef = useRef(null);
useDraggable({
id: `new-thread:${props.projectId}`,
@@ -26,7 +28,10 @@ export function NewThreadButton(props: {
items={[
{
id: "open-as-panel",
- label: "Open as Panel",
+ label: t({
+ message: "Open as Panel",
+ comment: "Context menu action: open the new thread in a side-by-side panel",
+ }),
icon: ,
isDisabled: !props.canOpenAsPanel,
},
@@ -40,7 +45,7 @@ export function NewThreadButton(props: {
liveText
ref={newThreadRef}
icon={ }
- label={props.hasDraft ? "New thread (draft)" : "New thread"}
+ label={props.hasDraft ? t`New thread (draft)` : t`New thread`}
isActive={props.isActive}
isDraggingAnything={props.isDraggingAnything}
onPress={props.onPress}
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
index 12083229..2b9525d1 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SidebarProjectHeader.tsx
@@ -10,6 +10,7 @@ import {
Settings2,
Trash2,
} from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { Project } from "@/shared/contracts";
import { TuxIcon } from "@/renderer/components/common/TuxIcon";
import { ContextMenu, SidebarButton } from "@/renderer/components/common";
@@ -42,6 +43,7 @@ export function SidebarProjectHeader(props: {
isDragging: boolean;
}) {
const { project, isCollapsed, isDragging } = props;
+ const { t } = useLingui();
const toggleProjectCollapsed = useSidebarUiStore((s) => s.toggleProjectCollapsed);
const hasTerminal = useIsProjectTerminalOpen(project.id);
const isActiveTerminal = useIsProjectTerminalActive(project.id);
@@ -57,7 +59,7 @@ export function SidebarProjectHeader(props: {
items={[
{
id: "project-settings",
- label: "Project Settings",
+ label: t`Project Settings`,
icon: ,
},
...(isDisabled
@@ -66,17 +68,17 @@ export function SidebarProjectHeader(props: {
{
type: "submenu" as const,
id: "git",
- label: "Git",
+ label: t`Git`,
icon: ,
items: [
{
id: "git-review",
- label: "Review Changes",
+ label: t`Review Changes`,
icon: ,
},
{
id: "git-sync",
- label: "Sync",
+ label: t`Sync`,
icon: ,
},
],
@@ -86,7 +88,7 @@ export function SidebarProjectHeader(props: {
{
type: "submenu" as const,
id: "run-action",
- label: "Run",
+ label: t`Run`,
icon: ,
items: project.scripts.actions.map((action) => ({
id: `action:${action.id}`,
@@ -99,12 +101,12 @@ export function SidebarProjectHeader(props: {
]),
{
id: "toggle-disabled",
- label: isDisabled ? "Enable Project" : "Disable Project",
+ label: isDisabled ? t`Enable Project` : t`Disable Project`,
icon: isDisabled ? : ,
},
{
id: "remove-project",
- label: "Remove Project",
+ label: t`Remove Project`,
icon: ,
variant: "danger" as const,
},
@@ -136,7 +138,7 @@ export function SidebarProjectHeader(props: {
)}
}
- tooltip={isDisabled ? `${projectLocation} (disabled)` : projectLocation}
+ tooltip={isDisabled ? t`${projectLocation} (disabled)` : projectLocation}
className={`lightcode-sidebar-project-nudge !pl-1${isDragging ? " opacity-60" : ""}${
isDisabled ? " opacity-50" : ""
}`}
@@ -151,7 +153,7 @@ export function SidebarProjectHeader(props: {
void }) {
+ const { t } = useLingui();
return (
}
- label="See more"
+ label={t`See more`}
onPress={props.onPress}
/>
);
@@ -87,6 +89,7 @@ function SidebarThreadRow(props: {
setEditingThreadId: (id: string | null) => void;
}) {
const { row, project, editingThreadId, setEditingThreadId } = props;
+ const { t } = useLingui();
if (row.kind === "thread") {
return (
@@ -125,7 +128,7 @@ function SidebarThreadRow(props: {
/>
) : row.kind === "section-label" ? (
- {row.label}
+ {t(row.label)}
) : (
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
index 3e5003dc..f3173160 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SidebarThreadGroup.tsx
@@ -1,4 +1,5 @@
import { Tooltip } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Archive, Check, ChevronRight, CircleCheck, Columns2, Pencil, Trash2 } from "lucide-react";
import type { Project } from "@/shared/contracts";
import { ContextMenu } from "@/renderer/components/common";
@@ -18,11 +19,12 @@ export function SidebarThreadGroup(props: {
setEditingThreadId: (id: string | null) => void;
}) {
const { entry, editingThreadId, setEditingThreadId } = props;
+ const { t } = useLingui();
const groupKey = entry.group.groupId;
const collapseKey = `group:${groupKey}`;
const isGroupCollapsed = useIsWorktreeCollapsed(collapseKey);
const toggleWorktreeCollapsed = useSidebarUiStore((s) => s.toggleWorktreeCollapsed);
- const activeThreads = entry.group.threads.filter((t) => !t.done);
+ const activeThreads = entry.group.threads.filter((thread) => !thread.done);
const isDone = activeThreads.length === 0;
const isRenamingGroup = editingThreadId === collapseKey;
const threadRemoveAction = useSharedSettings((s) => s.threadRemoveAction);
@@ -31,10 +33,10 @@ export function SidebarThreadGroup(props: {
entry.group.threads[0]!.updatedAt,
);
const removeGroupThreads = () => {
- const threadIds = entry.group.threads.map((t) => t.id);
- for (const t of entry.group.threads) {
+ const threadIds = entry.group.threads.map((thread) => thread.id);
+ for (const thread of entry.group.threads) {
if (threadRemoveAction === "archive") {
- archiveThread(t.id);
+ archiveThread(thread.id);
}
}
if (threadRemoveAction === "delete") {
@@ -55,29 +57,29 @@ export function SidebarThreadGroup(props: {
items={[
{
id: "open-all",
- label: "Open All",
+ label: t`Open All`,
icon: ,
isDisabled: activeThreads.length < 2,
},
{
id: "rename-group",
- label: "Rename Group",
+ label: t`Rename Group`,
icon: ,
},
{
id: "mark-all-done",
- label: "Mark All Done",
+ label: t`Mark All Done`,
icon: ,
isDisabled: activeThreads.length === 0,
},
{ type: "separator" as const },
{
id: "archive-all",
- label: "Archive All",
+ label: t`Archive All`,
icon: ,
variant: "warning",
},
- { id: "ungroup-all", label: "Ungroup All", variant: "warning" },
+ { id: "ungroup-all", label: t`Ungroup All`, variant: "warning" },
]}
onAction={(key) => {
if (key === "open-all") {
@@ -87,13 +89,13 @@ export function SidebarThreadGroup(props: {
setEditingThreadId(collapseKey);
}
if (key === "mark-all-done") {
- for (const t of entry.group.threads) {
- if (!t.done) toggleMarkThreadDone(t.id);
+ for (const thread of entry.group.threads) {
+ if (!thread.done) toggleMarkThreadDone(thread.id);
}
}
if (key === "archive-all") {
- for (const t of entry.group.threads) {
- archiveThread(t.id);
+ for (const thread of entry.group.threads) {
+ archiveThread(thread.id);
}
clearThreadGroup(groupKey);
}
@@ -119,8 +121,8 @@ export function SidebarThreadGroup(props: {
initialValue={entry.group.groupName}
onCommit={(newName) => {
useAppStore.setState((state) => ({
- threads: state.threads.map((t) =>
- t.groupId === groupKey ? { ...t, groupName: newName } : t,
+ threads: state.threads.map((thread) =>
+ thread.groupId === groupKey ? { ...thread, groupName: newName } : thread,
),
}));
setEditingThreadId(null);
@@ -149,7 +151,9 @@ export function SidebarThreadGroup(props: {
>
- Open all in group
+
+ Open all in group
+
)}
{!isRenamingGroup && (
@@ -163,8 +167,8 @@ export function SidebarThreadGroup(props: {
tabIndex={0}
aria-label={
threadRemoveAction === "archive"
- ? `Archive ${entry.group.groupName}`
- : `Delete ${entry.group.groupName}`
+ ? t`Archive ${entry.group.groupName}`
+ : t`Delete ${entry.group.groupName}`
}
className={`absolute inset-0 flex items-center justify-center rounded text-muted/55 opacity-0 transition group-hover:opacity-100 ${threadRemoveAction === "archive" ? "hover:text-warning" : "hover:text-danger"}`}
onClick={(event) => {
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
index e9724892..086b7b56 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SidebarWorktreeGroup.tsx
@@ -1,4 +1,5 @@
import { CircleCheck, GitFork, Play, Plus, Trash2 } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import { useSortable } from "@dnd-kit/react/sortable";
import type { Project } from "@/shared/contracts";
import { ContextMenu } from "@/renderer/components/common";
@@ -40,6 +41,7 @@ export function SidebarWorktreeGroup(props: {
sortDisabled?: boolean;
}) {
const { group, project, sortDisabled = false } = props;
+ const { t } = useLingui();
const isGroupCollapsed = useIsWorktreeCollapsed(group.worktreePath);
const toggleWorktreeCollapsed = useSidebarUiStore((s) => s.toggleWorktreeCollapsed);
const worktreeGitItems = useWorktreeGitItems(project.id, group.worktreePath, gitMenuIcons);
@@ -48,9 +50,9 @@ export function SidebarWorktreeGroup(props: {
const isBusyTerminal = useIsWorktreeTerminalBusy(group.worktreePath);
const isActiveFiles = useIsWorktreeFilesPanelActive(group.worktreePath);
const isActiveGit = useIsWorktreeGitPanelActive(group.worktreePath);
- const groupThreadIds = group.threads.map((t) => t.id);
- const activeThreads = group.threads.filter((t) => !t.done);
- const isDone = group.threads.every((t) => t.done);
+ const groupThreadIds = group.threads.map((thread) => thread.id);
+ const activeThreads = group.threads.filter((thread) => !thread.done);
+ const isDone = group.threads.every((thread) => thread.done);
const latestThreadUpdatedAt = group.threads.reduce(
(latest, thread) => (thread.updatedAt > latest ? thread.updatedAt : latest),
group.threads[0]!.updatedAt,
@@ -66,7 +68,7 @@ export function SidebarWorktreeGroup(props: {
type: "worktree-group",
worktreePath: group.worktreePath,
projectId: project.id,
- threadIds: group.threads.map((t) => t.id),
+ threadIds: group.threads.map((thread) => thread.id),
} satisfies DragSourceData,
});
@@ -79,19 +81,19 @@ export function SidebarWorktreeGroup(props: {
items={[
{
id: "new-thread-in-worktree",
- label: "New Thread in Worktree",
+ label: t`New Thread in Worktree`,
icon: ,
},
{
type: "submenu" as const,
id: "git",
- label: "Git",
+ label: t`Git`,
icon: ,
items: worktreeGitItems,
},
{
id: "mark-all-done",
- label: "Mark All Done",
+ label: t`Mark All Done`,
icon: ,
isDisabled: activeThreads.length === 0,
},
@@ -100,7 +102,7 @@ export function SidebarWorktreeGroup(props: {
{
type: "submenu" as const,
id: "run-action",
- label: "Run",
+ label: t`Run`,
icon: ,
items: project.scripts.actions.map((action) => ({
id: `action:${action.id}`,
@@ -112,7 +114,7 @@ export function SidebarWorktreeGroup(props: {
: []),
{
id: "delete-worktree",
- label: "Delete Worktree",
+ label: t`Delete Worktree`,
icon: ,
variant: "danger" as const,
},
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.test.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.test.tsx
index cd752bec..3461a480 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.test.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.test.tsx
@@ -1,6 +1,6 @@
-import { render } from "@testing-library/react";
import type { ReactNode } from "react";
import { beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { Project, Thread } from "@/shared/contracts";
import { SortableThreadItem } from "./SortableThreadItem";
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
index 39aad101..d9ecf534 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/SortableThreadItem.tsx
@@ -11,6 +11,7 @@ import {
Star,
Trash2,
} from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { Project, Thread } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
import { useGitStore } from "@/renderer/state/gitStore";
@@ -71,6 +72,7 @@ export function SortableThreadItem(props: {
editingThreadId,
sortDisabled = false,
} = props;
+ const { t } = useLingui();
const isCurrentThread = useIsCurrentThread(thread.id);
const currentThreadCount = useCurrentThreadIdsCount();
const projectAgents = useProjectAgentStatuses(project.location);
@@ -81,9 +83,9 @@ export function SortableThreadItem(props: {
);
const unloadDisabledReason =
thread.status === "inactive"
- ? "Thread is already unloaded."
+ ? t`Thread is already unloaded.`
: thread.status === "launching"
- ? "Wait for the thread to finish starting."
+ ? t`Wait for the thread to finish starting.`
: undefined;
const { ref } = useSortable({
@@ -114,13 +116,13 @@ export function SortableThreadItem(props: {
? [
{
id: "new-thread-in-worktree",
- label: "New Thread in Worktree",
+ label: t`New Thread in Worktree`,
icon: ,
},
{
type: "submenu" as const,
id: "git",
- label: "Git",
+ label: t`Git`,
icon: ,
items: worktreeGitItems,
},
@@ -131,7 +133,7 @@ export function SortableThreadItem(props: {
{
type: "submenu" as const,
id: "run-action",
- label: "Run",
+ label: t`Run`,
icon: ,
items: project.scripts.actions.map((action) => ({
id: `action:${action.id}`,
@@ -143,29 +145,29 @@ export function SortableThreadItem(props: {
: []),
{
id: "rename",
- label: "Rename",
+ label: t`Rename`,
icon: ,
},
{
id: "unload",
- label: "Unload Thread",
+ label: t`Unload Thread`,
icon: ,
isDisabled: unloadDisabledReason !== undefined,
...(unloadDisabledReason ? { disabledReason: unloadDisabledReason } : {}),
},
{
id: "mark-done",
- label: thread.done ? "Unmark Done" : "Mark Done",
+ label: thread.done ? t`Unmark Done` : t`Mark Done`,
icon: ,
},
{
id: "toggle-star",
- label: thread.starred ? "Unpin" : "Pin to top",
+ label: thread.starred ? t`Unpin` : t`Pin to top`,
icon: ,
},
{
id: "continue-in",
- label: "Continue in...",
+ label: t`Continue in...`,
icon: ,
isDisabled:
!thread.sessionRef ||
@@ -174,8 +176,8 @@ export function SortableThreadItem(props: {
projectAgents.filter((a) => a.kind !== thread.agentKind).length === 0
? {
disabledReason: !thread.sessionRef
- ? "No active session"
- : "No other agents installed",
+ ? t`No active session`
+ : t`No other agents installed`,
}
: {}),
},
@@ -183,7 +185,7 @@ export function SortableThreadItem(props: {
? [
{
id: "ungroup",
- label: "Remove from group",
+ label: t`Remove from group`,
},
]
: []),
@@ -191,7 +193,7 @@ export function SortableThreadItem(props: {
? [
{
id: "group-open-threads",
- label: "Group open threads",
+ label: t`Group open threads`,
icon: ,
},
]
@@ -199,13 +201,13 @@ export function SortableThreadItem(props: {
{ type: "separator" as const },
{
id: "archive",
- label: "Archive Thread",
+ label: t`Archive Thread`,
icon: ,
variant: "warning",
},
{
id: "delete",
- label: "Delete Thread",
+ label: t`Delete Thread`,
icon: ,
variant: "danger",
},
@@ -245,32 +247,34 @@ export function SortableThreadItem(props: {
const state = useAppStore.getState();
if (state.view.kind !== "thread") return;
const openThreads = state.threads.filter(
- (t) => state.view.kind === "thread" && state.view.panes.includes(t.id),
+ (other) => state.view.kind === "thread" && state.view.panes.includes(other.id),
);
const projectId = openThreads[0]?.projectId;
- if (!projectId || !openThreads.every((t) => t.projectId === projectId)) return;
+ if (!projectId || !openThreads.every((other) => other.projectId === projectId)) return;
const groupId = crypto.randomUUID();
const groupName = thread.title;
useAppStore.setState((s) => ({
- threads: s.threads.map((t) =>
- s.view.kind === "thread" && s.view.panes.includes(t.id)
- ? { ...t, groupId, groupName }
- : t,
+ threads: s.threads.map((other) =>
+ s.view.kind === "thread" && s.view.panes.includes(other.id)
+ ? { ...other, groupId, groupName }
+ : other,
),
view: s.view.kind === "thread" ? { ...s.view, activeGroupId: groupId } : s.view,
}));
}
if (key === "ungroup") {
useAppStore.setState((state) => {
- let updatedThreads = state.threads.map((t) =>
- t.id === thread.id ? { ...t, groupId: undefined, groupName: undefined } : t,
+ let updatedThreads = state.threads.map((other) =>
+ other.id === thread.id
+ ? { ...other, groupId: undefined, groupName: undefined }
+ : other,
);
- const remaining = updatedThreads.filter((t) => t.groupId === thread.groupId);
+ const remaining = updatedThreads.filter((other) => other.groupId === thread.groupId);
if (remaining.length === 1) {
- updatedThreads = updatedThreads.map((t) =>
- t.id === remaining[0]!.id
- ? { ...t, groupId: undefined, groupName: undefined }
- : t,
+ updatedThreads = updatedThreads.map((other) =>
+ other.id === remaining[0]!.id
+ ? { ...other, groupId: undefined, groupName: undefined }
+ : other,
);
}
const view =
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
index e9c1994e..23ce6a11 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SortableThreadItem/parts/ThreadItemSuffix.tsx
@@ -1,4 +1,5 @@
import { Archive, FolderOpen, Star, Trash2 } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { Thread } from "@/shared/contracts";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { GitBadge } from "@/renderer/views/MainView/parts/Sidebar/parts/GitBadge";
@@ -23,6 +24,7 @@ export function ThreadItemSuffix(props: {
showWorktreeFilesButton: boolean;
}) {
const { thread, showWorktreeBadge, showWorktreeFilesButton } = props;
+ const { t } = useLingui();
const threadRemoveAction = useSharedSettings((s) => s.threadRemoveAction);
const isFilesActive = useIsWorktreeFilesPanelActive(thread.worktreePath);
const isGitActive = useIsWorktreeGitPanelActive(thread.worktreePath);
@@ -35,7 +37,7 @@ export function ThreadItemSuffix(props: {
return (
<>
- {thread.starred && }
+ {thread.starred && }
{showWorktreeBadge && thread.worktreePath && (
<>
{showWorktreeFilesButton ? (
@@ -43,7 +45,7 @@ export function ThreadItemSuffix(props: {
panel="files"
projectId={thread.projectId}
worktreePath={thread.worktreePath}
- ariaLabel={`Files for ${thread.worktreeBranch ?? thread.title}`}
+ ariaLabel={t`Files for ${thread.worktreeBranch ?? thread.title}`}
className={`flex h-[18px] shrink-0 cursor-grab items-center justify-center rounded transition-[opacity,color,background-color] hover:bg-[var(--row-hover)] hover:text-foreground active:cursor-grabbing ${
isFilesActive
? "w-[18px] p-0.5 text-accent"
@@ -58,7 +60,7 @@ export function ThreadItemSuffix(props: {
panel="terminal"
projectId={thread.projectId}
worktreePath={thread.worktreePath}
- ariaLabel={`Terminal for ${thread.worktreeBranch}`}
+ ariaLabel={t`Terminal for ${thread.worktreeBranch}`}
className={`flex h-[18px] shrink-0 cursor-grab items-center justify-center rounded transition-[opacity,color,background-color] hover:bg-[var(--row-hover)] hover:text-foreground active:cursor-grabbing ${
isTerminalVisible
? `w-[18px] p-0.5 ${isTerminalActive ? "text-accent" : "text-foreground"}`
@@ -88,7 +90,9 @@ export function ThreadItemSuffix(props: {
role="button"
tabIndex={0}
aria-label={
- threadRemoveAction === "archive" ? `Archive ${thread.title}` : `Delete ${thread.title}`
+ threadRemoveAction === "archive"
+ ? t`Archive ${thread.title}`
+ : t`Delete ${thread.title}`
}
className={`absolute inset-0 flex items-center justify-center rounded text-muted/55 opacity-0 transition group-hover:opacity-100 ${threadRemoveAction === "archive" ? "hover:text-warning" : "hover:text-danger"}`}
onClick={(event) => {
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.test.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.test.tsx
index 7f427a5a..95b7da23 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.test.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.test.tsx
@@ -1,6 +1,7 @@
-import { fireEvent, render, screen, waitFor } from "@testing-library/react";
+import { fireEvent, screen, waitFor } from "@testing-library/react";
import type { ReactNode } from "react";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { GitStatusResult, Project } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
import { useGitStore } from "@/renderer/state/gitStore";
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
index 3d44514c..21d1ef67 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/SyncBadge.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import { PixelLoader } from "@/renderer/components/common";
import { Tooltip } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { useShallow } from "zustand/shallow";
import { useGitStore } from "@/renderer/state/gitStore";
import { useAppStore } from "@/renderer/state/appStore";
@@ -14,6 +15,7 @@ import {
} from "@/renderer/actions/gitCommandRunner";
export function SyncBadge(props: { projectId: string; worktreePath?: string }) {
+ const { t } = useLingui();
const { ahead, behind, hasTracking, hasRemote } = useGitStore(
useShallow((s) => {
const status = props.worktreePath
@@ -37,10 +39,10 @@ export function SyncBadge(props: { projectId: string; worktreePath?: string }) {
const label =
syncAction === "push"
- ? `Push ↑${ahead}`
+ ? t`Push ↑${ahead}`
: syncAction === "pull"
- ? `Pull ↓${behind}`
- : `Sync ↓${behind} ↑${ahead}`;
+ ? t`Pull ↓${behind}`
+ : t`Sync ↓${behind} ↑${ahead}`;
async function handlePress() {
if (isSyncing) return;
@@ -57,7 +59,10 @@ export function SyncBadge(props: { projectId: string; worktreePath?: string }) {
if (props.worktreePath) {
const thread = useAppStore
.getState()
- .threads.find((t) => t.worktreePath === props.worktreePath && t.worktreeBranch);
+ .threads.find(
+ (candidate) =>
+ candidate.worktreePath === props.worktreePath && candidate.worktreeBranch,
+ );
await runGitSyncCommand({
command: "push",
projectLocation: location,
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx b/src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
index aca857ad..717b5a48 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/WorktreeGroupHeader.tsx
@@ -1,4 +1,5 @@
import { Check, FolderOpen, GitFork, Trash2 } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import { SidebarButton } from "@/renderer/components/common";
import { AnimatedTerminalIcon } from "@/renderer/components/common/AnimatedTerminalIcon";
import { RelativeTime } from "@/renderer/components/common/RelativeTime";
@@ -28,6 +29,7 @@ export function WorktreeGroupHeader(props: {
updatedAt: string;
onContextMenu?: React.MouseEventHandler | undefined;
}) {
+ const { t } = useLingui();
const hiddenPanelButtonClass =
"w-0 -mr-[3px] overflow-hidden p-0 opacity-0 pointer-events-none group-hover:w-[18px] group-hover:mr-0 group-hover:p-0.5 group-hover:opacity-100 group-hover:pointer-events-auto focus-visible:w-[18px] focus-visible:mr-0 focus-visible:p-0.5 focus-visible:opacity-100 focus-visible:pointer-events-auto";
@@ -59,7 +61,7 @@ export function WorktreeGroupHeader(props: {
{props.worktreeBranch}
}
- tooltip={`Worktree: ${props.worktreeBranch}`}
+ tooltip={t`Worktree: ${props.worktreeBranch}`}
size="xs"
liveText
className="h-8"
@@ -74,7 +76,7 @@ export function WorktreeGroupHeader(props: {
panel="files"
projectId={props.projectId}
worktreePath={props.worktreePath}
- ariaLabel={`Files for ${props.worktreeBranch}`}
+ ariaLabel={t`Files for ${props.worktreeBranch}`}
className={`flex h-[18px] shrink-0 cursor-grab items-center justify-center rounded transition-[opacity,color,background-color] hover:bg-[var(--row-hover)] hover:text-foreground active:cursor-grabbing ${
props.isActiveFiles
? "w-[18px] p-0.5 text-accent"
@@ -88,7 +90,7 @@ export function WorktreeGroupHeader(props: {
panel="terminal"
projectId={props.projectId}
worktreePath={props.worktreePath}
- ariaLabel={`Terminal for ${props.worktreeBranch}`}
+ ariaLabel={t`Terminal for ${props.worktreeBranch}`}
className={`flex h-[18px] shrink-0 cursor-grab items-center justify-center rounded transition-[opacity,color,background-color] hover:bg-[var(--row-hover)] hover:text-foreground active:cursor-grabbing ${
props.isActiveTerminal
? "w-[18px] p-0.5 text-accent"
@@ -116,7 +118,7 @@ export function WorktreeGroupHeader(props: {
{
event.stopPropagation();
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts b/src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
index 720d5b13..36ccfa16 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/sidebarProjectRows.ts
@@ -1,3 +1,5 @@
+import { msg } from "@lingui/core/macro";
+import type { MessageDescriptor } from "@lingui/core";
import { isThreadTurnActive, type Thread } from "@/shared/contracts";
import { groupThreads, type ThreadListEntry, type WorktreeThreadGroup } from "./groupThreads";
import type { ThreadSortMode } from "./sortMode";
@@ -27,7 +29,7 @@ export type SidebarRow =
entry: Extract;
}
| { kind: "divider"; key: string }
- | { kind: "section-label"; key: string; label: string }
+ | { kind: "section-label"; key: string; label: MessageDescriptor }
| { kind: "see-more"; key: string; hiddenCount: number };
/** Default number of list items shown per project before the "See more" row. */
@@ -237,7 +239,7 @@ export function buildSidebarProjectRows(input: {
pushList(starredVisible);
pushList(recentVisible, starredVisible.length);
if (hasBothSections) {
- rows.push({ kind: "section-label", key: "older-label", label: "Older" });
+ rows.push({ kind: "section-label", key: "older-label", label: msg`Older` });
}
pushList(olderVisible, starredVisible.length + recentVisible.length);
if (hiddenCount > 0) rows.push({ kind: "see-more", key: "see-more", hiddenCount });
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts b/src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
index c4a2e304..657048cd 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/sortMode.ts
@@ -1,4 +1,6 @@
import { ArrowDownUp, CalendarClock, GripVertical } from "lucide-react";
+import { msg } from "@lingui/core/macro";
+import type { MessageDescriptor } from "@lingui/core";
export type ThreadSortMode = "updated" | "created" | "manual";
@@ -10,8 +12,9 @@ export const sortModeIcon: Record = {
manual: GripVertical,
};
-export const sortModeLabel: Record = {
- updated: "Sort by last updated",
- created: "Sort by created",
- manual: "Manual order",
+/** Display labels keyed by the stable {@link ThreadSortMode} id; resolve via `useLingui().t`. */
+export const sortModeLabel: Record = {
+ updated: msg`Sort by last updated`,
+ created: msg`Sort by created`,
+ manual: msg`Manual order`,
};
diff --git a/src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts b/src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
index 5ca366a8..a4bfff6d 100644
--- a/src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
+++ b/src/renderer/views/MainView/parts/Sidebar/parts/useWorktreeActions.ts
@@ -1,4 +1,6 @@
import { useShallow } from "zustand/shallow";
+import { msg } from "@lingui/core/macro";
+import { i18n } from "@/renderer/i18n/i18n";
import { useGitStore } from "@/renderer/state/gitStore";
import { deriveSyncAction, type SyncAction } from "@/renderer/actions/gitCommandRunner";
@@ -79,41 +81,41 @@ export function buildWorktreeGitItems(
icons: GitMenuIcons,
): GitMenuItem[] {
const syncMap: Record = {
- sync: { id: "git-sync", label: "Sync", icon: icons.sync },
+ sync: { id: "git-sync", label: i18n._(msg`Sync`), icon: icons.sync },
push: {
id: "git-push",
- label: vis.ahead > 0 ? `Push (${vis.ahead})` : "Push",
+ label: vis.ahead > 0 ? i18n._(msg`Push (${vis.ahead})`) : i18n._(msg`Push`),
icon: icons.push,
},
pull: {
id: "git-pull",
- label: vis.behind > 0 ? `Pull (${vis.behind})` : "Pull",
+ label: vis.behind > 0 ? i18n._(msg`Pull (${vis.behind})`) : i18n._(msg`Pull`),
icon: icons.pull,
},
};
return [
- { id: "git-review", label: "Review Changes", icon: icons.review },
+ { id: "git-review", label: i18n._(msg`Review Changes`), icon: icons.review },
syncMap[vis.syncAction],
...(vis.showPullFromSource
? [
{
id: "git-pull-from-source",
- label: `Pull from Source (${vis.sourceAhead})`,
+ label: i18n._(msg`Pull from Source (${vis.sourceAhead})`),
icon: icons.pullFromSource,
},
]
: []),
...(vis.showMerge
? [
- { id: "git-merge-to-source", label: "Merge to Source", icon: icons.merge },
- { id: "git-merge-and-remove", label: "Merge & Remove", icon: icons.merge },
+ { id: "git-merge-to-source", label: i18n._(msg`Merge to Source`), icon: icons.merge },
+ { id: "git-merge-and-remove", label: i18n._(msg`Merge & Remove`), icon: icons.merge },
]
: []),
- ...(vis.showOpenPr
- ? [{ id: "open-pr", label: `Open PR #${vis.prNumber}`, icon: icons.openPr }]
+ ...(vis.showOpenPr && vis.prNumber !== undefined
+ ? [{ id: "open-pr", label: i18n._(msg`Open PR #${vis.prNumber}`), icon: icons.openPr }]
: vis.showCreatePr
- ? [{ id: "create-pr", label: "Create Pull Request", icon: icons.createPr }]
+ ? [{ id: "create-pr", label: i18n._(msg`Create Pull Request`), icon: icons.createPr }]
: []),
];
}
diff --git a/src/renderer/views/MainView/parts/SidebarHeaderControls.tsx b/src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
index 64df3852..4be2a508 100644
--- a/src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
+++ b/src/renderer/views/MainView/parts/SidebarHeaderControls.tsx
@@ -1,5 +1,6 @@
import { FolderPlus, Globe, Search } from "lucide-react";
import { Button, Dropdown, Label, Tooltip } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { usePanelStore } from "@/renderer/state/panelStore";
import {
type ThreadSortMode,
@@ -10,6 +11,7 @@ import {
import { CreateProjectMenu } from "@/renderer/views/MainView/parts/CreateProject/CreateProjectMenu";
export function SidebarHeaderControls() {
+ const { t } = useLingui();
const threadSortMode = usePanelStore((s) => s.threadSortMode);
const browserPanelOpen = usePanelStore((s) => s.browserPanelOpen);
const rightPanelTab = usePanelStore((s) => s.rightPanelTab);
@@ -21,7 +23,7 @@ export function SidebarHeaderControls() {
- Search
+
+ Search
+
{
@@ -67,10 +71,11 @@ export function SidebarHeaderControls() {
>
{sortModeOrder.map((mode) => {
const Icon = sortModeIcon[mode];
+ const label = t(sortModeLabel[mode]);
return (
-
+
- {sortModeLabel[mode]}
+ {label}
);
})}
@@ -81,7 +86,7 @@ export function SidebarHeaderControls() {
- Browser
+
+ Browser
+
);
diff --git a/src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx b/src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
index 4753e3b4..ee115dc7 100644
--- a/src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
+++ b/src/renderer/views/PrReviewOverlay/PrReviewOverlay.tsx
@@ -1,6 +1,7 @@
import { useEffect, useRef, useState } from "react";
import { ArrowLeft, Columns2, ExternalLink, RefreshCw, Rows2 } from "lucide-react";
import { Link, toast } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { Project, ProjectLocation } from "@/shared/contracts";
import { friendlyError } from "@/shared/messages";
import { readBridge } from "@/renderer/bridge";
@@ -31,6 +32,7 @@ export function PrReviewOverlay(props: {
onClose: () => void;
}) {
const { project, prNumber, locationOverride, worktreePath, prKey, onClose } = props;
+ const { t } = useLingui();
const effectiveLocation = locationOverride ?? project.location;
const cacheKey = `${project.id}#${prNumber}`;
@@ -98,7 +100,7 @@ export function PrReviewOverlay(props: {
return (
@@ -115,7 +117,7 @@ export function PrReviewOverlay(props: {
)}
{prUrl && (
void readBridge().openExternal(prUrl)}
>
@@ -137,7 +139,7 @@ export function PrReviewOverlay(props: {
onClick={() => setSelectedFile(null)}
>
- All files
+ All files
{selectedFile}
@@ -153,7 +155,7 @@ export function PrReviewOverlay(props: {
setDiffMode(DIFF_MODE.Split)}
>
setDiffMode(DIFF_MODE.Unified)}
>
void load()}
>
diff --git a/src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx b/src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
index 4f3f275a..c74952df 100644
--- a/src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
+++ b/src/renderer/views/PrReviewOverlay/parts/PrChecksTab.tsx
@@ -1,5 +1,6 @@
import { CheckCircle2, Clock, ExternalLink, XCircle } from "lucide-react";
import { Link } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { PR_CHECK_FAILURE_CONCLUSIONS, type PrCheck } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import { PixelLoader } from "@/renderer/components/common";
@@ -36,6 +37,7 @@ const TONE_CLASS = {
export function PrChecksTab(props: { cacheKey: string; loading: boolean }) {
const { cacheKey, loading } = props;
+ const { t } = useLingui();
const details = useGitStore((s) => s.prDetails[cacheKey]);
const checks = details?.checks;
@@ -50,7 +52,7 @@ export function PrChecksTab(props: { cacheKey: string; loading: boolean }) {
if (!checks || checks.length === 0) {
return (
- No checks reported for this PR.
+ No checks reported for this PR.
);
}
@@ -61,7 +63,9 @@ export function PrChecksTab(props: { cacheKey: string; loading: boolean }) {
- {passed} of {checks.length} checks passed
+
+ {passed} of {checks.length} checks passed
+
@@ -79,13 +83,13 @@ export function PrChecksTab(props: { cacheKey: string; loading: boolean }) {
{(check.workflowName || check.conclusion || check.state) && (
{check.workflowName ? `${check.workflowName} · ` : ""}
- {check.conclusion || check.state || "Unknown"}
+ {check.conclusion || check.state || t`Unknown`}
)}
{check.url ? (
void readBridge().openExternal(check.url!)}
>
diff --git a/src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx b/src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
index 1aff738b..de3577bd 100644
--- a/src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
+++ b/src/renderer/views/PrReviewOverlay/parts/PrCommitsTab.tsx
@@ -1,5 +1,6 @@
import { ExternalLink, GitCommit } from "lucide-react";
import { Link } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import type { PrCommitSummary } from "@/shared/contracts";
import { readBridge } from "@/renderer/bridge";
import { PixelLoader } from "@/renderer/components/common";
@@ -9,6 +10,7 @@ import { formatShortDateTime } from "@/renderer/utils/formatTime";
export function PrCommitsTab(props: { cacheKey: string; prKey: string; loading: boolean }) {
const { cacheKey, prKey, loading } = props;
+ const { t } = useLingui();
const details = useGitStore((s) => s.prDetails[cacheKey]);
const prUrl = usePrUrl(prKey);
const commits = details?.commits ?? [];
@@ -22,7 +24,9 @@ export function PrCommitsTab(props: { cacheKey: string; prKey: string; loading:
}
if (commits.length === 0) {
- return No commits found.;
+ return (
+ {t`No commits found.`}
+ );
}
return (
@@ -38,6 +42,7 @@ export function PrCommitsTab(props: { cacheKey: string; prKey: string; loading:
function PrCommitRow(props: { commit: PrCommitSummary; prUrl: string | undefined }) {
const { commit, prUrl } = props;
+ const { t } = useLingui();
// gh's commits payload doesn't include a direct commit URL — build one from the PR URL.
const commitUrl = (() => {
if (commit.url) return commit.url;
@@ -53,7 +58,7 @@ function PrCommitRow(props: { commit: PrCommitSummary; prUrl: string | undefined
className="truncate text-xs font-medium text-foreground"
title={commit.messageHeadline}
>
- {commit.messageHeadline || "(no message)"}
+ {commit.messageHeadline || t`(no message)`}
{commit.author?.login && {commit.author.login}}
@@ -66,7 +71,7 @@ function PrCommitRow(props: { commit: PrCommitSummary; prUrl: string | undefined
{commitUrl && (
void readBridge().openExternal(commitUrl)}
>
diff --git a/src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx b/src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
index 78f89e9f..8c830ed4 100644
--- a/src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
+++ b/src/renderer/views/PrReviewOverlay/parts/PrConversationTab.tsx
@@ -1,6 +1,9 @@
import { useState, type KeyboardEvent } from "react";
import { Check, MessageSquare, Send, ThumbsDown, ThumbsUp } from "lucide-react";
import { toast } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
+import type { MessageDescriptor } from "@lingui/core";
import type {
PrComment,
PrDetails,
@@ -17,13 +20,17 @@ import { formatShortDateTime } from "@/renderer/utils/formatTime";
const REVIEW_STATE_META: Record<
PrReviewState,
- { label: string; toneClass: string; Icon: typeof Check }
+ { label: MessageDescriptor; toneClass: string; Icon: typeof Check }
> = {
- APPROVED: { label: "approved", toneClass: "text-success", Icon: ThumbsUp },
- CHANGES_REQUESTED: { label: "requested changes", toneClass: "text-danger", Icon: ThumbsDown },
- COMMENTED: { label: "commented", toneClass: "text-muted", Icon: MessageSquare },
- DISMISSED: { label: "dismissed review", toneClass: "text-muted/60", Icon: MessageSquare },
- PENDING: { label: "pending review", toneClass: "text-warning", Icon: MessageSquare },
+ APPROVED: { label: msg`approved`, toneClass: "text-success", Icon: ThumbsUp },
+ CHANGES_REQUESTED: {
+ label: msg`requested changes`,
+ toneClass: "text-danger",
+ Icon: ThumbsDown,
+ },
+ COMMENTED: { label: msg`commented`, toneClass: "text-muted", Icon: MessageSquare },
+ DISMISSED: { label: msg`dismissed review`, toneClass: "text-muted/60", Icon: MessageSquare },
+ PENDING: { label: msg`pending review`, toneClass: "text-warning", Icon: MessageSquare },
};
type TimelineEntry =
@@ -53,6 +60,7 @@ export function PrConversationTab(props: {
onPosted: () => void;
}) {
const { cacheKey, projectLocation, prNumber, loading, onPosted } = props;
+ const { t } = useLingui();
const details = useGitStore((s) => s.prDetails[cacheKey]);
const [composerValue, setComposerValue] = useState("");
const [posting, setPosting] = useState(false);
@@ -70,7 +78,7 @@ export function PrConversationTab(props: {
});
useGitStore.getState().appendPrComment(cacheKey, comment);
setComposerValue("");
- toast.success("Comment posted");
+ toast.success(t`Comment posted`);
onPosted();
} catch (err) {
toast.danger(friendlyError(err));
@@ -101,7 +109,7 @@ export function PrConversationTab(props: {
{entries.length === 0 ? (
- No conversation yet. Be the first to comment.
+ No conversation yet. Be the first to comment.
) : (
@@ -119,8 +127,8 @@ export function PrConversationTab(props: {
@@ -116,7 +118,7 @@ export function PrReviewSidebar(props: {
) : (
)}
- Changes in PR
+ Changes in PR
({files.length})
@@ -128,12 +130,12 @@ export function PrReviewSidebar(props: {
{loading && files.length === 0 && (
- Loading PR…
+ Loading PR…
)}
{!loading && files.length === 0 && (
- No changes
+ No changes
)}
{sorted.map((file) => (
@@ -164,12 +166,12 @@ export function PrReviewSidebar(props: {
}
- label="Return to app"
+ label={t`Return to app`}
onPress={onClose}
/>
}
- label="Hide sidebar"
+ label={t`Hide sidebar`}
onPress={collapse}
/>
diff --git a/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.test.tsx b/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.test.tsx
index 5b61a8b0..530b3180 100644
--- a/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.test.tsx
+++ b/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.test.tsx
@@ -1,5 +1,6 @@
-import { render, screen } from "@testing-library/react";
+import { screen } from "@testing-library/react";
import { describe, expect, it } from "vitest";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import type { PrChecksStatus } from "@/renderer/utils/prStatus";
import { PrTabsPill, type PrTabCounts } from "./PrTabsPill";
diff --git a/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx b/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
index 08768d0d..86dc44b6 100644
--- a/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
+++ b/src/renderer/views/PrReviewOverlay/parts/PrTabsPill.tsx
@@ -1,4 +1,7 @@
import { FileDiff, GitCommit, MessageSquare, ShieldCheck } from "lucide-react";
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
+import type { MessageDescriptor } from "@lingui/core";
import { LightballTabs, type LightballTab } from "@/renderer/components/common";
import {
getChecksStatusTone,
@@ -17,13 +20,13 @@ export interface PrTabCounts {
const TAB_DEFS: ReadonlyArray<{
id: PrTabKey;
- label: string;
+ label: MessageDescriptor;
icon: typeof MessageSquare;
}> = [
- { id: "conversation", label: "Conversation", icon: MessageSquare },
- { id: "commits", label: "Commits", icon: GitCommit },
- { id: "checks", label: "Checks", icon: ShieldCheck },
- { id: "changes", label: "Changes", icon: FileDiff },
+ { id: "conversation", label: msg`Conversation`, icon: MessageSquare },
+ { id: "commits", label: msg`Commits`, icon: GitCommit },
+ { id: "checks", label: msg`Checks`, icon: ShieldCheck },
+ { id: "changes", label: msg`Changes`, icon: FileDiff },
];
const CHECKS_ICON_TONE_CLASS: Record = {
@@ -52,6 +55,7 @@ export function PrTabsPill(props: {
className?: string;
}) {
const { active, onChange, counts, checksStatus, className } = props;
+ const { t } = useLingui();
const checksTone = getChecksStatusTone(checksStatus);
const tabs: ReadonlyArray> = TAB_DEFS.map((def) => {
@@ -62,7 +66,7 @@ export function PrTabsPill(props: {
const iconClassName = `size-3${iconToneClass ? ` ${iconToneClass}` : ""}`;
return {
id: def.id,
- label: def.label,
+ label: t(def.label),
icon: ,
...(count > 0
? { trailing: (isActive: boolean) => }
@@ -75,7 +79,7 @@ export function PrTabsPill(props: {
tabs={tabs}
active={active}
onChange={onChange}
- ariaLabel="PR sections"
+ ariaLabel={t`PR sections`}
{...(className ? { className } : {})}
/>
);
diff --git a/src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx b/src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
index 5b8cf1d8..342bacb2 100644
--- a/src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
+++ b/src/renderer/views/PrReviewOverlay/parts/SubmitReviewPopover.tsx
@@ -10,6 +10,7 @@ import {
toast,
} from "@heroui/react";
import { Check, MessageSquare, X } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { PrReviewDecision, ProjectLocation } from "@/shared/contracts";
import { friendlyError } from "@/shared/messages";
import { readBridge } from "@/renderer/bridge";
@@ -22,6 +23,7 @@ export function SubmitReviewPopover(props: {
onSubmitted: () => void;
}) {
const { projectLocation, prNumber, hidden, onSubmitted } = props;
+ const { t } = useLingui();
const [open, setOpen] = useState(false);
const [decision, setDecision] = useState("comment");
const [body, setBody] = useState("");
@@ -44,10 +46,10 @@ export function SubmitReviewPopover(props: {
});
toast.success(
decision === "approve"
- ? "Approved"
+ ? t`Approved`
: decision === "request-changes"
- ? "Changes requested"
- : "Comment posted",
+ ? t`Changes requested`
+ : t`Comment posted`,
);
setOpen(false);
setBody("");
@@ -68,20 +70,20 @@ export function SubmitReviewPopover(props: {
}[] = [
{
value: "comment",
- label: "Comment",
- description: "Submit feedback without explicit approval.",
+ label: t`Comment`,
+ description: t`Submit feedback without explicit approval.`,
icon: MessageSquare,
},
{
value: "approve",
- label: "Approve",
- description: "Submit feedback and approve merging these changes.",
+ label: t`Approve`,
+ description: t`Submit feedback and approve merging these changes.`,
icon: Check,
},
{
value: "request-changes",
- label: "Request changes",
- description: "Submit feedback that must be addressed before merging.",
+ label: t`Request changes`,
+ description: t`Submit feedback that must be addressed before merging.`,
icon: X,
},
];
@@ -95,22 +97,24 @@ export function SubmitReviewPopover(props: {
onPress={() => setOpen(true)}
>
- Submit review
+ Submit review
- Finish your review
+
+ Finish your review
+
diff --git a/src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx b/src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
index 650b1d51..0e086a6a 100644
--- a/src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/AccountFilter.tsx
@@ -1,4 +1,5 @@
import { ListFilter } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import type { ProfileAccountRef } from "@/shared/contracts";
import { ProviderIcon } from "@/renderer/components/providers/ProviderIcon";
import { DevicePicker, type DeviceOption } from "./DevicePicker";
@@ -15,9 +16,14 @@ export function AccountFilter(props: {
options: ProfileAccountRef[];
onChange: (account: string | undefined) => void;
}) {
+ const { t } = useLingui();
const { value, options, onChange } = props;
const pickerOptions: DeviceOption[] = [
- { id: ALL_ACCOUNTS, label: "All accounts", icon: },
+ {
+ id: ALL_ACCOUNTS,
+ label: t`All accounts`,
+ icon: ,
+ },
...options.map((o) => ({
id: o.key,
label: o.label,
diff --git a/src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx b/src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
index b01505d3..55473c2e 100644
--- a/src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ActivityHeatmap.tsx
@@ -1,12 +1,13 @@
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
import type {
ProfileHeatmap,
ProfileHeatmapCell,
ProfileHeatmapIntensity,
} from "@/shared/contracts";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
import { formatCompact, formatDayLabel } from "../format";
-const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
-
/** Monochrome ramp built from the theme foreground (white in dark, black in light). */
function colorFor(intensity: ProfileHeatmapIntensity): string {
switch (intensity) {
@@ -32,13 +33,22 @@ function monthOf(day: string): number {
return Number.parseInt(day.split("-")[1] ?? "1", 10) - 1;
}
-function tooltipFor(cell: ProfileHeatmapCell, metric: ProfileHeatmap["metric"]): string {
+function tooltipFor(
+ cell: ProfileHeatmapCell,
+ metric: ProfileHeatmap["metric"],
+ t: TranslateFn,
+): string {
const when = formatDayLabel(cell.day);
- if (metric === "tokens") return `${formatCompact(cell.count)} tokens - ${when}`;
- return `${cell.count} ${cell.count === 1 ? "prompt" : "prompts"} - ${when}`;
+ if (metric === "tokens") return t(msg`${formatCompact(cell.count)} tokens - ${when}`);
+ return cell.count === 1
+ ? t(msg`${cell.count} prompt - ${when}`)
+ : t(msg`${cell.count} prompts - ${when}`);
}
-function buildColumns(cells: readonly ProfileHeatmapCell[]): {
+function buildColumns(
+ cells: readonly ProfileHeatmapCell[],
+ monthNames: readonly string[],
+): {
columns: Array>;
monthLabels: Array;
} {
@@ -63,7 +73,7 @@ function buildColumns(cells: readonly ProfileHeatmapCell[]): {
}
const month = monthOf(first.day);
if (month !== prevMonth) {
- monthLabels.push(MONTHS[month]!);
+ monthLabels.push(monthNames[month]!);
prevMonth = month;
} else {
monthLabels.push(null);
@@ -73,8 +83,16 @@ function buildColumns(cells: readonly ProfileHeatmapCell[]): {
}
export function ActivityHeatmap(props: { heatmap: ProfileHeatmap }) {
+ const { t, i18n } = useLingui();
const { heatmap } = props;
- const { columns, monthLabels } = buildColumns(heatmap.cells);
+ const monthFormatter = new Intl.DateTimeFormat(i18n.locale, {
+ month: "short",
+ timeZone: "UTC",
+ });
+ const monthNames = Array.from({ length: 12 }, (_, month) =>
+ monthFormatter.format(new Date(Date.UTC(2026, month, 1))),
+ );
+ const { columns, monthLabels } = buildColumns(heatmap.cells, monthNames);
return (
@@ -94,7 +112,7 @@ export function ActivityHeatmap(props: { heatmap: ProfileHeatmap }) {
key={j}
className="aspect-square w-full rounded-[2px]"
style={{ backgroundColor: colorFor(cell.intensity) }}
- title={tooltipFor(cell, heatmap.metric)}
+ title={tooltipFor(cell, heatmap.metric, t)}
/>
) : (
@@ -104,7 +122,7 @@ export function ActivityHeatmap(props: { heatmap: ProfileHeatmap }) {
))}
- Less
+ {t`Less`}
{([0, 1, 2, 3, 4] as ProfileHeatmapIntensity[]).map((level) => (
))}
- More
+ {t`More`}
);
diff --git a/src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx b/src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
index a364eeef..5a7bb645 100644
--- a/src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ActivityInsights.tsx
@@ -1,3 +1,4 @@
+import { useLingui } from "@lingui/react/macro";
import type { ProfileCoreStats } from "@/shared/contracts";
function Row(props: { label: string; value: string }) {
@@ -10,6 +11,7 @@ function Row(props: { label: string; value: string }) {
}
export function ActivityInsights(props: { core: ProfileCoreStats }) {
+ const { t } = useLingui();
const { insights, totals } = props.core;
const reasoning = insights.topReasoning
@@ -22,18 +24,18 @@ export function ActivityInsights(props: { core: ProfileCoreStats }) {
return (
- Activity insights
+ {t`Activity insights`}
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
);
diff --git a/src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx b/src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
index 512553f6..738c9940 100644
--- a/src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ActivitySection.tsx
@@ -1,3 +1,4 @@
+import { useLingui } from "@lingui/react/macro";
import type { ProfileHeatmap } from "@/shared/contracts";
import { LightballTabs, type LightballTab } from "@/renderer/components/common";
import { ActivityHeatmap } from "./ActivityHeatmap";
@@ -11,24 +12,25 @@ export function ActivitySection(props: {
metric: ActivityMetric;
onMetricChange: (metric: ActivityMetric) => void;
}) {
+ const { t } = useLingui();
const { promptHeatmap, tokenHeatmap, tokensAvailable, metric, onMetricChange } = props;
const showTokens = metric === "tokens" && tokensAvailable && tokenHeatmap;
const heatmap = showTokens ? tokenHeatmap : promptHeatmap;
const tabs: ReadonlyArray> = [
- { id: "prompts", label: "Prompts" },
- { id: "tokens", label: "Tokens", disabled: !tokensAvailable },
+ { id: "prompts", label: t`Prompts` },
+ { id: "tokens", label: t`Tokens`, disabled: !tokensAvailable },
];
return (
- Activity
+ {t`Activity`}
= {
@@ -13,10 +14,12 @@ export function AiActions(props: { actions: ProfileAiAction[] }) {
return (
- AI git actions
+
+ AI git actions
+
{actions.length === 0 ? (
- No AI commits, PRs, or conflict resolutions tracked yet.
+ No AI commits, PRs, or conflict resolutions tracked yet.
) : (
diff --git a/src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx b/src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
index d2f7adeb..5b40dd43 100644
--- a/src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/BreakdownBars.tsx
@@ -1,4 +1,5 @@
import type { ReactNode } from "react";
+import { useLingui } from "@lingui/react/macro";
import type { ProfileBreakdownEntry } from "@/shared/contracts";
function SkeletonRow() {
@@ -26,6 +27,7 @@ export function BreakdownBars(props: {
/** Formats the raw count shown next to the percent (default `toLocaleString`). */
formatValue?: (count: number) => string;
}) {
+ const { t } = useLingui();
const {
title,
caption,
@@ -52,7 +54,7 @@ export function BreakdownBars(props: {
))}
) : rows.length === 0 ? (
- {emptyText ?? "No data yet."}
+ {emptyText ?? t`No data yet.`}
) : (
{rows.map((entry) => (
diff --git a/src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx b/src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
index 2fe4dbc1..6d8a2203 100644
--- a/src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/DevicePicker.tsx
@@ -1,6 +1,7 @@
import { useState, type ReactNode } from "react";
import { Popover } from "@heroui/react";
import { Check, ChevronDown } from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import { Button } from "@/renderer/components/common";
export interface DeviceOption {
@@ -20,6 +21,7 @@ export function DevicePicker(props: {
options: DeviceOption[];
onChange: (id: string) => void;
}) {
+ const { t } = useLingui();
const { value, options, onChange } = props;
const [open, setOpen] = useState(false);
const selected = options.find((o) => o.id === value) ?? options[0];
@@ -29,7 +31,7 @@ export function DevicePicker(props: {
{selected?.icon}
- {selected?.label ?? "Select device"}
+ {selected?.label ?? t`Select device`}
diff --git a/src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx b/src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
index 85e94243..6250672b 100644
--- a/src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/EditProfileDialog.tsx
@@ -1,6 +1,7 @@
import { useEffect, useState } from "react";
import { Check } from "lucide-react";
import { Label, Modal } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Button, Input } from "@/renderer/components/common";
import type { ProfileIdentity } from "@/shared/contracts";
import { initialsFor } from "../format";
@@ -20,6 +21,7 @@ export function EditProfileDialog(props: {
onClose: () => void;
onSave: (identity: ProfileIdentity) => Promise;
}) {
+ const { t } = useLingui();
const { open, identity, onClose, onSave } = props;
const [name, setName] = useState(identity.name);
const [handle, setHandle] = useState(identity.handle);
@@ -64,37 +66,45 @@ export function EditProfileDialog(props: {
>
{initialsFor(name || identity.name)}
- Edit profile
+
+ Edit profile
+
- Name
+
+ Name
+
setName(e.target.value)}
- placeholder="Your name"
+ placeholder={t`Your name`}
/>
- Handle
+
+ Handle
+
setHandle(e.target.value.replace(/[^a-zA-Z0-9]/g, "").toLowerCase())
}
- placeholder="handle"
+ placeholder={t`handle`}
/>
- Avatar color
+
+ Avatar color
+
{AVATAR_PALETTE.map((color) => (
setAvatarColor(color)}
className="flex size-7 items-center justify-center rounded-full transition-transform hover:scale-105"
style={{ backgroundColor: color }}
@@ -107,10 +117,10 @@ export function EditProfileDialog(props: {
- Cancel
+ Cancel
void handleSave()}>
- Save
+ Save
diff --git a/src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx b/src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
index e4cb45d2..1d691c4a 100644
--- a/src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ModelUsage.tsx
@@ -1,3 +1,5 @@
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
import type { ProfileBreakdownEntry, ProfileTokenStats } from "@/shared/contracts";
import { formatCompact } from "../format";
import type { ActivityMetric } from "./ActivitySection";
@@ -9,6 +11,7 @@ export function ModelUsage(props: {
tokensLoading: boolean;
metric: ActivityMetric;
}) {
+ const { t } = useLingui();
const { tokens, coreModels, tokensLoading, metric } = props;
// Follow the Prompts/Tokens toggle: token-weighted when "tokens" is active and
@@ -25,14 +28,14 @@ export function ModelUsage(props: {
const footer =
byTokens && tokens!.providers.length > 0 ? (
- Tokens from {tokens!.providers.map((p) => p.label).join(", ")}
+ {t(msg`Tokens from ${tokens!.providers.map((p) => p.label).join(", ")}`)}
) : undefined;
return (
- {title}
+ {heading}
{items.length === 0 ? (
-
- {emptyText ?? "Nothing tracked yet. It'll appear here as you use it."}
-
+ {empty}
) : (
{items.map((item) => {
@@ -37,7 +38,9 @@ export function PluginUsage(props: {
{item.displayName}
- {formatRuns(item.runCount)}
+ {item.runCount === 1
+ ? t`${item.runCount.toLocaleString()} run`
+ : t`${item.runCount.toLocaleString()} runs`}
);
diff --git a/src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx b/src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
index f0b00e78..0b53e28b 100644
--- a/src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ProfileHeader.tsx
@@ -1,6 +1,9 @@
import type { ReactNode } from "react";
import { Globe, Laptop, Monitor, MonitorSmartphone } from "lucide-react";
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
import type { ProfileDevice, ProfileIdentity } from "@/shared/contracts";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
import { initialsFor } from "../format";
import type { ProfileSelection } from "../useProfileData";
import { DevicePicker } from "./DevicePicker";
@@ -13,15 +16,15 @@ function platformIcon(platform: string): ReactNode {
return ;
}
-function lastActiveLabel(device: ProfileDevice): string {
- if (device.isCurrent) return "This device";
+function lastActiveLabel(device: ProfileDevice, t: TranslateFn): string {
+ if (device.isCurrent) return t`This device`;
if (!device.lastActiveAt) return "";
const diff = Date.now() - device.lastActiveAt;
const day = 86_400_000;
- if (diff < day) return "Active today";
+ if (diff < day) return t`Active today`;
const days = Math.floor(diff / day);
- if (days < 30) return `${days}d ago`;
- return `${Math.floor(days / 30)}mo ago`;
+ if (days < 30) return t(msg`${days}d ago`);
+ return t(msg`${Math.floor(days / 30)}mo ago`);
}
export function ProfileHeader(props: {
@@ -35,8 +38,9 @@ export function ProfileHeader(props: {
/** Rendered on the same row as the device picker (Share / Edit). */
actions?: ReactNode;
}) {
+ const { t } = useLingui();
const { identity, devices, currentDeviceId, selection, onSelect, filter, actions } = props;
- const plan = identity.plan ?? "Local";
+ const plan = identity.plan ?? t`Local`;
const value =
selection.scope === "all"
@@ -46,15 +50,15 @@ export function ProfileHeader(props: {
const options = [
{
id: ALL_DEVICES,
- label: "All devices",
+ label: t`All devices`,
icon: ,
- hint: devices.length > 1 ? `${devices.length} devices` : "Syncs with Cloud",
+ hint: devices.length > 1 ? t(msg`${devices.length} devices`) : t`Syncs with Cloud`,
},
...devices.map((d) => ({
id: d.id,
label: d.label,
icon: platformIcon(d.platform),
- hint: lastActiveLabel(d),
+ hint: lastActiveLabel(d, t),
})),
];
diff --git a/src/renderer/views/ProfileOverlay/parts/ShareCard.tsx b/src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
index 6f8f5a91..62815ff7 100644
--- a/src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ShareCard.tsx
@@ -1,7 +1,10 @@
import { forwardRef } from "react";
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
import type { ProfileCoreStats, ProfileTokenStats } from "@/shared/contracts";
import { ProviderIcon } from "@/renderer/components/providers/ProviderIcon";
-import { formatCompact, formatDays, initialsFor } from "../format";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
+import { formatCompact, initialsFor } from "../format";
import { ActivityHeatmap } from "./ActivityHeatmap";
import type { ActivityMetric } from "./ActivitySection";
@@ -14,6 +17,10 @@ function Stat(props: { value: string; label: string }) {
);
}
+function formatDaysLabel(days: number, t: TranslateFn): string {
+ return days === 1 ? t(msg`${days} day`) : t(msg`${days} days`);
+}
+
/**
* A fixed-width, opaque, screenshot-ready summary card. Captured to a PNG by the
* main process (webContents.capturePage) so it can be pasted into social posts.
@@ -26,6 +33,7 @@ export const ShareCard = forwardRef<
metric: ActivityMetric;
}
>(function ShareCard({ core, tokens, metric }, ref) {
+ const { t } = useLingui();
const { identity, totals, insights, promptHeatmap } = core;
const provider = insights.topProvider;
const lifetime = tokens?.available ? formatCompact(tokens.lifetimeTokens) : "-";
@@ -66,10 +74,10 @@ export const ShareCard = forwardRef<
-
-
-
-
+
+
+
+
diff --git a/src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx b/src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
index 179f31bc..4e26fa81 100644
--- a/src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/ShareDialog.tsx
@@ -1,6 +1,7 @@
import { useRef, useState } from "react";
import { Modal } from "@heroui/react";
import { Check, Copy } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Button } from "@/renderer/components/common";
import { readBridge } from "@/renderer/bridge";
import type { ProfileCoreStats, ProfileTokenStats } from "@/shared/contracts";
@@ -14,6 +15,7 @@ export function ShareDialog(props: {
metric: ActivityMetric;
onClose: () => void;
}) {
+ const { t } = useLingui();
const { open, core, tokens, metric, onClose } = props;
const cardRef = useRef(null);
const [copied, setCopied] = useState(false);
@@ -38,7 +40,7 @@ export function ShareDialog(props: {
- Share your activity
+ Share your activity
@@ -48,7 +50,7 @@ export function ShareDialog(props: {
void copyImage()} className="gap-1.5">
{copied ? : }
- {copied ? "Copied to clipboard" : "Copy image"}
+ {copied ? t`Copied to clipboard` : t`Copy image`}
diff --git a/src/renderer/views/ProfileOverlay/parts/StatStrip.tsx b/src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
index ce7b387f..a17c78de 100644
--- a/src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
+++ b/src/renderer/views/ProfileOverlay/parts/StatStrip.tsx
@@ -1,6 +1,9 @@
import type { ReactNode } from "react";
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
import type { ProfileCoreStats, ProfileTokenStats } from "@/shared/contracts";
-import { formatCompact, formatDays, formatDayLabel, formatDuration } from "../format";
+import type { TranslateFn } from "@/renderer/i18n/i18n";
+import { formatCompact, formatDayLabel, formatDuration } from "../format";
function Skeleton() {
return ;
@@ -23,11 +26,16 @@ function Tile(props: { value: ReactNode; label: string; sub?: string }) {
);
}
+function formatDaysLabel(days: number, t: TranslateFn): string {
+ return days === 1 ? t(msg`${days} day`) : t(msg`${days} days`);
+}
+
export function StatStrip(props: {
core: ProfileCoreStats;
tokens: ProfileTokenStats | null;
tokensLoading: boolean;
}) {
+ const { t } = useLingui();
const { core, tokens, tokensLoading } = props;
const totals = core.totals;
const pending = tokensLoading && !tokens;
@@ -49,15 +57,15 @@ export function StatStrip(props: {
return (
-
+
-
-
-
+
+
+
);
}
diff --git a/src/renderer/views/ProfileOverlay/useProfileData.ts b/src/renderer/views/ProfileOverlay/useProfileData.ts
index 289fe28a..037d335f 100644
--- a/src/renderer/views/ProfileOverlay/useProfileData.ts
+++ b/src/renderer/views/ProfileOverlay/useProfileData.ts
@@ -1,4 +1,5 @@
import { useEffect, useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import type {
ProfileCoreStats,
ProfileDevice,
@@ -37,6 +38,7 @@ export interface ProfileData {
* Cloud will populate the rest.
*/
export function useProfileData(): ProfileData {
+ const { t } = useLingui();
const [devices, setDevices] = useState([]);
const [currentDeviceId, setCurrentDeviceId] = useState(null);
const [selection, setSelection] = useState({ scope: "device" });
@@ -90,7 +92,7 @@ export function useProfileData(): ProfileData {
if (active) setCore(result);
})
.catch((err: unknown) => {
- if (active) setError(err instanceof Error ? err.message : "Failed to load profile stats.");
+ if (active) setError(err instanceof Error ? err.message : t`Failed to load profile stats.`);
})
.finally(() => {
if (active) setCoreLoading(false);
@@ -112,7 +114,7 @@ export function useProfileData(): ProfileData {
return () => {
active = false;
};
- }, [scope, deviceId, provider]);
+ }, [scope, deviceId, provider, t]);
async function saveIdentity(identity: ProfileIdentity): Promise {
const response = await readBridge().setProfileIdentity(identity);
diff --git a/src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx b/src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
index 7544f41c..75648326 100644
--- a/src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
+++ b/src/renderer/views/ProjectSettingsOverlay/ProjectSettingsOverlay.tsx
@@ -1,4 +1,5 @@
import { useState } from "react";
+import { useLingui } from "@lingui/react/macro";
import { useAppStore } from "@/renderer/state/appStore";
import { PageLayout } from "@/renderer/components/layout/PageLayout";
import { SettingsSidebar } from "./parts/SettingsSidebar";
@@ -12,14 +13,15 @@ export { resolveActionIcon } from "@/renderer/utils/actionIcons";
export function ProjectSettingsOverlay(props: { projectId: string; onClose: () => void }) {
const { projectId, onClose } = props;
+ const { t } = useLingui();
const projectName = useAppStore(
- (s) => s.projects.find((p) => p.id === projectId)?.name ?? "Project",
+ (s) => s.projects.find((p) => p.id === projectId)?.name ?? t`Project`,
);
const [activeSection, setActiveSection] = useState("general");
return (
void }) {
+ const { t } = useLingui();
const { value, onChange } = props;
const selected = ACTION_ICONS.find((i) => i.name === value) ?? ACTION_ICONS[0]!;
@@ -11,7 +13,7 @@ export function ActionIconPicker(props: { value: string; onChange: (name: string
diff --git a/src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx b/src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
index 91ad67b9..184e24dc 100644
--- a/src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
+++ b/src/renderer/views/ProjectSettingsOverlay/parts/ActionsSection.tsx
@@ -1,4 +1,5 @@
import { useState } from "react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Plus, Trash2 } from "lucide-react";
import type { ProjectAction } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
@@ -7,6 +8,7 @@ import { Button, Input, TextArea } from "@/renderer/components/common";
import { ActionIconPicker } from "./ActionIconPicker";
export function ActionsSection(props: { projectId: string }) {
+ const { t } = useLingui();
const project = useProject(props.projectId);
const updateProjectScripts = useAppStore((s) => s.updateProjectScripts);
@@ -46,9 +48,11 @@ export function ActionsSection(props: { projectId: string }) {
return (
- Actions
+
+ Actions
+
- Custom commands available from the project context menu (right-click).
+ Custom commands available from the project context menu (right-click).
@@ -68,7 +72,7 @@ export function ActionsSection(props: { projectId: string }) {
}}
/>
{
@@ -81,7 +85,7 @@ export function ActionsSection(props: { projectId: string }) {
removeAction(action.id)}
>
@@ -89,7 +93,7 @@ export function ActionsSection(props: { projectId: string }) {
diff --git a/src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx b/src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
index b2a35de1..04e0fc34 100644
--- a/src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
+++ b/src/renderer/views/ProjectSettingsOverlay/parts/GeneralSection.tsx
@@ -1,9 +1,11 @@
import { useState } from "react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { useAppStore } from "@/renderer/state/appStore";
import { useProject } from "@/renderer/state/useThread";
import { Input } from "@/renderer/components/common";
export function GeneralSection(props: { projectId: string }) {
+ const { t } = useLingui();
const project = useProject(props.projectId);
const renameProject = useAppStore((s) => s.renameProject);
const [name, setName] = useState(project?.name ?? "");
@@ -13,16 +15,22 @@ export function GeneralSection(props: { projectId: string }) {
return (
- General
+
+ General
+
- Project name
- Display name in the sidebar.
+
+ Project name
+
+
+ Display name in the sidebar.
+
setName(e.target.value)}
diff --git a/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.test.tsx b/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.test.tsx
index d391aa29..260af69c 100644
--- a/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.test.tsx
+++ b/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.test.tsx
@@ -1,7 +1,8 @@
-import { fireEvent, render, screen } from "@testing-library/react";
+import { fireEvent, screen } from "@testing-library/react";
import { beforeEach, describe, expect, it } from "vitest";
import type { Project } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
import { ScriptsSection } from "./ScriptsSection";
function seedProject(overrides: Partial = {}) {
diff --git a/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx b/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
index 091634e5..4e26abc6 100644
--- a/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
+++ b/src/renderer/views/ProjectSettingsOverlay/parts/ScriptsSection.tsx
@@ -1,4 +1,5 @@
import { useState } from "react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { ProjectScripts } from "@/shared/contracts";
import { useAppStore } from "@/renderer/state/appStore";
import { useProject } from "@/renderer/state/useThread";
@@ -6,6 +7,7 @@ import { TextArea } from "@/renderer/components/common";
import { parseCopyPatterns } from "@/shared/worktree";
export function ScriptsSection(props: { projectId: string }) {
+ const { t } = useLingui();
const project = useProject(props.projectId);
const updateProjectScripts = useAppStore((s) => s.updateProjectScripts);
@@ -23,19 +25,25 @@ export function ScriptsSection(props: { projectId: string }) {
return (
- Worktrees
+
+ Worktrees
+
- Setup script
+
+ Setup script
+
- Runs in a terminal after a new worktree is created (e.g., pnpm install
- ).
+
+ Runs in a terminal after a new worktree is created (e.g.,{" "}
+ pnpm install).
+
@@ -219,13 +227,18 @@ function PresentationModeToggle(props: {
if (next) props.onChange(next);
}}
>
- Chat
- CLI
+
+ Chat
+
+
+ CLI
+
);
}
export function AISettings() {
+ const { t } = useLingui();
const [envKind, setEnvKind] = useState("windows");
const agentStatuses = useAgentStatusesStore((s) => s.agentStatuses);
@@ -282,12 +295,12 @@ export function AISettings() {
return (
-
+
-
+
@@ -310,9 +323,9 @@ export function AISettings() {
}
>
diff --git a/src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx b/src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
index c3697443..cb44108e 100644
--- a/src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/AboutSettings.tsx
@@ -1,5 +1,6 @@
import { Button } from "@heroui/react";
import { Download, ExternalLink, RefreshCw } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { readBridge } from "@/renderer/bridge";
import { PixelLoader } from "@/renderer/components/common";
import { useUpdateStore } from "@/renderer/state/updateStore";
@@ -26,6 +27,7 @@ function AboutLink(props: { href: string; children: React.ReactNode }) {
}
function UpdateButton() {
+ const { t } = useLingui();
const phase = useUpdateStore((s) => s.phase);
const version = useUpdateStore((s) => s.version);
const downloadPercent = useUpdateStore((s) => s.downloadPercent);
@@ -37,7 +39,7 @@ function UpdateButton() {
return (
- Checking…
+ Checking…
);
}
@@ -50,13 +52,17 @@ function UpdateButton() {
: null;
const speedLine =
bytesPerSecond != null && bytesPerSecond > 0 ? `${formatBytes(bytesPerSecond)}/s` : null;
+ const percent = Math.round(downloadPercent);
+ const speedSuffix = speedLine ? ` · ${speedLine}` : "";
return (
- Downloading{v} — {Math.round(downloadPercent)}%{speedLine ? ` · ${speedLine}` : ""}
+
+ Downloading{v} — {percent}%{speedSuffix}
+
{byteLine ? {byteLine}
: null}
@@ -71,7 +77,7 @@ function UpdateButton() {
}
if (phase === "downloaded") {
- const label = version ? `Install v${version}` : "Install update";
+ const label = version ? t`Install v${version}` : t`Install update`;
return (
void readBridge().installUpdate()}>
@@ -82,24 +88,26 @@ function UpdateButton() {
return (
void readBridge().checkForUpdate()}>
- Check for updates
+ Check for updates
);
}
export function AboutSettings() {
+ const { t } = useLingui();
const bridge = readBridge();
const productName = productNameFor(bridge.channel);
const appIconUrl = bridge.channel === "nightly" ? appIconNightlyUrl : appIconStableUrl;
+ const currentYear = new Date().getFullYear();
return (
-
+
{productName}
- AI agent orchestrator — manage coding agents via Terminal and Native ACP.
+ AI agent orchestrator — manage coding agents via Terminal and Native ACP.
@@ -107,7 +115,9 @@ export function AboutSettings() {
- Version
+
+ Version
+
{bridge.appVersion}
@@ -116,35 +126,51 @@ export function AboutSettings() {
- Channel
+
+ Channel
+
{bridge.channel}
- Electron
+
+ Electron
+
{bridge.electronVersion}
- License
+
+ License
+
Apache-2.0
- Website
+
+ Website
+
- GitHub Repository
+
+ GitHub Repository
+
- Changelog
+
+ Changelog
+
- Report an Issue
+
+ Report an Issue
+
- License
+
+ License
+
- © {new Date().getFullYear()} Serhii Vecherenko. All rights reserved.
+ © {currentYear} Serhii Vecherenko. All rights reserved.
);
diff --git a/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.test.tsx b/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.test.tsx
index e9dbfc8e..69677c7c 100644
--- a/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.test.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.test.tsx
@@ -1,4 +1,4 @@
-import { fireEvent, render, screen, waitFor, within } from "@testing-library/react";
+import { fireEvent, screen, waitFor, within } from "@testing-library/react";
import { beforeEach, describe, expect, it, vi } from "vitest";
import type {
AcpRegistryListResult,
@@ -7,6 +7,7 @@ import type {
InstalledAcpRegistryAgent,
Project,
} from "@/shared/contracts";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
const statusesState = {
agentStatuses: [] as AgentStatus[],
diff --git a/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx b/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
index 34fb74eb..9d32ed3f 100644
--- a/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/AcpRegistrySettings.tsx
@@ -1,5 +1,6 @@
import { useEffect, useRef, useState } from "react";
import { Button, Input, Tooltip, Card, Dropdown, Label, toast } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import {
AlertTriangle,
ArrowUpCircle,
@@ -20,7 +21,9 @@ import type {
Project,
RefreshAgentScope,
} from "@/shared/contracts";
+import { msg } from "@lingui/core/macro";
import { isWindows, readBridge } from "@/renderer/bridge";
+import { i18n } from "@/renderer/i18n/i18n";
import { runAgentInstallCommand, runAgentLoginCommand } from "@/renderer/actions/agentLoginActions";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
import { useAppStore } from "@/renderer/state/appStore";
@@ -58,7 +61,10 @@ function NativeAgentVersionLabel(props: {
if (props.latestNpmVersion) {
return (
- v{props.latestNpmVersion} available
+ v{props.latestNpmVersion}{" "}
+
+ available
+
);
}
@@ -82,8 +88,8 @@ function registrySearchText(agent: AcpRegistryAgent): string {
function distributionLabel(agent: AcpRegistryAgent): string {
if (agent.distribution.npx) return `npx ${agent.distribution.npx.package}`;
if (agent.distribution.uvx) return `uvx ${agent.distribution.uvx.package}`;
- if (agent.distribution.binary) return "Binary";
- return "Custom";
+ if (agent.distribution.binary) return i18n._(msg`Binary`);
+ return i18n._(msg`Custom`);
}
interface InstallTarget {
@@ -117,6 +123,7 @@ function AgentIcon(props: {
}
export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string) => void }) {
+ const { t } = useLingui();
const [agents, setAgents] = useState([]);
const [query, setQuery] = useState("");
const [isLoading, setIsLoading] = useState(true);
@@ -242,7 +249,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
}
const visibleNativeAgents = NATIVE_AGENT_REGISTRY_ENTRIES.filter((agent) => {
if (!normalizedQuery) return true;
- return [agent.id, agent.label, agent.description]
+ return [agent.id, agent.label, t(agent.description)]
.join(" ")
.toLowerCase()
.includes(normalizedQuery);
@@ -284,9 +291,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
REGISTRY_AGENT_FAMILY_KIND[agentId],
);
if (status?.authState === "missing") {
- toast.warning(`${agent.name} needs authentication.`, {
+ toast.warning(t`${agent.name} needs authentication.`, {
actionProps: {
- children: "Open settings",
+ children: t`Open settings`,
onPress: () => props.onOpenAgentSettings?.(adapterKind),
},
});
@@ -323,7 +330,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
const adapterKind = registryAdapterKind(agentId);
await refreshStatuses({ reset: false, scope: { agentKinds: [adapterKind] } });
syncInstalledAgents(result.installed);
- toast.success(`${agent.name} updated to v${agent.version}.`);
+ toast.success(t`${agent.name} updated to v${agent.version}.`);
})
.catch((err: unknown) => {
setError(err instanceof Error ? err.message : String(err));
@@ -426,10 +433,10 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
function detectionScopeLabel(status: AgentStatus): string {
if (status.envKind === "wsl") {
- return status.envDistro ? `WSL (${status.envDistro})` : "WSL";
+ return status.envDistro ? t`WSL (${status.envDistro})` : t`WSL`;
}
- if (status.envKind === "windows") return "Windows";
- return "local";
+ if (status.envKind === "windows") return t`Windows`;
+ return t`local`;
}
const renderNativeAgentCard = (agent: NativeAgentRegistryEntry) => {
@@ -457,7 +464,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
if (supportsNativeWindows && !nativeStatus && firstWindowsProject) {
installTargets.push({
id: "windows",
- label: "Install on Windows",
+ label: t`Install on Windows`,
project: firstWindowsProject,
});
}
@@ -465,12 +472,12 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
if (installedWslDistros.has(distro)) continue;
installTargets.push({
id: `wsl:${distro}`,
- label: `Install in WSL: ${distro}`,
+ label: t`Install in WSL: ${distro}`,
project,
});
}
} else if (!nativeStatus && (supportsNativeWindows || !isWindowsPlatform)) {
- installTargets.push({ id: "default", label: "Install" });
+ installTargets.push({ id: "default", label: t`Install` });
}
// Native Windows without WSL available, for an agent that has no Windows
// installer (e.g. Grok Build): nothing to install here yet.
@@ -518,7 +525,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{({ isPending }) => (
<>
{isPending ? : }
- {isPending ? "Installing" : (target?.label ?? "Install")}
+ {isPending ? t`Installing` : (target?.label ?? t`Install`)}
>
)}
@@ -531,14 +538,14 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{({ isPending }) => (
<>
{isPending ? : }
- {isPending ? "Installing" : "Install"}
+ {isPending ? t`Installing` : t`Install`}
{isPending ? null : }
>
)}
runInstallTarget(targetsById.get(String(key)))}
>
{installTargets.map((target) => (
@@ -571,10 +578,10 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{agent.label}
- {renderTag("Native")}
+ {renderTag(t`Native`)}
- {agent.description}
+ {t(agent.description)}
@@ -584,7 +591,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{nativeStatus ? (
- Detected (local)
+
+ Detected (local)
+
) : null}
{installedWslStatuses.map((status) => (
@@ -593,10 +602,12 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
className="inline-flex h-8 items-center gap-1 rounded-md px-2 text-xs text-muted"
>
- Detected{" "}
-
- {status.envDistro ? `WSL (${status.envDistro})` : "WSL"}
-
+
+ Detected{" "}
+
+ {status.envDistro ? `WSL (${status.envDistro})` : "WSL"}
+
+
))}
@@ -604,14 +615,16 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{renderInstallControl()}
{showWindowsUnsupportedNotice ? (
- Windows is not supported yet. Install inside WSL or on macOS/Linux.
+
+ Windows is not supported yet. Install inside WSL or on macOS/Linux.
+
) : null}
{isInstalled && missingAuthStatus ? (
- Sign in required
+ Sign in required
{loginCommand ? (
(
<>
{isPending ? : }
- {isPending ? "Signing in" : "Login"}
+ {isPending ? t`Signing in` : t`Login`}
>
)}
@@ -643,7 +656,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
- ID: {agent.id}
+
+ ID: {agent.id}
+
void readBridge().openExternal(agent.docsUrl)}
>
- Docs
+ Docs
@@ -708,8 +723,8 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
v{installedRecord?.version ?? agent.version}
- {renderTag("ACP")}
- {APP_SUPPORTED_ACP_AGENT_IDS.has(agent.id) ? renderTag("Native support") : null}
+ {renderTag(t`ACP`)}
+ {APP_SUPPORTED_ACP_AGENT_IDS.has(agent.id) ? renderTag(t`Native support`) : null}
{agent.description}
@@ -733,7 +748,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
) : (
)}
- {isPending ? "Updating" : `Update to v${agent.version}`}
+ {isPending ? t`Updating` : t`Update to v${agent.version}`}
>
)}
@@ -748,7 +763,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{({ isPending }) => (
<>
{isPending ? : }
- {isPending ? "Deleting" : "Delete"}
+ {isPending ? t`Deleting` : t`Delete`}
>
)}
@@ -761,8 +776,10 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
className="inline-flex h-8 items-center gap-1 rounded-md px-2 text-xs text-muted"
>
- Detected{" "}
- ({detectionScopeLabel(status)})
+
+ Detected{" "}
+ ({detectionScopeLabel(status)})
+
))}
@@ -776,7 +793,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{({ isPending }) => (
<>
{isPending ? : }
- {isPending ? "Installing" : "Install"}
+ {isPending ? t`Installing` : t`Install`}
>
)}
@@ -785,7 +802,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
- Sign in required
+ Sign in required
{agentAuthMethod ? (
@@ -805,10 +822,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
}
>
- Login
{agentAuthEntries.length > 1
- ? ` ${detectionScopeLabel(entry.status)}`
- : ""}
+ ? t`Login ${detectionScopeLabel(entry.status)}`
+ : t`Login`}
))}
@@ -831,7 +847,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
{({ isPending }) => (
<>
{isPending ? : }
- {isPending ? "Signing in" : "Login"}
+ {isPending ? t`Signing in` : t`Login`}
>
)}
@@ -842,7 +858,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
- ID: {agent.id}
+
+ ID: {agent.id}
+
{distributionLabel(agent)}
{agent.repository ? (
void readBridge().openExternal(agent.repository!)}
>
- Repository
+ Repository
) : null}
{agent.website ? (
@@ -861,7 +879,7 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
onClick={() => void readBridge().openExternal(agent.website!)}
>
- Website
+ Website
) : null}
@@ -873,7 +891,11 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
const renderAgentList = () => {
if (isLoading) {
- return Loading registry...;
+ return (
+
+ Loading registry...
+
+ );
}
if (
@@ -881,28 +903,38 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
installedAgents.length === 0 &&
availableAgents.length === 0
) {
- return No matching agents.;
+ return (
+
+ No matching agents.
+
+ );
}
return (
{visibleNativeAgents.length > 0 && (
- Native Providers
+
+ Native Providers
+
{visibleNativeAgents.map(renderNativeAgentCard)}
)}
{installedAgents.length > 0 && (
- ACP Agents
+
+ ACP Agents
+
{installedAgents.map(renderAgentCard)}
)}
{availableAgents.length > 0 && (
- Available ACP Agents
+
+ Available ACP Agents
+
{availableAgents.map(renderAgentCard)}
)}
@@ -916,9 +948,13 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
- Agent Registry
+
+ Agent Registry
+
- Install native providers first; use ACP for additional protocol agents.
+
+ Install native providers first; use ACP for additional protocol agents.
+
@@ -949,7 +985,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
}
- Refresh registry
+
+ Refresh registry
+
@@ -957,9 +995,9 @@ export function AcpRegistrySettings(props: { onOpenAgentSettings?: (kind: string
setQuery(event.target.value)}
/>
diff --git a/src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx b/src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
index 7c560a44..e717e592 100644
--- a/src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/AgentsGeneralSettings.tsx
@@ -1,10 +1,12 @@
+import { useLingui } from "@lingui/react/macro";
import { ModelOrderSection } from "./ModelOrderSection";
import { ModelVisibilitySection } from "./ModelVisibilitySection";
import { SettingsPage } from "./SettingsForm";
export function AgentsGeneralSettings() {
+ const { t } = useLingui();
return (
-
+
diff --git a/src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx b/src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
index d5ea5e1e..acd1e271 100644
--- a/src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/AppearanceSettings.tsx
@@ -1,5 +1,6 @@
import { startTransition, useEffect, useState, type CSSProperties } from "react";
import { ChevronDown, RotateCcw } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Slider, SliderFill, SliderOutput, SliderThumb, SliderTrack, Switch } from "@heroui/react";
import type { ThemeMode } from "@/shared/contracts";
import { isMac } from "@/renderer/bridge";
@@ -11,9 +12,10 @@ import { useNativeMaterialActive } from "@/renderer/hooks/useGlassState";
import { Select } from "@/renderer/components/common";
import { SettingRow, SettingsPage } from "./SettingsForm";
import { ThemeGallery, ThemeSwatch } from "./ThemeGallery";
-import { fontSizeOptions, themeOptions } from "./settingsOptions";
+import { fontSizeOptions, themeOptions, useLocalizedOptions } from "./settingsOptions";
export function AppearanceSettings() {
+ const { t } = useLingui();
const themeMode = useSharedSettings((state) => state.themeMode);
const setThemeMode = useSharedSettings((state) => state.setThemeMode);
const themePreset = useSharedSettings((state) => state.themePreset);
@@ -64,13 +66,18 @@ export function AppearanceSettings() {
});
};
+ const themeOpts = useLocalizedOptions(themeOptions);
+
return (
-
-
+
+ Match your system, or force light or dark.}
+ >
diff --git a/src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx b/src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
index 49bff59a..d60c9ed6 100644
--- a/src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/AudioSettings.tsx
@@ -1,10 +1,14 @@
import { startTransition, useEffect, useRef, useState } from "react";
import { Switch, toast } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
+import type { I18n } from "@lingui/core";
import { Button, Select } from "@/renderer/components/common";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { friendlyError } from "@/shared/messages";
import type { AudioTranscriptionModel } from "@/shared/settings";
import { SettingsPage } from "./SettingsForm";
+import { useLocalizedOptions } from "./settingsOptions";
const SYSTEM_MICROPHONE_ID = "system-default";
@@ -29,8 +33,8 @@ const languageOptions = [
] as const;
const modelOptions = [
- { id: "tiny", label: "Fastest (Whisper tiny)" },
- { id: "base", label: "Better (Whisper base)" },
+ { id: "tiny", label: msg`Fastest (Whisper tiny)` },
+ { id: "base", label: msg`Better (Whisper base)` },
] as const;
interface MicrophoneTest {
@@ -51,20 +55,31 @@ function createAudioContext(): AudioContext {
return new AudioContextCtor();
}
-function buildMicrophoneOptions(devices: MediaDeviceInfo[]) {
+function buildMicrophoneOptions(devices: MediaDeviceInfo[], t: I18n["_"]) {
const microphones = devices.filter((device) => device.kind === "audioinput");
return [
- { id: SYSTEM_MICROPHONE_ID, label: "System default" },
- ...microphones.map((device, index) => ({
- id: device.deviceId,
- label: device.label || `Microphone ${index + 1}`,
- })),
+ { id: SYSTEM_MICROPHONE_ID, label: t(msg`System default`) },
+ ...microphones.map((device, index) => {
+ const fallbackNumber = index + 1;
+ return {
+ id: device.deviceId,
+ label:
+ device.label ||
+ t(
+ msg({
+ message: `Microphone ${fallbackNumber}`,
+ comment: "Fallback microphone device name with index",
+ }),
+ ),
+ };
+ }),
];
}
export function AudioSettings() {
+ const { t, i18n } = useLingui();
const [microphoneOptions, setMicrophoneOptions] = useState([
- { id: SYSTEM_MICROPHONE_ID, label: "System default" },
+ { id: SYSTEM_MICROPHONE_ID, label: t`System default` },
]);
const microphoneDeviceId = useSharedSettings((s) => s.audio.microphoneDeviceId);
const showVoiceInputButton = useSharedSettings((s) => s.audio.showVoiceInputButton);
@@ -73,6 +88,8 @@ export function AudioSettings() {
const useWebGpu = useSharedSettings((s) => s.audio.useWebGpu);
const setAudioSetting = useSharedSettings((s) => s.setAudioSetting);
+ const modelOpts = useLocalizedOptions(modelOptions);
+
useEffect(() => {
const mediaDevices = navigator.mediaDevices;
if (!mediaDevices?.enumerateDevices) return;
@@ -81,7 +98,7 @@ export function AudioSettings() {
const refresh = () => {
void mediaDevices.enumerateDevices().then((devices) => {
if (!disposed) {
- setMicrophoneOptions(buildMicrophoneOptions(devices));
+ setMicrophoneOptions(buildMicrophoneOptions(devices, i18n._.bind(i18n)));
}
});
};
@@ -92,13 +109,13 @@ export function AudioSettings() {
disposed = true;
mediaDevices.removeEventListener("devicechange", refresh);
};
- }, []);
+ }, [i18n]);
return (
-
+
Show the microphone button in the composer.}
>
-
+ Device used by the composer voice input button.}
+ >
Check the live input level from the selected device.}
>
+ Language the speech model should expect when transcribing composer dictation.
+
+ }
>
Fastest uses Whisper tiny; Better uses Whisper base.}
>
{
startTransition(() => {
@@ -165,8 +189,8 @@ export function AudioSettings() {
/>
Run local transcription on the GPU when available.}
>
- {isTesting ? "Stop" : isStarting ? "Starting" : "Start"}
+ {isTesting
+ ? t({ message: "Stop", comment: "Button: stop the microphone level test" })
+ : isStarting
+ ? t({
+ message: "Starting",
+ comment: "Button label while the microphone test is starting",
+ })
+ : t({ message: "Start", comment: "Button: start the microphone level test" })}
- Input level
- {isTesting ? `${Math.round(level * 100)}%` : "Idle"}
+
+ Input level
+
+
+ {isTesting
+ ? `${Math.round(level * 100)}%`
+ : t({ message: "Idle", comment: "Microphone input level when not testing" })}
+
s.browser.allowEval);
const allowDataAccess = useSharedSettings((s) => s.browser.allowDataAccess);
const linkOpenTarget = useSharedSettings((s) => s.browser.linkOpenTarget);
const linkPresentationMode = useSharedSettings((s) => s.browser.linkPresentationMode);
const setBrowserSetting = useSharedSettings((s) => s.setBrowserSetting);
+ const linkOpenTargetOpts = useLocalizedOptions(linkOpenTargetOptions);
+ const linkPresentationModeOpts = useLocalizedOptions(linkPresentationModeOptions);
+
return (
-
+
{
startTransition(() => {
@@ -41,13 +48,13 @@ export function BrowserSettings() {
/>
{
startTransition(() => {
@@ -57,12 +64,12 @@ export function BrowserSettings() {
/>
+
Lets agents call eval to run arbitrary JavaScript inside the embedded page.
Off by default — turn on only when you trust the loaded sites and the agent.
- >
+
}
>
+
Enables cookies and storage. Cookies can contain session
tokens and storage often holds auth state — only enable when you trust both the agent
and the sites it visits.
- >
+
}
>
({
danger: vi.fn<(message: string) => void>(),
diff --git a/src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx b/src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
index 904142d0..0397b3df 100644
--- a/src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/ClaudeProfileSettings.tsx
@@ -12,6 +12,8 @@ import {
Wand2,
X,
} from "lucide-react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
import {
claudeProfileKind,
parseClaudeProfileInstanceConfig,
@@ -20,6 +22,7 @@ import {
} from "@/shared/contracts";
import { CLAUDE_EFFORT_TIERS } from "@/shared/agents/claudeEfforts";
import { readBridge } from "@/renderer/bridge";
+import { i18n } from "@/renderer/i18n/i18n";
import { Input } from "@/renderer/components/common";
import { formatEffortLabel } from "@/renderer/components/thread/threadDraftViewHelpers";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
@@ -57,7 +60,9 @@ function refreshClaudeProfile(kind?: string): void {
void readBridge()
.refreshAgentStatuses(currentWslDistros(), kind ? { agentKinds: [kind] } : undefined)
.catch((error) =>
- toast.danger(error instanceof Error ? error.message : "Unable to refresh Claude profiles."),
+ toast.danger(
+ error instanceof Error ? error.message : i18n._(msg`Unable to refresh Claude profiles.`),
+ ),
);
}, 50);
}
@@ -65,13 +70,14 @@ function refreshClaudeProfile(kind?: string): void {
// ── Effort multiselect dropdown ──────────────────────────────────────────────
function EffortMultiSelect(props: { selected: Set; onToggle: (tier: string) => void }) {
+ const { t } = useLingui();
const [isOpen, setIsOpen] = useState(false);
const selectedTiers = CLAUDE_EFFORT_TIERS.filter((tier) => props.selected.has(tier));
const summary =
selectedTiers.length === CLAUDE_EFFORT_TIERS.length
- ? "All efforts"
+ ? t`All efforts`
: selectedTiers.length === 0
- ? "None"
+ ? t`None`
: selectedTiers.map(formatEffortLabel).join(", ");
return (
@@ -80,7 +86,7 @@ function EffortMultiSelect(props: { selected: Set; onToggle: (tier: stri
{summary}
@@ -91,23 +97,26 @@ function EffortMultiSelect(props: { selected: Set; onToggle: (tier: stri
{CLAUDE_EFFORT_TIERS.map((tier) => {
const active = props.selected.has(tier);
+ const tierLabel = formatEffortLabel(tier);
return (
props.onToggle(tier)}
>
- {formatEffortLabel(tier)}
+ {tierLabel}
{active ? : null}
);
@@ -126,6 +135,7 @@ function EffortMultiSelect(props: { selected: Set; onToggle: (tier: stri
* extend the list by adding to `PROFILE_PRESETS`.
*/
function PresetMenu(props: { onApply: (preset: ProfilePreset) => void }) {
+ const { t } = useLingui();
const [isOpen, setIsOpen] = useState(false);
return (
@@ -133,17 +143,17 @@ function PresetMenu(props: { onApply: (preset: ProfilePreset) => void }) {
- Presets
+ Presets
-
+
{PROFILE_PRESETS.map((preset) => (
s.setAgentInstance);
const setHiddenModels = useSharedSettings((s) => s.setHiddenModels);
const profileKind = claudeProfileKind(props.instance.id);
@@ -299,11 +310,13 @@ function ClaudeProfileEditor(props: {
setAgentInstance({ ...updated, displayName: trimmedName, config });
setEnvRows(rowsFromEnvironment(updated.environment, nextRowId));
refreshClaudeProfile(claudeProfileKind(props.instance.id));
- toast.success(`Claude ${trimmedName || displayLabel} profile saved.`);
+ toast.success(t`Claude ${trimmedName || displayLabel} profile saved.`);
})
.catch((error) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to save Claude ${displayLabel} profile.`,
+ error instanceof Error
+ ? error.message
+ : t`Unable to save Claude ${displayLabel} profile.`,
),
)
.finally(() => setSaving(false));
@@ -313,39 +326,47 @@ function ClaudeProfileEditor(props: {
- External provider
+
+ External provider
+
- Point this profile at a non-Anthropic provider (z.ai, …) with custom env vars, model
- names, and effort levels.
+
+ Point this profile at a non-Anthropic provider (z.ai, …) with custom env vars, model
+ names, and effort levels.
+
- Save
+ Save
{/* Profile basics */}
- Name
+
+ Name
+
setName(event.target.value)}
/>
- Config directory
+
+ Config directory
+
setConfigDir(event.target.value)}
@@ -356,7 +377,9 @@ function ClaudeProfileEditor(props: {
{/* Environment variables */}
- Environment variables
+
+ Environment variables
+
- Add
+ Add
{envRows.length === 0 ? (
- Override Claude defaults — e.g. ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN.
+
+ Override Claude defaults — e.g. ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN.
+
) : null}
{envRows.map((row) => {
@@ -380,7 +405,7 @@ function ClaudeProfileEditor(props: {
return (
{
@@ -414,7 +439,7 @@ function ClaudeProfileEditor(props: {
- Models
+
+ Models
+
- Add model
+ Add model
{modelRows.length === 0 ? (
- Using the built-in Claude model list.
+
+ Using the built-in Claude model list.
+
) : null}
{modelRows.map((row) => (
updateModelRow(row.rowId, { id: event.target.value })}
/>
updateModelRow(row.rowId, { label: event.target.value })}
/>
- Effort levels
+
+ Effort levels
+
- Disable tiers an external provider collapses (e.g. keep only High and Max).
+ Disable tiers an external provider collapses (e.g. keep only High and Max).
@@ -519,6 +550,7 @@ function ClaudeProfileRow(props: {
onOpen: () => void;
onRemove: (id: string) => void;
}) {
+ const { t } = useLingui();
const label = props.instance.displayName ?? props.instance.id;
return (
@@ -531,7 +563,7 @@ function ClaudeProfileRow(props: {
{label}
{profileUsesExternalProvider(props.instance, props.config) ? (
- External
+ External
) : null}
@@ -542,7 +574,7 @@ function ClaudeProfileRow(props: {
void) | undefined;
}) {
+ const { t } = useLingui();
const agentInstances = useSharedSettings((s) => s.agentInstances ?? {});
const setAgentInstance = useSharedSettings((s) => s.setAgentInstance);
const removeAgentInstance = useSharedSettings((s) => s.removeAgentInstance);
@@ -617,7 +650,7 @@ export function ClaudeProfileSettings(props: {
setAgentInstance(instance);
refreshClaudeProfile(claudeProfileKind(id));
closeAddForm();
- toast.success(`Claude ${displayName} profile added.`);
+ toast.success(t`Claude ${displayName} profile added.`);
// Open the new profile's page so it can be pointed at an external provider.
props.onOpenProfile?.(claudeProfileKind(id));
}
@@ -626,10 +659,14 @@ export function ClaudeProfileSettings(props: {
- Profiles
+
+ Profiles
+
- Separate Claude Code accounts by config directory, or point a profile at an external
- provider (z.ai, …). Open a profile to configure its env vars, models, and effort.
+
+ Separate Claude Code accounts by config directory, or point a profile at an external
+ provider (z.ai, …). Open a profile to configure its env vars, models, and effort.
+
refreshClaudeProfile()}
>
- Refresh
+ Refresh
{profiles.length === 0 && !isAdding ? (
- No additional Claude profiles.
+
+ No additional Claude profiles.
+
) : null}
@@ -659,7 +698,7 @@ export function ClaudeProfileSettings(props: {
removeAgentInstance(id);
removeAgentStatus(kind);
refreshClaudeProfile();
- toast.success("Claude profile removed.");
+ toast.success(t`Claude profile removed.`);
}}
/>
))}
@@ -670,14 +709,14 @@ export function ClaudeProfileSettings(props: {
// Focus the name field when the form is revealed by the explicit
// "Add profile" press (the accepted exception to no-autofocus).
ref={(node: HTMLInputElement | null) => node?.focus()}
- aria-label="New Claude profile name"
+ aria-label={t`New Claude profile name`}
className="min-w-0"
- placeholder="e.g. Work"
+ placeholder={t`e.g. Work`}
value={newName}
onChange={(event) => setNewName(event.target.value)}
/>
setIsAdding(true)}
>
- Add profile
+ Add profile
) : null}
diff --git a/src/renderer/views/SettingsOverlay/parts/DevSettings.tsx b/src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
index d9ac4a7c..1c8cfd30 100644
--- a/src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/DevSettings.tsx
@@ -1,20 +1,22 @@
import { startTransition } from "react";
import { Switch } from "@heroui/react";
+import { useLingui } from "@lingui/react/macro";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { SettingRow, SettingsPage } from "./SettingsForm";
export function DevSettings() {
+ const { t } = useLingui();
const disableCliHookPlugin = useSharedSettings((state) => state.disableCliHookPlugin);
const setDisableCliHookPlugin = useSharedSettings((state) => state.setDisableCliHookPlugin);
return (
state.locale);
+ const setLocale = useSharedSettings((state) => state.setLocale);
+ const gitTextLanguage = useSharedSettings((state) => state.gitTextLanguage);
+ const setGitTextLanguage = useSharedSettings((state) => state.setGitTextLanguage);
const preventSleepWhileWorking = useSharedSettings((state) => state.preventSleepWhileWorking);
const setPreventSleepWhileWorking = useSharedSettings(
(state) => state.setPreventSleepWhileWorking,
@@ -20,16 +28,61 @@ export function GeneralSettings() {
const editorLspEnabled = useSharedSettings((state) => state.editorLspEnabled);
const setEditorLspEnabled = useSharedSettings((state) => state.setEditorLspEnabled);
+ const newThreadOptions = useLocalizedOptions(newThreadModeOptions);
+ const resolvedLocaleOptions = localeOptions.map((option) => ({
+ id: option.id,
+ label: typeof option.label === "string" ? option.label : t(option.label),
+ }));
+ const resolvedAiLanguageOptions = aiLanguageOptions.map((option) => ({
+ id: option.id,
+ label: typeof option.label === "string" ? option.label : t(option.label),
+ }));
+
return (
-
+
+ Choose the display language for Lightcode's interface.}
+ >
+ {
+ startTransition(() => {
+ setLocale(value as LocaleSetting);
+ });
+ }}
+ />
+
+
+
+ Language for AI-generated commit messages and pull request summaries. Thread titles
+ always follow the app language.
+
+ }
+ >
+ setGitTextLanguage(value as AiContentLanguage)}
+ />
+
+
Open new threads as a full page or a side-by-side panel.}
>
{
startTransition(() => {
@@ -40,8 +93,8 @@ export function GeneralSettings() {
Show a projectless Home scope for OS-level agent sessions.}
>
Keep the system awake while any thread is actively working.}
>
+ When you close the window, keep Lightcode running in the system tray. Disable to quit on
+ close.
+
+ }
>
+ Enable language server support for type checking, completions, and diagnostics. Requires
+ a language server installed.
+
+ }
>
state.gitReviewMode);
const setGitReviewMode = useSharedSettings((state) => state.setGitReviewMode);
const prCreateMode = useSharedSettings((state) => state.prCreateMode);
const setPrCreateMode = useSharedSettings((state) => state.setPrCreateMode);
+ const gitReviewOptions = useLocalizedOptions(gitReviewModeOptions);
+ const prCreateOptions = useLocalizedOptions(prCreateModeOptions);
+
return (
-
+
Open git review as a right-side panel or a full page.}
>
{
startTransition(() => {
@@ -30,13 +35,19 @@ export function GitSettings() {
/>
+ What the Create PR button does by default: open a dialog to edit the title and
+ description first, or auto-generate them and create the PR in one click. You can also
+ switch this from the button's menu.
+
+ }
>
{
startTransition(() => {
diff --git a/src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx b/src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
index f744904a..30a18a63 100644
--- a/src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/ModelOrderSection.tsx
@@ -1,6 +1,7 @@
import { DragDropProvider, type DragEndEvent } from "@dnd-kit/react";
import { isSortable, useSortable } from "@dnd-kit/react/sortable";
import { GripVertical, RotateCcw } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { AgentStatus } from "@/shared/contracts";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
@@ -32,6 +33,7 @@ function resolveDisplayedKinds(
function SortableProviderRow(props: { agent: AgentStatus; index: number }) {
const { agent, index } = props;
+ const { t } = useLingui();
const { ref, handleRef, isDragging } = useSortable({
id: `provider-order:${agent.kind}`,
index,
@@ -51,7 +53,7 @@ function SortableProviderRow(props: { agent: AgentStatus; index: number }) {
@@ -68,6 +70,7 @@ function SortableProviderRow(props: { agent: AgentStatus; index: number }) {
}
export function ModelOrderSection() {
+ const { t } = useLingui();
const agentStatuses = useAgentStatusesStore((s) => s.agentStatuses);
const wslAgentStatuses = useAgentStatusesStore((s) => s.wslAgentStatuses);
const providerOrder = useSharedSettings((s) => s.providerOrder);
@@ -101,12 +104,14 @@ export function ModelOrderSection() {
return (
- Model order
+
+ Model order
+
{isCustomized ? (
setProviderOrder([])}
- aria-label="Reset model order"
+ aria-label={t`Reset model order`}
className="flex size-5 items-center justify-center rounded text-muted/70 transition-colors hover:bg-surface hover:text-foreground"
>
@@ -114,7 +119,7 @@ export function ModelOrderSection() {
) : null}
- Drag to reorder how providers appear in the model picker.
+ Drag to reorder how providers appear in the model picker.
diff --git a/src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx b/src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
index 7bd41e7f..7336fa1e 100644
--- a/src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/ModelVisibilitySection.tsx
@@ -1,6 +1,7 @@
import { useDeferredValue, useEffect, useState } from "react";
import { Button, Popover } from "@heroui/react";
import { Check, Minus, Search } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
import { getSettingsInstalledAgents } from "@/shared/agentStatus";
@@ -140,6 +141,7 @@ function ModelVisibilityRow(props: {
}
export function ModelVisibilitySection() {
+ const { t } = useLingui();
const agentStatuses = useAgentStatusesStore((s) => s.agentStatuses);
const wslAgentStatuses = useAgentStatusesStore((s) => s.wslAgentStatuses);
const hiddenModels = useSharedSettings((s) => s.hiddenModels);
@@ -268,9 +270,11 @@ export function ModelVisibilitySection() {
return (
- Visible models
+
+ Visible models
+
- Hide models you don't use from the model picker across every provider.
+ Hide models you don't use from the model picker across every provider.
@@ -284,9 +288,9 @@ export function ModelVisibilitySection() {
setSearch(event.target.value)}
onKeyDown={(event) => event.stopPropagation()}
@@ -294,7 +298,9 @@ export function ModelVisibilitySection() {
- {visibleCount} of {totalCount} visible
+
+ {visibleCount} of {totalCount} visible
+
setAllHidden(false)}
>
- Show all
+ Show all
·
setAllHidden(true)}
>
- Hide all
+ Hide all
{items.length === 0 ? (
- No models found
+
+ No models found
+
) : (
diff --git a/src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx b/src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
index 49b663f2..d97bdd0d 100644
--- a/src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/NotificationSettings.tsx
@@ -1,16 +1,20 @@
import { startTransition } from "react";
import { Switch } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { NotificationFilter } from "@/shared/contracts";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { Select } from "@/renderer/components/common";
import { SettingRow, SettingsPage } from "./SettingsForm";
+import { useLocalizedOptions } from "./settingsOptions";
const filterOptions = [
- { id: "unfocused", label: "Only when unfocused" },
- { id: "all", label: "Always" },
+ { id: "unfocused", label: msg`Only when unfocused` },
+ { id: "all", label: msg({ message: "Always", comment: "Notification filter: always notify" }) },
] as const;
export function NotificationSettings() {
+ const { t } = useLingui();
const notificationsEnabled = useSharedSettings((s) => s.notificationsEnabled);
const setNotificationsEnabled = useSharedSettings((s) => s.setNotificationsEnabled);
const notificationSound = useSharedSettings((s) => s.notificationSound);
@@ -22,11 +26,13 @@ export function NotificationSettings() {
const notifyL2Cli = useSharedSettings((s) => s.notifyL2Cli);
const setNotifyL2Cli = useSharedSettings((s) => s.setNotifyL2Cli);
+ const filterOpts = useLocalizedOptions(filterOptions);
+
return (
-
+
Show notifications when thread status changes.}
>
Play a sound when a notification is shown.}
>
When to display in-app toasts for visible threads.}
>
{
startTransition(() => {
@@ -81,12 +87,18 @@ export function NotificationSettings() {
- Notify me about
+
+ Notify me about
+
- Done
- Thread finished or waiting for your input.
+
+ Done
+
+
+ Thread finished or waiting for your input.
+
- Needs Attention
- Approval or reply required from you.
+
+ Needs Attention
+
+
+ Approval or reply required from you.
+
- Error
- Agent encountered an error.
+
+ Error
+
+
+ Agent encountered an error.
+
+ When off, suppress notifications from terminal threads whose status comes from the OSC
+ fallback (no CLI hook plugin).
+
+ }
>
- {data.error ?? "Couldn't load your profile stats."}
+ {data.error ?? t`Couldn't load your profile stats.`}
);
}
@@ -98,11 +100,11 @@ export function ProfileSettings() {
<>
setShareOpen(true)} className="gap-1.5">
- Share
+ Share
setEditOpen(true)} className="gap-1.5">
- Edit
+ Edit
>
);
@@ -129,24 +131,28 @@ export function ProfileSettings() {
/>
-
+
+
-
{hasMultipleAccounts ? (
) : null}
-
+
diff --git a/src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx b/src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
index c6e4aad1..51e23a55 100644
--- a/src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/SearchExcludeBody.tsx
@@ -1,5 +1,6 @@
import { type ReactNode, startTransition, useState } from "react";
import { Switch } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { Lock, Trash2 } from "lucide-react";
import { Button, Input } from "@/renderer/components/common";
import { LOCKED_SEARCH_EXCLUDE } from "@/shared/searchExclude";
@@ -68,7 +69,9 @@ export function SearchExcludeBody(props: SearchExcludeBodyProps) {
- Use ignore files
+
+ Use ignore files
+
{useIgnoreFilesNote}
@@ -88,9 +91,11 @@ export function SearchExcludeBody(props: SearchExcludeBodyProps) {
- Exclude patterns
+
+ Exclude patterns
+
- Files matching these globs are hidden from the @file mention search.
+ Files matching these globs are hidden from the @file mention search.
@@ -101,45 +106,54 @@ export function SearchExcludeBody(props: SearchExcludeBodyProps) {
}
function ExcludeList(props: { rows: Row[]; onRemove: (pattern: string) => void }) {
+ const { t } = useLingui();
if (props.rows.length === 0) {
return (
- No patterns.
+ No patterns.
);
}
return (
- {props.rows.map((row) => (
-
- {row.pattern}
- {row.inherited && !row.locked && (
- inherited
- )}
- {row.locked ? (
-
-
-
- ) : (
- props.onRemove(row.pattern)}
- className="flex size-5 items-center justify-center rounded text-muted hover:bg-[var(--row-hover)] hover:text-foreground"
- >
-
-
- )}
-
- ))}
+ {props.rows.map((row) => {
+ const pattern = row.pattern;
+ return (
+
+ {pattern}
+ {row.inherited && !row.locked && (
+
+
+ inherited
+
+
+ )}
+ {row.locked ? (
+
+
+
+ ) : (
+ props.onRemove(pattern)}
+ className="flex size-5 items-center justify-center rounded text-muted hover:bg-[var(--row-hover)] hover:text-foreground"
+ >
+
+
+ )}
+
+ );
+ })}
);
}
function AddPatternInput(props: { onAdd: (pattern: string) => void }) {
+ const { t } = useLingui();
const [draft, setDraft] = useState("");
function commit() {
@@ -152,7 +166,7 @@ function AddPatternInput(props: { onAdd: (pattern: string) => void }) {
return (
void }) {
}}
/>
- Add
+ Add
);
diff --git a/src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx b/src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
index c556a2ad..c8772745 100644
--- a/src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/SearchSettings.tsx
@@ -1,9 +1,11 @@
+import { Trans, useLingui } from "@lingui/react/macro";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { DEFAULT_SEARCH_EXCLUDE } from "@/shared/searchExclude";
import { SearchExcludeBody } from "./SearchExcludeBody";
import { SettingsPage } from "./SettingsForm";
export function SearchSettings() {
+ const { t } = useLingui();
const useIgnoreFiles = useSharedSettings((s) => s.searchUseIgnoreFiles);
const setUseIgnoreFiles = useSharedSettings((s) => s.setSearchUseIgnoreFiles);
const exclude = useSharedSettings((s) => s.searchExclude);
@@ -11,15 +13,20 @@ export function SearchSettings() {
return (
+ Control which files appear in the @file mention search. Per-project overrides live in each
+ project's settings.
+
+ }
>
+
When enabled, search respects .gitignore entries.
- >
+
}
onUseIgnoreFilesChange={setUseIgnoreFiles}
baseline={DEFAULT_SEARCH_EXCLUDE}
diff --git a/src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx b/src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
index 06ac8aa0..dff3a1ce 100644
--- a/src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/SettingsSidebar.tsx
@@ -22,6 +22,7 @@ import {
TerminalSquare,
UserRound,
} from "lucide-react";
+import { useLingui } from "@lingui/react/macro";
import { isClaudeProfileKind, type AgentStatus } from "@/shared/contracts";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import {
@@ -78,6 +79,7 @@ export function SettingsSidebar(props: {
isRefreshingAgents,
onRefreshAgents,
} = props;
+ const { t } = useLingui();
const { isCollapsed, collapse, expand } = useSidebar();
const disabledAgents = useSharedSettings((s) => s.disabledAgents);
const primaryAgents = installedAgents.filter((agent) => !isClaudeProfileKind(agent.kind));
@@ -105,77 +107,80 @@ export function SettingsSidebar(props: {
}
- label="Profile"
+ label={t`Profile`}
isActive={activeSection === "profile"}
onPress={() => onSectionChange("profile")}
/>
}
- label="General"
+ label={t`General`}
isActive={activeSection === "general"}
onPress={() => onSectionChange("general")}
/>
}
- label="Audio"
+ label={t`Audio`}
isActive={activeSection === "audio"}
onPress={() => onSectionChange("audio")}
/>
}
- label="Appearance"
+ label={t`Appearance`}
isActive={activeSection === "appearance"}
onPress={() => onSectionChange("appearance")}
/>
}
- label="Terminal"
+ label={t`Terminal`}
isActive={activeSection === "terminal"}
onPress={() => onSectionChange("terminal")}
/>
}
- label="Threads"
+ label={t`Threads`}
isActive={activeSection === "threads"}
onPress={() => onSectionChange("threads")}
/>
}
- label="Git"
+ label={t`Git`}
isActive={activeSection === "git"}
onPress={() => onSectionChange("git")}
/>
}
- label="Notifications"
+ label={t`Notifications`}
isActive={activeSection === "notifications"}
onPress={() => onSectionChange("notifications")}
/>
}
- label="AI"
+ label={t({
+ message: "AI",
+ comment: "Settings section: AI / assistant configuration",
+ })}
isActive={activeSection === "ai"}
onPress={() => onSectionChange("ai")}
/>
}
- label="Search"
+ label={t`Search`}
isActive={activeSection === "search"}
onPress={() => onSectionChange("search")}
/>
}
- label="Agents"
+ label={t`Agents`}
isActive={isAgentsActive}
onPress={openAgents}
/>
@@ -185,7 +190,7 @@ export function SettingsSidebar(props: {
icon={
isRefreshingAgents ? :
}
- label="Refresh detected agents"
+ label={t`Refresh detected agents`}
isDisabled={isRefreshingAgents}
onPress={onRefreshAgents}
/>
@@ -194,7 +199,7 @@ export function SettingsSidebar(props: {
}
- label="Agents · General"
+ label={t`Agents · General`}
isActive={activeSection === "agentsGeneral"}
onPress={() => onSectionChange("agentsGeneral")}
/>
@@ -203,7 +208,7 @@ export function SettingsSidebar(props: {
}
- label="Agent Registry"
+ label={t`Agent Registry`}
isActive={activeSection === "acpRegistry"}
onPress={() => onSectionChange("acpRegistry")}
/>
@@ -261,28 +266,28 @@ export function SettingsSidebar(props: {
}
- label="Browser"
+ label={t`Browser`}
isActive={activeSection === "browser"}
onPress={() => onSectionChange("browser")}
/>
}
- label="Usage"
+ label={t`Usage`}
isActive={activeSection === "usage"}
onPress={() => onSectionChange("usage")}
/>
}
- label="Archived Threads"
+ label={t`Archived Threads`}
isActive={activeSection === "archived"}
onPress={() => onSectionChange("archived")}
/>
}
- label="About"
+ label={t`About`}
isActive={activeSection === "about"}
onPress={() => onSectionChange("about")}
/>
@@ -290,7 +295,7 @@ export function SettingsSidebar(props: {
}
- label="Dev"
+ label={t({ message: "Dev", comment: "Settings section: developer/debug tools" })}
isActive={activeSection === "dev"}
onPress={() => onSectionChange("dev")}
/>
@@ -300,13 +305,13 @@ export function SettingsSidebar(props: {
}
- label="Return to app"
+ label={t`Return to app`}
onPress={onClose}
/>
}
- label="Show sidebar"
+ label={t`Show sidebar`}
onPress={expand}
/>
@@ -320,73 +325,76 @@ export function SettingsSidebar(props: {
}
- label="Profile"
+ label={t`Profile`}
isActive={activeSection === "profile"}
onPress={() => onSectionChange("profile")}
/>
}
- label="General"
+ label={t`General`}
isActive={activeSection === "general"}
onPress={() => onSectionChange("general")}
/>
}
- label="Audio"
+ label={t`Audio`}
isActive={activeSection === "audio"}
onPress={() => onSectionChange("audio")}
/>
}
- label="Appearance"
+ label={t`Appearance`}
isActive={activeSection === "appearance"}
onPress={() => onSectionChange("appearance")}
/>
}
- label="Terminal"
+ label={t`Terminal`}
isActive={activeSection === "terminal"}
onPress={() => onSectionChange("terminal")}
/>
}
- label="Threads"
+ label={t`Threads`}
isActive={activeSection === "threads"}
onPress={() => onSectionChange("threads")}
/>
}
- label="Git"
+ label={t`Git`}
isActive={activeSection === "git"}
onPress={() => onSectionChange("git")}
/>
}
- label="Notifications"
+ label={t`Notifications`}
isActive={activeSection === "notifications"}
onPress={() => onSectionChange("notifications")}
/>
}
- label="AI"
+ label={t({
+ message: "AI",
+ comment: "Settings section: AI / assistant configuration",
+ })}
isActive={activeSection === "ai"}
onPress={() => onSectionChange("ai")}
/>
}
- label="Search"
+ label={t`Search`}
isActive={activeSection === "search"}
onPress={() => onSectionChange("search")}
/>
}
- label="Agents"
+ label={t`Agents`}
isActive={activeSection === "agents"}
onPress={openAgents}
suffix={
{
@@ -406,13 +414,13 @@ export function SettingsSidebar(props: {
}
- label="General"
+ label={t`General`}
isActive={activeSection === "agentsGeneral"}
onPress={() => onSectionChange("agentsGeneral")}
/>
}
- label="Agent Registry"
+ label={t`Agent Registry`}
isActive={activeSection === "acpRegistry"}
onPress={() => onSectionChange("acpRegistry")}
/>
@@ -471,32 +479,32 @@ export function SettingsSidebar(props: {
)}
}
- label="Browser"
+ label={t`Browser`}
isActive={activeSection === "browser"}
onPress={() => onSectionChange("browser")}
/>
}
- label="Usage"
+ label={t`Usage`}
isActive={activeSection === "usage"}
onPress={() => onSectionChange("usage")}
/>
}
- label="Archived Threads"
+ label={t`Archived Threads`}
isActive={activeSection === "archived"}
onPress={() => onSectionChange("archived")}
/>
}
- label="About"
+ label={t`About`}
isActive={activeSection === "about"}
onPress={() => onSectionChange("about")}
/>
{devMode && (
}
- label="Dev"
+ label={t({ message: "Dev", comment: "Settings section: developer/debug tools" })}
isActive={activeSection === "dev"}
onPress={() => onSectionChange("dev")}
/>
@@ -507,12 +515,12 @@ export function SettingsSidebar(props: {
}
- label="Return to app"
+ label={t`Return to app`}
onPress={onClose}
/>
}
- label="Hide sidebar"
+ label={t`Hide sidebar`}
onPress={collapse}
/>
diff --git a/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.test.tsx b/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.test.tsx
index 25ad7fd2..369c4ba4 100644
--- a/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.test.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.test.tsx
@@ -1,7 +1,8 @@
-import { act, fireEvent, render, screen, waitFor, within } from "@testing-library/react";
+import { act, fireEvent, screen, waitFor, within } from "@testing-library/react";
import type { ReactNode } from "react";
import { beforeEach, describe, expect, it, vi } from "vitest";
import type { AgentInstanceConfig, AgentStatus, Project } from "@/shared/contracts";
+import { renderWithI18n as render } from "@/renderer/testUtils/i18n";
const statusesState = {
agentStatuses: [] as AgentStatus[],
diff --git a/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx b/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
index d50a6695..9b74efe7 100644
--- a/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/SingleAgentSettings.tsx
@@ -1,5 +1,7 @@
import { startTransition, useDeferredValue, useEffect, useState } from "react";
import { Button, Popover, Switch, Tooltip, toast } from "@heroui/react";
+import { msg } from "@lingui/core/macro";
+import { Trans, useLingui } from "@lingui/react/macro";
import {
AlertTriangle,
ArrowUpCircle,
@@ -35,6 +37,7 @@ import { useAgentStatusesStore } from "@/renderer/state/agentStatusesStore";
import { buildWslProjectDistrosKey } from "@/renderer/state/projectKeys";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
import { readBridge } from "@/renderer/bridge";
+import { i18n } from "@/renderer/i18n/i18n";
import {
acpGenericInstanceId,
agentAuthTarget,
@@ -117,6 +120,7 @@ function ModelVisibilityDropdown(props: {
settingsKey: string;
provider: ProviderModelMenuProvider;
}) {
+ const { t } = useLingui();
const { settingsKey, provider } = props;
const hiddenIds = useSharedSettings((s) => s.hiddenModels[settingsKey]);
const setHiddenModels = useSharedSettings((s) => s.setHiddenModels);
@@ -191,10 +195,10 @@ function ModelVisibilityDropdown(props: {
- {provider.kind === "cursor" ? `Visible ${provider.label} models` : "Visible models"}
+ {provider.kind === "cursor" ? t`Visible ${provider.label} models` : t`Visible models`}
- Toggle models off to hide them from the selector.
+ Toggle models off to hide them from the selector.
@@ -208,9 +212,9 @@ function ModelVisibilityDropdown(props: {
setSearch(event.target.value)}
onKeyDown={(event) => event.stopPropagation()}
@@ -218,7 +222,9 @@ function ModelVisibilityDropdown(props: {
- {visibleCount} of {totalCount} visible
+
+ {visibleCount} of {totalCount} visible
+
setAllHidden(false)}
>
- Show all
+ Show all
·
setAllHidden(true)}
>
- Hide all
+ Hide all
{items.length === 0 ? (
- No models found
+
+ No models found
+
) : (
@@ -276,6 +284,7 @@ function ModelVisibilityRow(props: {
onToggleSubGroup?: (headerId: string) => void;
}) {
const { item, isVisible, subGroupState, onToggle, onToggleSubGroup } = props;
+ const { t } = useLingui();
if (item.type === "header-sub") {
const state = subGroupState ?? "all";
@@ -316,7 +325,7 @@ function ModelVisibilityRow(props: {
role="presentation"
className="mx-1.5 mb-1 flex h-7 items-center border-b border-border/40 bg-overlay px-2 text-[10px] font-semibold uppercase tracking-wider text-muted/80"
>
- {item.label}
+ {t(item.label)}
);
}
@@ -391,13 +400,17 @@ function formatAgentMetadataSummary(
const providers = metadata?.connectedProviders ?? [];
if (providers.length > 0) {
const labels = providers.map((p) => p.label).join(", ");
- const noun = providers.length === 1 ? "provider" : "providers";
- return `${providers.length} ${noun} · ${labels}`;
+ const count = providers.length;
+ const noun =
+ count === 1
+ ? i18n._(msg`provider`)
+ : i18n._(msg({ message: "providers", comment: "plural" }));
+ return `${count} ${noun} · ${labels}`;
}
if (options?.includeAuthFallback === false) return undefined;
- if (metadata?.authMethod) return `via ${metadata.authMethod}`;
- if (status.authState === "authenticated") return "Signed in";
+ if (metadata?.authMethod) return i18n._(msg`via ${metadata.authMethod}`);
+ if (status.authState === "authenticated") return i18n._(msg`Signed in`);
return undefined;
}
@@ -452,34 +465,33 @@ function AgentInstallEnvironmentRow(props: {
installPending: boolean;
onInstall: (status: AgentStatus) => void;
}) {
+ const { t } = useLingui();
const env = envLabel(props.status);
- const envSuffix = env ? ` ${env}` : "";
return (
- {env || "Default"}
+ {env || t`Default`}
- Not installed
+ Not installed
props.onInstall(props.status)}
>
{props.installPending ? : }
- {props.installPending ? "Installing" : "Install"}
+ {props.installPending ? t`Installing` : t`Install`}
- Install {props.agentLabel}
- {env ? ` for ${env}` : ""}.
+ {env ? t`Install ${props.agentLabel} for ${env}.` : t`Install ${props.agentLabel}.`}
@@ -511,18 +523,18 @@ function AgentEnvironmentRow(props: {
*/
accountMetadata?: AgentProviderMetadata | undefined;
}) {
+ const { t } = useLingui();
const { status, authMethods } = props;
const hasAnyMethod = authMethods.length > 0;
const isAuthenticated = status.authState === "authenticated";
const isMissing =
status.authState === "missing" || (status.authState === "unknown" && hasAnyMethod);
const env = envLabel(status);
- const envSuffix = env ? ` ${env}` : "";
const canLogout = isAuthenticated && props.canLogout;
const canReLogin = isAuthenticated && !canLogout && hasAnyMethod;
const canLogin = (isMissing || canReLogin) && hasAnyMethod;
- const loginLabel = canReLogin ? "Re-login" : "Login";
- const pendingLabel = canLogout ? "Logging out" : "Logging in";
+ const loginLabel = canReLogin ? t`Re-login` : t`Login`;
+ const pendingLabel = canLogout ? t`Logging out` : t`Logging in`;
const hasMultipleMethods = authMethods.length > 1;
const singleMethod = !hasMultipleMethods ? authMethods[0] : undefined;
@@ -568,19 +580,24 @@ function AgentEnvironmentRow(props: {
: undefined;
const previewCommandLine = previewCommand ? formatUpdateCommandLine(previewCommand) : undefined;
+ const envOrAgentLabel = env || t`Agent`;
const description = isMissing
? hasMultipleMethods
- ? `Choose how to sign in${env ? ` for ${env}` : ""}.`
+ ? env
+ ? t`Choose how to sign in for ${env}.`
+ : t`Choose how to sign in.`
: singleMethod
- ? `Complete ${singleMethod.name} sign-in${env ? ` for ${env}` : ""}.`
- : `${env || "Agent"} needs authentication.`
+ ? env
+ ? t`Complete ${singleMethod.name} sign-in for ${env}.`
+ : t`Complete ${singleMethod.name} sign-in.`
+ : t`${envOrAgentLabel} needs authentication.`
: "";
return (
- {env || "Default"}
+ {env || t`Default`}
{props.isRedetecting ? (
) : (
@@ -592,7 +609,9 @@ function AgentEnvironmentRow(props: {
@@ -603,24 +622,30 @@ function AgentEnvironmentRow(props: {
size="sm"
variant="ghost"
className="h-5 min-h-5 gap-1 px-1.5 py-0 text-[10px] text-muted hover:text-foreground"
- aria-label={`Update to ${updateLabel} for ${props.agentLabel}${env ? ` (${env})` : ""}`}
+ aria-label={
+ env
+ ? t`Update to ${updateLabel} for ${props.agentLabel} (${env})`
+ : t`Update to ${updateLabel} for ${props.agentLabel}`
+ }
onPress={() => props.onUpdate(status)}
>
- Update to {updateLabel}
+ Update to {updateLabel}
{previewCommandLine ? (
- Will run in {env || "this environment"}:
+ Will run in {env || t`this environment`}:
{previewCommandLine}
) : (
- Update {props.agentLabel} to {updateLabel}
+
+ Update {props.agentLabel} to {updateLabel}
+
)}
@@ -629,7 +654,7 @@ function AgentEnvironmentRow(props: {
{isMissing && (
- Login required
+ Login required
)}
@@ -651,7 +676,11 @@ function AgentEnvironmentRow(props: {
size="sm"
variant="tertiary"
className="h-6 min-h-6 px-2 py-0 text-[10px] text-muted hover:text-foreground"
- aria-label={`${loginLabel} ${method.name}${envSuffix}`}
+ aria-label={
+ env
+ ? t`${loginLabel} ${method.name} ${env}`
+ : t`${loginLabel} ${method.name}`
+ }
onPress={() => props.onLogin(method)}
>
{method.name}
@@ -663,7 +692,7 @@ function AgentEnvironmentRow(props: {
size="sm"
variant="tertiary"
className="h-6 min-h-6 px-2 py-0 text-[10px] text-muted hover:text-foreground"
- aria-label={`${loginLabel}${envSuffix}`}
+ aria-label={env ? t`${loginLabel} ${env}` : loginLabel}
onPress={() => props.onLogin(singleMethod)}
>
{loginLabel}
@@ -674,10 +703,10 @@ function AgentEnvironmentRow(props: {
size="sm"
variant="tertiary"
className="h-6 min-h-6 px-2 py-0 text-[10px] text-muted hover:text-foreground"
- aria-label={`Logout${envSuffix}`}
+ aria-label={env ? t`Logout ${env}` : t`Logout`}
onPress={props.onLogout}
>
- Logout
+ Logout
) : null}
>
@@ -709,14 +738,15 @@ function HookPluginEnvironmentRow(props: {
onRefresh: (status: AgentHookPluginStatus) => void;
onPending: (pending: boolean) => void;
}) {
+ const { t } = useLingui();
const { status } = props;
const versionText = status.installed
? status.version
? `v${status.version}`
- : "Installed"
+ : t`Installed`
: status.supported
- ? "Not installed"
- : "Unsupported";
+ ? t`Not installed`
+ : t`Unsupported`;
const isOutdated =
status.installed && status.version !== undefined && status.version !== status.bundledVersion;
// Install and update both go through installAgentHookPlugin. Only offer
@@ -729,7 +759,8 @@ function HookPluginEnvironmentRow(props: {
: status.canUninstall
? "uninstall"
: "none";
- const actionLabel = mode === "install" ? "Install" : mode === "update" ? "Update" : "Uninstall";
+ const actionLabel =
+ mode === "install" ? t`Install` : mode === "update" ? t`Update` : t`Uninstall`;
const runAction = () => {
props.onPending(true);
const action =
@@ -739,15 +770,16 @@ function HookPluginEnvironmentRow(props: {
action({ agentKind: props.agentKind, env: status.env })
.then((result) => {
props.onRefresh(result.status);
+ const envName = hookEnvLabel(status.env);
toast.success(
mode === "uninstall"
- ? `${props.agentLabel} hooks removed for ${hookEnvLabel(status.env)}.`
- : `${props.agentLabel} hooks installed for ${hookEnvLabel(status.env)}.`,
+ ? t`${props.agentLabel} hooks removed for ${envName}.`
+ : t`${props.agentLabel} hooks installed for ${envName}.`,
);
})
.catch((error) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to update ${props.agentLabel} hooks.`,
+ error instanceof Error ? error.message : t`Unable to update ${props.agentLabel} hooks.`,
),
)
.finally(() => props.onPending(false));
@@ -760,7 +792,7 @@ function HookPluginEnvironmentRow(props: {
{versionText}
{isOutdated ? (
- v{status.bundledVersion} available
+ v{status.bundledVersion} available
) : null}
@@ -833,10 +865,14 @@ function HookPluginSettings(props: {
return (
- CLI hooks
+
+ CLI hooks
+
- Optional status hooks. Installed hooks update automatically; missing hooks are never
- installed automatically.
+
+ Optional status hooks. Installed hooks update automatically; missing hooks are never
+ installed automatically.
+
@@ -867,6 +903,7 @@ export function SingleAgentSettings(props: {
agentKind: string;
onOpenProfile?: (profileKind: string) => void;
}) {
+ const { t } = useLingui();
const [authValues, setAuthValues] = useState>({});
const [authPending, setAuthPending] = useState(false);
const [authPendingMessage, setAuthPendingMessage] = useState();
@@ -1028,8 +1065,10 @@ export function SingleAgentSettings(props: {
);
}
return (
-
- This agent is not installed.
+
+
+ This agent is not installed.
+
);
}
@@ -1046,7 +1085,7 @@ export function SingleAgentSettings(props: {
for (const s of installedWsl) versionRows.push({ label: envLabel(s), status: s });
} else {
for (const s of installedHere)
- versionRows.push({ label: envLabel(s) || "Installed", status: s });
+ versionRows.push({ label: envLabel(s) || t`Installed`, status: s });
}
const missingAuthStatuses = installedStatuses.filter((status) => status.authState === "missing");
const envVarAuthMethod =
@@ -1105,11 +1144,11 @@ export function SingleAgentSettings(props: {
.then(() => readBridge().refreshAgentStatuses(wslDistros, { agentKinds: [props.agentKind] }))
.then(() => {
setAuthValues({});
- toast.success(`${agent.label} credentials saved.`);
+ toast.success(t`${agent.label} credentials saved.`);
})
.catch((error) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to save ${agent.label} credentials.`,
+ error instanceof Error ? error.message : t`Unable to save ${agent.label} credentials.`,
),
)
.finally(() => setAuthPending(false));
@@ -1118,8 +1157,12 @@ export function SingleAgentSettings(props: {
if (!auth || !supportsAcpAgentAuth) return;
setAuthPending(true);
setAuthPendingEnvKey(statusEnvKey(auth.status));
+ const authEnv = envLabel(auth.status);
+ const authMethodName = auth.method.name;
setAuthPendingMessage(
- `Waiting for ${envLabel(auth.status) ? `${envLabel(auth.status)} ` : ""}${auth.method.name} authentication. Detected agents will refresh when it finishes.`,
+ authEnv
+ ? t`Waiting for ${authEnv} ${authMethodName} authentication. Detected agents will refresh when it finishes.`
+ : t`Waiting for ${authMethodName} authentication. Detected agents will refresh when it finishes.`,
);
readBridge()
.authenticateAcpAgent({
@@ -1134,10 +1177,10 @@ export function SingleAgentSettings(props: {
envs: [scopeEnvForStatus(auth.status)],
}),
)
- .then(() => toast.success(`${agent.label} authenticated.`))
+ .then(() => toast.success(t`${agent.label} authenticated.`))
.catch((error: unknown) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to authenticate ${agent.label}.`,
+ error instanceof Error ? error.message : t`Unable to authenticate ${agent.label}.`,
),
)
.finally(() => {
@@ -1152,8 +1195,11 @@ export function SingleAgentSettings(props: {
const env = envLabel(status);
setAuthPending(true);
setAuthPendingEnvKey(statusEnvKey(status));
+ const methodName = method?.name ?? t`login`;
setAuthPendingMessage(
- `Waiting for ${env ? `${env} ` : ""}${method?.name ?? "login"} authentication. Detected agents will refresh when it finishes.`,
+ env
+ ? t`Waiting for ${env} ${methodName} authentication. Detected agents will refresh when it finishes.`
+ : t`Waiting for ${methodName} authentication. Detected agents will refresh when it finishes.`,
);
const opened = runAgentLoginCommand({
label: status.label,
@@ -1168,7 +1214,9 @@ export function SingleAgentSettings(props: {
return;
}
setAuthPendingMessage(
- `Refreshing ${env ? `${env} ` : ""}${status.label} authentication status.`,
+ env
+ ? t`Refreshing ${env} ${status.label} authentication status.`
+ : t`Refreshing ${status.label} authentication status.`,
);
void readBridge()
.refreshAgentStatuses(wslDistros, {
@@ -1177,7 +1225,7 @@ export function SingleAgentSettings(props: {
})
.catch((error) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to refresh ${status.label} status.`,
+ error instanceof Error ? error.message : t`Unable to refresh ${status.label} status.`,
),
)
.finally(() => {
@@ -1202,7 +1250,9 @@ export function SingleAgentSettings(props: {
setAuthPending(true);
setAuthPendingEnvKey(statusEnvKey(status));
setAuthPendingMessage(
- `Signing out${env ? ` ${env}` : ""}. Detected agents will refresh when it finishes.`,
+ env
+ ? t`Signing out ${env}. Detected agents will refresh when it finishes.`
+ : t`Signing out. Detected agents will refresh when it finishes.`,
);
readBridge()
.logoutAcpAgent({
@@ -1215,9 +1265,9 @@ export function SingleAgentSettings(props: {
envs: [scopeEnvForStatus(status)],
}),
)
- .then(() => toast.success(`${agent.label} logged out.`))
+ .then(() => toast.success(t`${agent.label} logged out.`))
.catch((error: unknown) =>
- toast.danger(error instanceof Error ? error.message : `Unable to log out ${agent.label}.`),
+ toast.danger(error instanceof Error ? error.message : t`Unable to log out ${agent.label}.`),
)
.finally(() => {
setAuthPending(false);
@@ -1268,11 +1318,11 @@ export function SingleAgentSettings(props: {
.then(() => readBridge().refreshAgentStatuses(wslDistros, { agentKinds: [props.agentKind] }))
.then(() => {
setAuthValues({});
- toast.success(`${agent.label} credentials removed.`);
+ toast.success(t`${agent.label} credentials removed.`);
})
.catch((error) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to remove ${agent.label} credentials.`,
+ error instanceof Error ? error.message : t`Unable to remove ${agent.label} credentials.`,
),
)
.finally(() => setAuthPending(false));
@@ -1293,9 +1343,9 @@ export function SingleAgentSettings(props: {
syncInstalledAgents(result.installed);
})
.then(() => readBridge().refreshAgentStatuses(wslDistros, { agentKinds: [props.agentKind] }))
- .then(() => toast.success(`${agent.label} updated to v${latestRegistryVersion}.`))
+ .then(() => toast.success(t`${agent.label} updated to v${latestRegistryVersion}.`))
.catch((error) =>
- toast.danger(error instanceof Error ? error.message : `Unable to update ${agent.label}.`),
+ toast.danger(error instanceof Error ? error.message : t`Unable to update ${agent.label}.`),
)
.finally(() => setUpdatePending(false));
};
@@ -1303,7 +1353,7 @@ export function SingleAgentSettings(props: {
const performBinaryUpdate = (status: AgentStatus) => {
const scope = statusUpdateScope(status);
const envKey = statusEnvKey(status);
- const envSuffix = envLabel(status) ? ` (${envLabel(status)})` : "";
+ const envName = envLabel(status);
const previousVersion = status.version;
setBinaryUpdatePendingEnvKey(envKey);
readBridge()
@@ -1332,24 +1382,43 @@ export function SingleAgentSettings(props: {
entry.envDistro === status.envDistro,
)?.version;
if (newVersion && newVersion === previousVersion) {
- toast.success(`${agent.label}${envSuffix} is already up to date.`);
+ toast.success(
+ envName
+ ? t`${agent.label} (${envName}) is already up to date.`
+ : t`${agent.label} is already up to date.`,
+ );
} else if (newVersion) {
- toast.success(`${agent.label}${envSuffix} updated to v${newVersion}.`);
+ toast.success(
+ envName
+ ? t`${agent.label} (${envName}) updated to v${newVersion}.`
+ : t`${agent.label} updated to v${newVersion}.`,
+ );
} else {
- toast.success(`${agent.label}${envSuffix} updated.`);
+ toast.success(
+ envName ? t`${agent.label} (${envName}) updated.` : t`${agent.label} updated.`,
+ );
}
return;
}
const detail = result.output?.trim();
+ const detailText = detail ? detail.slice(0, 240) : "";
toast.danger(
detail
- ? `Unable to update ${agent.label}${envSuffix}: ${detail.slice(0, 240)}`
- : `Unable to update ${agent.label}${envSuffix}.`,
+ ? envName
+ ? t`Unable to update ${agent.label} (${envName}): ${detailText}`
+ : t`Unable to update ${agent.label}: ${detailText}`
+ : envName
+ ? t`Unable to update ${agent.label} (${envName}).`
+ : t`Unable to update ${agent.label}.`,
);
})
.catch((error) =>
toast.danger(
- error instanceof Error ? error.message : `Unable to update ${agent.label}${envSuffix}.`,
+ error instanceof Error
+ ? error.message
+ : envName
+ ? t`Unable to update ${agent.label} (${envName}).`
+ : t`Unable to update ${agent.label}.`,
),
)
.finally(() => setBinaryUpdatePendingEnvKey(undefined));
@@ -1391,7 +1460,7 @@ export function SingleAgentSettings(props: {
? (findTerminalAuthMethodForStatus(status) ??
sharedTerminalAuthMethod ?? {
id: "terminal-login",
- name: "Login",
+ name: t`Login`,
type: "terminal" as const,
})
: undefined;
@@ -1460,7 +1529,7 @@ export function SingleAgentSettings(props: {
{agent.label}
- {isDisabled ? "Agent is currently disabled" : "Agent is active and ready"}
+ {isDisabled ? t`Agent is currently disabled` : t`Agent is active and ready`}
@@ -1474,14 +1543,14 @@ export function SingleAgentSettings(props: {
onPress={performUpdate}
>
- Update to v{latestRegistryVersion}
+ Update to v{latestRegistryVersion}
)}
{
startTransition(() => {
setAgentDisabled(agent.kind, !selected);
@@ -1527,7 +1596,7 @@ export function SingleAgentSettings(props: {
{envVarAuthMethod.name}
- Saved credentials are shared across all environments.
+ Saved credentials are shared across all environments.
{envVarAuthMethod.vars.map((variable) => {
@@ -1597,7 +1666,7 @@ export function SingleAgentSettings(props: {
size="sm"
variant="tertiary"
isIconOnly
- aria-label="Save"
+ aria-label={t`Save`}
isDisabled={!canSaveEnvAuth}
isPending={authPending}
data-acp-auth-save=""
@@ -1610,7 +1679,7 @@ export function SingleAgentSettings(props: {
size="sm"
variant="tertiary"
isIconOnly
- aria-label="Logout"
+ aria-label={t`Logout`}
isPending={authPending}
onPress={clearEnvVarCredentials}
>
@@ -1631,23 +1700,23 @@ export function SingleAgentSettings(props: {
{authMissing ? (
) : null}
- {authMissing ? "Login required" : "Authentication"}
+ {authMissing ? t`Login required` : t`Authentication`}
{authPendingMessage ??
(authMissing
- ? `${missingAuthLabel ? `${missingAuthLabel} needs authentication. ` : ""}${
+ ? `${missingAuthLabel ? `${t`${missingAuthLabel} needs authentication.`} ` : ""}${
envVarAuthMethod
? agentAuth
- ? `Complete ${agentAuth.method.name} sign-in or save ${envVarAuthMethod.name} credentials.`
- : `Save ${envVarAuthMethod.name} credentials.`
+ ? t`Complete ${agentAuth.method.name} sign-in or save ${envVarAuthMethod.name} credentials.`
+ : t`Save ${envVarAuthMethod.name} credentials.`
: agentAuth
- ? `Complete ${agentAuth.method.name} sign-in.`
+ ? t`Complete ${agentAuth.method.name} sign-in.`
: loginCommand
- ? `Run ${loginCommand} to sign in.`
- : "Sign in with the agent CLI."
+ ? t`Run ${loginCommand} to sign in.`
+ : t`Sign in with the agent CLI.`
}`
- : "Credentials are configured.")}
+ : t`Credentials are configured.`)}
@@ -1664,7 +1733,7 @@ export function SingleAgentSettings(props: {
onPress={() => authenticateAgent(entry)}
>
- {authMissing ? "Login" : "Re-login"}
+ {authMissing ? t`Login` : t`Re-login`}
),
)
@@ -1676,7 +1745,7 @@ export function SingleAgentSettings(props: {
onPress={() => runTerminalLogin(loginStatus, terminalLoginMethod)}
>
- {authMissing ? "Login" : "Re-login"}
+ {authMissing ? t`Login` : t`Re-login`}
) : null}
{logoutStatuses.map((status, index) => (
@@ -1689,7 +1758,7 @@ export function SingleAgentSettings(props: {
onPress={() => logoutAgent(status)}
>
- Logout
+ Logout
))}
@@ -1731,9 +1800,12 @@ export function SingleAgentSettings(props: {
}
export function AgentSettingsEmpty() {
+ const { t } = useLingui();
return (
-
- No agents installed.
+
+
+ No agents installed.
+
);
}
diff --git a/src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx b/src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
index 7faf8a5f..94abfaed 100644
--- a/src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/TerminalSettings.tsx
@@ -1,5 +1,6 @@
import { startTransition } from "react";
import { Switch } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import type { TerminalPosition } from "@/shared/contracts";
import type { CliPickerTarget } from "@/shared/settings";
import { useSharedSettings } from "@/renderer/state/sharedSettingsStore";
@@ -10,9 +11,11 @@ import {
fontSizeOptions,
scrollSpeedOptions,
terminalPositionOptions,
+ useLocalizedOptions,
} from "./settingsOptions";
export function TerminalSettings() {
+ const { t } = useLingui();
const terminalPosition = useSharedSettings((state) => state.terminalPosition);
const setTerminalPosition = useSharedSettings((state) => state.setTerminalPosition);
const collapseTerminalComposer = useSharedSettings((state) => state.collapseTerminalComposer);
@@ -30,13 +33,19 @@ export function TerminalSettings() {
const terminalPanelFontSize = useSharedSettings((state) => state.terminalPanelFontSize);
const setTerminalPanelFontSize = useSharedSettings((state) => state.setTerminalPanelFontSize);
+ const terminalPositionOpts = useLocalizedOptions(terminalPositionOptions);
+ const cliPickerTargetOpts = useLocalizedOptions(cliPickerTargetOptions);
+
return (
-
-
+
+ Where the terminal panel appears.}
+ >
{
startTransition(() => {
@@ -47,8 +56,12 @@ export function TerminalSettings() {
+ Automatically show the terminal panel when running commands or creating worktrees.
+
+ }
>
+ Start the composer collapsed in terminal-native threads. A collapsed composer routes
+ browser element picks straight to the terminal.
+
+ }
>
+ Where a browser element-picker selection goes in terminal-native threads. A collapsed
+ composer always routes to the terminal.
+
+ }
>
{
startTransition(() => {
@@ -100,11 +123,13 @@ export function TerminalSettings() {
Base font size for agent terminals. Auto-shrinks in narrow or short panes.
+ }
>
+ Base font size for the terminal panel. Auto-shrinks in narrow or short panes.
+
+ }
>
Scroll speed multiplier for the terminal scrollback buffer.}
>
state.staleThreadUnloadMinutes);
const setStaleThreadUnloadMinutes = useSharedSettings(
(state) => state.setStaleThreadUnloadMinutes,
@@ -18,14 +20,20 @@ export function ThreadSettings() {
const threadRemoveAction = useSharedSettings((state) => state.threadRemoveAction);
const setThreadRemoveAction = useSharedSettings((state) => state.setThreadRemoveAction);
+ const threadRemoveActionOpts = useLocalizedOptions(threadRemoveActionOptions);
+
return (
-
+
+ Hidden resumable threads are swept every 5 minutes and unloaded after this idle age.
+
+ }
>
+ Threads marked done that have not been touched for this many days are archived
+ automatically on app launch. Set to 0 to disable.
+
+ }
>
Action for the quick-remove button on sidebar threads.}
>
{
startTransition(() => {
diff --git a/src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx b/src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
index e985d043..7d32b3da 100644
--- a/src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
+++ b/src/renderer/views/SettingsOverlay/parts/UsageSettings.tsx
@@ -1,6 +1,7 @@
import { startTransition, useEffect, useState } from "react";
import { RefreshCw } from "lucide-react";
import { NumberField, Switch } from "@heroui/react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { readBridge } from "@/renderer/bridge";
import { Button } from "@/renderer/components/common";
import { ProviderIcon } from "@/renderer/components/providers/ProviderIcon";
@@ -17,13 +18,16 @@ import { SettingRow, SettingsPage } from "./SettingsForm";
function UsageProviderRow(props: { id: string; label: string }) {
const { id, label } = props;
+ const { t } = useLingui();
const snapshot = useProviderUsage(id);
const disabledProviders = useSharedSettings((s) => s.usage.disabledProviders);
const setUsageSetting = useSharedSettings((s) => s.setUsageSetting);
const enabled = !disabledProviders.includes(id);
const showBars = enabled && snapshot?.status === "ok" && snapshot.windows.length > 0;
const reserveBars = !enabled && snapshot?.status === "ok" && snapshot.windows.length > 0;
- const message = enabled ? usageStatusText(snapshot, label) : "Tracking off";
+ const message = enabled
+ ? usageStatusText(snapshot, label)
+ : t({ message: "Tracking off", comment: "Usage status when provider tracking is disabled" });
// The credits line below already shows the balance, and usageStatusText folds
// it into the status string for a windowless "ok" snapshot — so skip the
// standalone message there to avoid rendering "Zen balance: $X" twice.
@@ -66,14 +70,14 @@ function UsageProviderRow(props: { id: string; label: string }) {
) : null}
{snapshot?.credits && !snapshot.credits.unlimited ? (
- {snapshot.credits.label ?? "Credits"}:{" "}
+ {snapshot.credits.label ?? t`Credits`}:{" "}
{formatMoney(snapshot.credits.balance, snapshot.credits.currency)}
) : null}
{
const next = selected
@@ -93,6 +97,7 @@ function UsageProviderRow(props: { id: string; label: string }) {
}
export function UsageSettings() {
+ const { t } = useLingui();
const autoRefresh = useSharedSettings((s) => s.usage.autoRefresh);
const refreshIntervalMinutes = useSharedSettings((s) => s.usage.refreshIntervalMinutes);
const showInSidebar = useSharedSettings((s) => s.usage.showInSidebar);
@@ -130,8 +135,8 @@ export function UsageSettings() {
return (
- Refresh
+ Refresh
}
>
+ Refresh usage in the background every N minutes. Set to 0 to turn off (manual only). The
+ 2-minute floor respects provider rate limits.
+
+ }
>
Show a compact per-provider usage ring in the sidebar.}
>
+ Reconstructed from local logs at public API rates — it does not reflect your real bill
+ on subscription plans. Shown only in the usage panel.
+
+ }
>
- Providers
+
+ Providers
+
- Turn tracking on or off per provider. Disabled providers are skipped by the auto-refresh.
+
+ Turn tracking on or off per provider. Disabled providers are skipped by the
+ auto-refresh.
+
{usageProviders.map((p) => (
diff --git a/src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts b/src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
index 0a2584b5..65fb685c 100644
--- a/src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
+++ b/src/renderer/views/SettingsOverlay/parts/agentRegistryNative.ts
@@ -1,10 +1,12 @@
+import { msg } from "@lingui/core/macro";
+import type { MessageDescriptor } from "@lingui/core";
import type { AgentKind, Project } from "@/shared/contracts";
import { isMac, isWindows } from "@/renderer/bridge";
export interface NativeAgentRegistryEntry {
id: AgentKind;
label: string;
- description: string;
+ description: MessageDescriptor;
installCommand: (project: Project) => string;
docsUrl: string;
/**
@@ -45,7 +47,7 @@ export const NATIVE_AGENT_REGISTRY_ENTRIES: NativeAgentRegistryEntry[] = [
{
id: "codex",
label: "Codex",
- description: "First-class Codex CLI integration using Lightcode's native app-server runtime.",
+ description: msg`First-class Codex CLI integration using Lightcode's native app-server runtime.`,
docsUrl: "https://developers.openai.com/codex/cli",
installCommand: (project) =>
nativeInstallCommand(project, {
@@ -67,7 +69,7 @@ export const NATIVE_AGENT_REGISTRY_ENTRIES: NativeAgentRegistryEntry[] = [
{
id: "claude",
label: "Claude Code",
- description: "First-class Claude Code integration using Lightcode's native SDK runtime.",
+ description: msg`First-class Claude Code integration using Lightcode's native SDK runtime.`,
docsUrl: "https://code.claude.com/docs/en/setup",
installCommand: (project) =>
nativeInstallCommand(project, {
@@ -87,7 +89,7 @@ export const NATIVE_AGENT_REGISTRY_ENTRIES: NativeAgentRegistryEntry[] = [
{
id: "opencode",
label: "OpenCode",
- description: "First-class OpenCode integration using Lightcode's native SDK runtime.",
+ description: msg`First-class OpenCode integration using Lightcode's native SDK runtime.`,
docsUrl: "https://opencode.ai/docs/",
installCommand: (project) =>
nativeInstallCommand(project, {
@@ -109,7 +111,7 @@ export const NATIVE_AGENT_REGISTRY_ENTRIES: NativeAgentRegistryEntry[] = [
{
id: "grok",
label: "Grok Build",
- description: "First-class Grok Build CLI integration using Lightcode's native runtime.",
+ description: msg`First-class Grok Build CLI integration using Lightcode's native runtime.`,
docsUrl: "https://docs.x.ai/build/overview",
installCommand: (project) =>
nativeInstallCommand(project, {
@@ -126,7 +128,7 @@ export const NATIVE_AGENT_REGISTRY_ENTRIES: NativeAgentRegistryEntry[] = [
{
id: "antigravity",
label: "Antigravity",
- description: "First-class Antigravity CLI integration using Lightcode's native runtime.",
+ description: msg`First-class Antigravity CLI integration using Lightcode's native runtime.`,
docsUrl: "https://antigravity.google/docs/cli-getting-started",
installCommand: (project) =>
posixOrWindows(
@@ -139,7 +141,7 @@ export const NATIVE_AGENT_REGISTRY_ENTRIES: NativeAgentRegistryEntry[] = [
{
id: "commandcode",
label: "Command Code",
- description: "First-class Command Code CLI integration using Lightcode's native runtime.",
+ description: msg`First-class Command Code CLI integration using Lightcode's native runtime.`,
docsUrl: "https://commandcode.ai/docs/quickstart",
installCommand: (project) =>
nativeInstallCommand(project, {
diff --git a/src/renderer/views/SettingsOverlay/parts/settingsOptions.ts b/src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
index b5c7235d..a57ca6a3 100644
--- a/src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
+++ b/src/renderer/views/SettingsOverlay/parts/settingsOptions.ts
@@ -1,46 +1,74 @@
+import { msg } from "@lingui/core/macro";
+import { useLingui } from "@lingui/react/macro";
+import type { MessageDescriptor } from "@lingui/core";
+import type { SelectOption } from "@/renderer/components/common";
+
+/**
+ * Settings dropdown options. Labels are lazy `msg` descriptors (module-level
+ * macros must use `msg`, not `t`) and resolved to strings at render time via
+ * {@link useLocalizedOptions}. Numeric option lists (scroll speed, font size)
+ * stay plain strings — "2x"/"12px" are locale-agnostic.
+ */
+interface LocalizedOption {
+ id: string;
+ label: MessageDescriptor;
+}
+
export const themeOptions = [
- { id: "system", label: "System" },
- { id: "light", label: "Light" },
- { id: "dark", label: "Dark" },
-] as const;
+ { id: "system", label: msg`System` },
+ { id: "light", label: msg`Light` },
+ { id: "dark", label: msg`Dark` },
+] as const satisfies readonly LocalizedOption[];
export const terminalPositionOptions = [
- { id: "right", label: "Right" },
- { id: "bottom", label: "Bottom" },
-] as const;
+ { id: "right", label: msg`Right` },
+ { id: "bottom", label: msg`Bottom` },
+] as const satisfies readonly LocalizedOption[];
export const threadRemoveActionOptions = [
- { id: "archive", label: "Archive" },
- { id: "delete", label: "Delete" },
-] as const;
+ { id: "archive", label: msg`Archive` },
+ {
+ id: "delete",
+ label: msg({ message: "Delete", comment: "Thread remove action: delete permanently" }),
+ },
+] as const satisfies readonly LocalizedOption[];
export const cliPickerTargetOptions = [
- { id: "ask", label: "Ask each time" },
- { id: "terminal", label: "Terminal input" },
- { id: "composer", label: "Composer" },
-] as const;
+ { id: "ask", label: msg`Ask each time` },
+ { id: "terminal", label: msg`Terminal input` },
+ { id: "composer", label: msg`Composer` },
+] as const satisfies readonly LocalizedOption[];
export const newThreadModeOptions = [
- { id: "page", label: "Page" },
- { id: "panel", label: "Panel" },
-] as const;
+ { id: "page", label: msg`Page` },
+ { id: "panel", label: msg`Panel` },
+] as const satisfies readonly LocalizedOption[];
export const gitReviewModeOptions = [
- { id: "panel", label: "Panel" },
- { id: "page", label: "Page" },
-] as const;
+ { id: "panel", label: msg`Panel` },
+ { id: "page", label: msg`Page` },
+] as const satisfies readonly LocalizedOption[];
export const prCreateModeOptions = [
- { id: "dialog", label: "Open dialog" },
- { id: "auto", label: "Auto-generate" },
-] as const;
+ { id: "dialog", label: msg`Open dialog` },
+ { id: "auto", label: msg`Auto-generate` },
+] as const satisfies readonly LocalizedOption[];
export const scrollSpeedOptions = Array.from({ length: 10 }, (_, i) => ({
id: String(i + 1),
label: `${i + 1}x`,
-})) as readonly { id: string; label: string }[];
+})) as readonly SelectOption[];
export const fontSizeOptions = Array.from({ length: 13 }, (_, i) => ({
id: String(i + 8),
label: `${i + 8}px`,
-})) as readonly { id: string; label: string }[];
+})) as readonly SelectOption[];
+
+/**
+ * Resolve a list of `msg`-descriptor options to plain `{ id, label }` strings
+ * for `Select`. Re-resolves when the active locale changes.
+ */
+export function useLocalizedOptions(options: readonly LocalizedOption[]): SelectOption[] {
+ const { t } = useLingui();
+ return options.map((option) => ({ id: option.id, label: t(option.label) }));
+}
diff --git a/src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx b/src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
index 718110f4..c196c279 100644
--- a/src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
+++ b/src/renderer/views/ThreadSearchOverlay/ThreadSearchOverlay.tsx
@@ -1,5 +1,6 @@
import { useEffect, useMemo, useRef, useState } from "react";
import { Search } from "lucide-react";
+import { Trans, useLingui } from "@lingui/react/macro";
import { useShallow } from "zustand/shallow";
import { useAppStore } from "@/renderer/state/appStore";
import { usePanelStore } from "@/renderer/state/panelStore";
@@ -11,6 +12,7 @@ const RESULT_LIMIT = 50;
export function ThreadSearchOverlay(props: { onClose: () => void }) {
const { onClose } = props;
+ const { t } = useLingui();
const [query, setQuery] = useState("");
const [selectedIndex, setSelectedIndex] = useState(0);
const inputRef = useRef(null);
@@ -21,7 +23,7 @@ export function ThreadSearchOverlay(props: { onClose: () => void }) {
const dragSource = useDragSource();
const isDraggingThreadFromSearch =
- dragSource?.type === "thread" && threads.some((t) => t.id === dragSource.threadId);
+ dragSource?.type === "thread" && threads.some((thread) => thread.id === dragSource.threadId);
const wasDraggingRef = useRef(false);
// When a drag started from this overlay ends, close the overlay.
@@ -48,8 +50,10 @@ export function ThreadSearchOverlay(props: { onClose: () => void }) {
const results = useMemo(() => {
const q = query.trim().toLowerCase();
- const candidates = threads.filter((t) => !t.archived);
- const filtered = q ? candidates.filter((t) => t.title.toLowerCase().includes(q)) : candidates;
+ const candidates = threads.filter((thread) => !thread.archived);
+ const filtered = q
+ ? candidates.filter((thread) => thread.title.toLowerCase().includes(q))
+ : candidates;
return filtered
.slice()
.sort((a, b) => {
@@ -100,13 +104,13 @@ export function ThreadSearchOverlay(props: { onClose: () => void }) {
>
@@ -116,7 +120,7 @@ export function ThreadSearchOverlay(props: { onClose: () => void }) {
type="text"
value={query}
onChange={(e) => setQuery(e.target.value)}
- placeholder="Search…"
+ placeholder={t`Search…`}
className="flex-1 bg-transparent text-sm outline-none placeholder:text-muted/70"
spellCheck={false}
autoComplete="off"
@@ -125,12 +129,12 @@ export function ThreadSearchOverlay(props: { onClose: () => void }) {
{results.length === 0 ? (
- {query.trim() ? "No matching threads" : "No threads"}
+ {query.trim() ? No matching threads : No threads }
) : (
- Threads
+ Threads
{results.map((thread, index) => (
- Where do you want to begin?
+
+ Where do you want to begin?
+
- Ask Question
+ Ask Question
- Home
+ Home
@@ -219,7 +222,7 @@ export function WelcomeOverlay() {
className="lightcode-welcome-button h-12 justify-center gap-2 !text-white"
>
- Add Project
+ Add Project
diff --git a/src/shared/contracts/git.ts b/src/shared/contracts/git.ts
index 12e65c86..8671c3fb 100644
--- a/src/shared/contracts/git.ts
+++ b/src/shared/contracts/git.ts
@@ -216,6 +216,8 @@ export const generateCommitMessagePayloadSchema = z.object({
agentKind: agentKindSchema,
model: z.string().min(1).optional(),
effort: z.string().min(1).optional(),
+ /** English name of the language to write the commit message in (e.g. "German"). Omitted = English. */
+ language: z.string().min(1).optional(),
});
export type GenerateCommitMessagePayload = z.infer;
@@ -229,6 +231,8 @@ export const generateTitlePayloadSchema = z.object({
prompt: z.string().min(1),
model: z.string().min(1).optional(),
effort: z.string().min(1).optional(),
+ /** English name of the language to write the title in (e.g. "German"). Omitted = match the user's message. */
+ language: z.string().min(1).optional(),
});
export type GenerateTitlePayload = z.infer;
@@ -243,6 +247,8 @@ export const generatePrSummaryPayloadSchema = z.object({
baseBranch: z.string().min(1),
model: z.string().min(1).optional(),
effort: z.string().min(1).optional(),
+ /** English name of the language to write the PR title/description in (e.g. "German"). Omitted = English. */
+ language: z.string().min(1).optional(),
});
export type GeneratePrSummaryPayload = z.infer;
diff --git a/src/shared/locale.test.ts b/src/shared/locale.test.ts
new file mode 100644
index 00000000..2e9cb7a9
--- /dev/null
+++ b/src/shared/locale.test.ts
@@ -0,0 +1,51 @@
+import { describe, expect, it } from "vitest";
+import { resolveAiLanguageName, resolveLocale } from "./locale";
+
+describe("resolveLocale", () => {
+ it("returns an explicit supported locale", () => {
+ expect(resolveLocale("ja", ["en-US"])).toBe("ja");
+ });
+
+ it("matches exact regional system locales", () => {
+ expect(resolveLocale("system", ["zh-CN"])).toBe("zh-CN");
+ expect(resolveLocale("system", ["pt-BR"])).toBe("pt-BR");
+ });
+
+ it("falls back from regional preferences to supported base locales", () => {
+ expect(resolveLocale("system", ["de-AT"])).toBe("de");
+ expect(resolveLocale("system", ["uk-UA"])).toBe("uk");
+ });
+
+ it("falls back to a single supported regional locale with the same base language", () => {
+ expect(resolveLocale("system", ["zh-Hans-CN"])).toBe("zh-CN");
+ expect(resolveLocale("system", ["pt-PT"])).toBe("pt-BR");
+ });
+
+ it("falls back to the source locale when no preferred language is supported", () => {
+ expect(resolveLocale("system", ["it-IT"])).toBe("en");
+ });
+});
+
+describe("resolveAiLanguageName", () => {
+ it("returns undefined for an explicit English selection (no directive needed)", () => {
+ expect(resolveAiLanguageName("en", "system", ["de-DE"])).toBeUndefined();
+ });
+
+ it("returns the English name of an explicitly pinned language", () => {
+ expect(resolveAiLanguageName("de", "system", ["en-US"])).toBe("German");
+ expect(resolveAiLanguageName("ru", "en", ["en-US"])).toBe("Russian");
+ });
+
+ it("follows the app locale when set to match-app", () => {
+ expect(resolveAiLanguageName("match-app", "de", ["en-US"])).toBe("German");
+ });
+
+ it("resolves match-app through the OS locale when the app locale is system", () => {
+ expect(resolveAiLanguageName("match-app", "system", ["pt-BR"])).toBe("Brazilian Portuguese");
+ });
+
+ it("returns undefined when match-app resolves to English", () => {
+ expect(resolveAiLanguageName("match-app", "system", ["en-US"])).toBeUndefined();
+ expect(resolveAiLanguageName("match-app", "en", ["de-DE"])).toBeUndefined();
+ });
+});
diff --git a/src/shared/locale.ts b/src/shared/locale.ts
new file mode 100644
index 00000000..b922be91
--- /dev/null
+++ b/src/shared/locale.ts
@@ -0,0 +1,155 @@
+/**
+ * Canonical locale lists + resolution shared by the settings schema (main +
+ * renderer) and the renderer i18n runtime. Keeping the lists here means adding a
+ * language is a one-line change in a single place (plus the `.po` catalog and
+ * `lingui.config.ts`).
+ *
+ * `resolveLocale` is pure (no DOM access) so it is unit-testable in the node
+ * environment; callers pass the preferred-language list explicitly.
+ */
+
+/** Locales we actually ship catalogs for. */
+export const SUPPORTED_LOCALES = [
+ "en",
+ "es",
+ "ru",
+ "uk",
+ "zh-CN",
+ "ja",
+ "pt-BR",
+ "de",
+ "fr",
+ "ko",
+ "pl",
+ "vi",
+ "tr",
+] as const;
+export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];
+
+/** Source locale — its catalog mirrors the message source text. */
+export const SOURCE_LOCALE: SupportedLocale = "en";
+
+/**
+ * Values the `locale` setting may hold. `"system"` follows the OS/browser
+ * preferred language at runtime (resolved by {@link resolveLocale}), mirroring
+ * how `themeMode: "system"` follows the OS color scheme.
+ */
+export const LOCALE_SETTING_VALUES = ["system", ...SUPPORTED_LOCALES] as const;
+export type LocaleSetting = (typeof LOCALE_SETTING_VALUES)[number];
+
+/**
+ * English display names for each supported locale. Used to instruct one-shot
+ * models which language to write generated content in (commit messages, PR
+ * summaries, thread titles). English names — not native — because the directive
+ * is embedded inside an otherwise-English instruction prompt.
+ */
+export const LOCALE_ENGLISH_NAMES: Record = {
+ en: "English",
+ es: "Spanish",
+ ru: "Russian",
+ uk: "Ukrainian",
+ "zh-CN": "Simplified Chinese",
+ ja: "Japanese",
+ "pt-BR": "Brazilian Portuguese",
+ de: "German",
+ fr: "French",
+ ko: "Korean",
+ pl: "Polish",
+ vi: "Vietnamese",
+ tr: "Turkish",
+};
+
+/**
+ * Values the AI-content language setting may hold. `"match-app"` follows the
+ * resolved UI {@link LocaleSetting}; any other value pins a specific output
+ * language regardless of the interface language.
+ */
+export const AI_LANGUAGE_VALUES = ["match-app", ...SUPPORTED_LOCALES] as const;
+export type AiContentLanguage = (typeof AI_LANGUAGE_VALUES)[number];
+
+export function isSupportedLocale(value: string): value is SupportedLocale {
+ return (SUPPORTED_LOCALES as readonly string[]).includes(value);
+}
+
+const SUPPORTED_LOCALES_BY_NORMALIZED_TAG = new Map(
+ SUPPORTED_LOCALES.map((locale) => [locale.toLowerCase(), locale]),
+);
+
+function findSupportedLocaleForLanguageTag(tag: string): SupportedLocale | undefined {
+ const normalized = tag.trim().replaceAll("_", "-").toLowerCase();
+ const exactMatch = SUPPORTED_LOCALES_BY_NORMALIZED_TAG.get(normalized);
+ if (exactMatch) {
+ return exactMatch;
+ }
+
+ const base = normalized.split("-")[0];
+ if (!base) {
+ return undefined;
+ }
+
+ const baseMatch = SUPPORTED_LOCALES_BY_NORMALIZED_TAG.get(base);
+ if (baseMatch) {
+ return baseMatch;
+ }
+
+ let regionalMatch: SupportedLocale | undefined;
+ for (const locale of SUPPORTED_LOCALES) {
+ if (locale.toLowerCase().split("-")[0] !== base) {
+ continue;
+ }
+ if (regionalMatch) {
+ return undefined;
+ }
+ regionalMatch = locale;
+ }
+ return regionalMatch;
+}
+
+/**
+ * Resolve a `locale` setting to a concrete supported locale.
+ *
+ * - An explicit supported locale is returned as-is.
+ * - `"system"` (or any unexpected value) walks `preferredLanguages` (e.g.
+ * `navigator.languages`, BCP-47 tags like `"uk-UA"`), matching exact
+ * regional tags first, then base language, and falls back to
+ * {@link SOURCE_LOCALE} when nothing matches.
+ */
+export function resolveLocale(
+ setting: LocaleSetting,
+ preferredLanguages: readonly string[],
+): SupportedLocale {
+ if (setting !== "system" && isSupportedLocale(setting)) {
+ return setting;
+ }
+
+ for (const tag of preferredLanguages) {
+ const locale = findSupportedLocaleForLanguageTag(tag);
+ if (locale) {
+ return locale;
+ }
+ }
+
+ return SOURCE_LOCALE;
+}
+
+/**
+ * Resolve an AI-content language preference to the English name of the language
+ * the model should write generated content in — or `undefined` when the target
+ * resolves to the English {@link SOURCE_LOCALE}. Returning `undefined` lets
+ * callers omit the directive entirely, so the default (English) prompt is left
+ * byte-for-byte unchanged.
+ *
+ * `"match-app"` follows the UI `locale` setting (which itself may be
+ * `"system"`, resolved against `preferredLanguages`).
+ */
+export function resolveAiLanguageName(
+ setting: AiContentLanguage,
+ appLocale: LocaleSetting,
+ preferredLanguages: readonly string[],
+): string | undefined {
+ const locale = setting === "match-app" ? resolveLocale(appLocale, preferredLanguages) : setting;
+ if (locale === SOURCE_LOCALE) {
+ return undefined;
+ }
+ return LOCALE_ENGLISH_NAMES[locale];
+}
diff --git a/src/shared/messages.ts b/src/shared/messages.ts
index ad47d1e8..d11ac77e 100644
Binary files a/src/shared/messages.ts and b/src/shared/messages.ts differ
diff --git a/src/shared/settings.ts b/src/shared/settings.ts
index d2118fba..162a22bf 100644
--- a/src/shared/settings.ts
+++ b/src/shared/settings.ts
@@ -14,6 +14,7 @@ import {
threadRemoveActionSchema,
} from "./contracts";
import { DEFAULT_SEARCH_EXCLUDE } from "./searchExclude";
+import { AI_LANGUAGE_VALUES, LOCALE_SETTING_VALUES } from "./locale";
const modelPickerEntrySchema = z.object({
agentKind: z.string().min(1),
@@ -118,6 +119,20 @@ export const sharedSettingsSchema = z.object({
* base "default" theme at apply time.
*/
themePreset: z.string(),
+ /**
+ * UI language. `"system"` follows the OS/browser preferred language at
+ * runtime (resolved by `resolveLocale`), mirroring `themeMode: "system"`.
+ */
+ locale: z.enum(LOCALE_SETTING_VALUES).default("system"),
+ /**
+ * Language for AI-generated git text (commit messages, PR title/description).
+ * `"match-app"` follows the resolved UI `locale`; any other value pins a
+ * specific language. Defaults to `"en"` so shared/team-facing artifacts stay
+ * English regardless of the interface language. Thread titles and other
+ * "conversation" text instead always follow the app language and are not
+ * governed by this setting.
+ */
+ gitTextLanguage: z.enum(AI_LANGUAGE_VALUES).default("en"),
terminalPosition: terminalPositionSchema,
commitGenProvider: z.string(),
commitGenModel: z.string(),
@@ -309,6 +324,8 @@ export type SharedSettingsInput = Omit;
export const defaultSharedSettings: SharedSettings = {
themeMode: "dark",
themePreset: "default",
+ locale: "system",
+ gitTextLanguage: "en",
terminalPosition: "bottom",
commitGenProvider: "auto",
commitGenModel: "",
diff --git a/src/supervisor/commitMessageGenerator.test.ts b/src/supervisor/commitMessageGenerator.test.ts
index 56f8c48f..47c40bc2 100644
--- a/src/supervisor/commitMessageGenerator.test.ts
+++ b/src/supervisor/commitMessageGenerator.test.ts
@@ -232,6 +232,45 @@ describe("generateCommitMessage", () => {
await expect(pending).resolves.toBe("fix(git): restore Windows commit generation");
});
+ it("injects a language directive when a language is requested", async () => {
+ const child = createMockChildProcess();
+ spawnMock.mockReturnValue(child);
+
+ const pending = generateCommitMessage(
+ windowsProject,
+ createAdapter(),
+ undefined,
+ undefined,
+ "German",
+ );
+ await flushPromises();
+
+ const stdin = child.stdin.end.mock.calls[0]?.[0];
+ expect(stdin).toContain("Write the commit message subject and body in German");
+ // The Conventional Commits prefix must stay English so cleanCommitMessage's
+ // feat|fix|… detection still works.
+ expect(stdin).toContain("keep the Conventional Commits type prefix (feat, fix, …) in English");
+
+ child.stdout.emit("data", Buffer.from("feat(ui): Seitenleiste hinzufügen"));
+ child.emit("close", 0);
+ await expect(pending).resolves.toBe("feat(ui): Seitenleiste hinzufügen");
+ });
+
+ it("omits the language directive by default", async () => {
+ const child = createMockChildProcess();
+ spawnMock.mockReturnValue(child);
+
+ const pending = generateCommitMessage(windowsProject, createAdapter());
+ await flushPromises();
+
+ const stdin = child.stdin.end.mock.calls[0]?.[0];
+ expect(stdin).not.toContain("Write the commit message subject and body in");
+
+ child.stdout.emit("data", Buffer.from("feat(ui): add sidebar"));
+ child.emit("close", 0);
+ await expect(pending).resolves.toBe("feat(ui): add sidebar");
+ });
+
it("delegates to buildAgentCommand for WSL projects", async () => {
const child = createMockChildProcess();
spawnMock.mockReturnValue(child);
diff --git a/src/supervisor/commitMessageGenerator.ts b/src/supervisor/commitMessageGenerator.ts
index 4f5438e5..7d25e4f3 100644
--- a/src/supervisor/commitMessageGenerator.ts
+++ b/src/supervisor/commitMessageGenerator.ts
@@ -4,7 +4,7 @@ import { buildDiffPromptContext } from "./diffPromptContext";
import { GitService } from "./git";
import { runOneShotPromptWithFallback } from "./oneShotPromptRunner";
-const PROMPT =
+const PROMPT_RULES =
"Generate a git commit message for the following diff using the Conventional Commits format.\n" +
"Rules:\n" +
"- Format: (): \n" +
@@ -15,8 +15,20 @@ const PROMPT =
"- Use the changed files list as the source of truth for coverage\n" +
"- If multiple major areas changed, add a blank line then concise body bullets\n" +
"- Cover every major area; do not focus only on the largest or first diff\n" +
- "- If there are breaking changes, add a BREAKING CHANGE footer or use ! after the type\n" +
- "- Reply with only the commit message, nothing else\n\n";
+ "- If there are breaking changes, add a BREAKING CHANGE footer or use ! after the type\n";
+
+/**
+ * Build the commit-message instruction prompt. When `language` is set, the
+ * subject and body are written in that language while the Conventional Commits
+ * type prefix stays English (so `cleanCommitMessage`'s `feat|fix|…` detection
+ * and the convention itself are preserved).
+ */
+function buildPrompt(language?: string): string {
+ const languageRule = language
+ ? `- Write the commit message subject and body in ${language}; keep the Conventional Commits type prefix (feat, fix, …) in English\n`
+ : "";
+ return PROMPT_RULES + languageRule + "- Reply with only the commit message, nothing else\n\n";
+}
const COMMIT_MESSAGE_TIMEOUT_MS = 120_000;
@@ -83,6 +95,7 @@ export async function generateCommitMessage(
adapter: AgentAdapter,
model?: string,
effort?: string,
+ language?: string,
): Promise {
const effectiveModel = model ?? adapter.defaultOneShotModel;
if (!effectiveModel) {
@@ -114,6 +127,7 @@ export async function generateCommitMessage(
}
const sourceLabel = `Change source: ${source}`;
+ const prompt = buildPrompt(language);
const raw = await runOneShotPromptWithFallback({
location,
adapter,
@@ -124,11 +138,11 @@ export async function generateCommitMessage(
attempts: [
{
level: "full",
- buildPrompt: () => PROMPT + buildDiffPromptContext({ diff, files, sourceLabel }),
+ buildPrompt: () => prompt + buildDiffPromptContext({ diff, files, sourceLabel }),
},
{
level: "files-only",
- buildPrompt: () => PROMPT + buildDiffPromptContext({ diff: "", files, sourceLabel }),
+ buildPrompt: () => prompt + buildDiffPromptContext({ diff: "", files, sourceLabel }),
},
],
});
diff --git a/src/supervisor/prSummaryGenerator.ts b/src/supervisor/prSummaryGenerator.ts
index 8184ac83..f42b4d7d 100644
--- a/src/supervisor/prSummaryGenerator.ts
+++ b/src/supervisor/prSummaryGenerator.ts
@@ -4,26 +4,39 @@ import { buildDiffPromptContext, getFilesFromDiff } from "./diffPromptContext";
import { GitService } from "./git";
import { runOneShotPromptWithFallback } from "./oneShotPromptRunner";
-const PROMPT =
- "Generate a pull request title and description for the following changes.\n" +
- "Rules:\n" +
- "- The title should be a single line, at most 72 characters, imperative mood\n" +
- "- The description should be a concise markdown summary (2-5 bullet points)\n" +
- "- Focus on the what and why, not the how\n" +
- "- Use the changed files list as the source of truth for coverage\n" +
- "- Cover every major area; do not focus only on the largest or first diff\n" +
- "- Detect the PR type from the branch name and changes:\n" +
- " - fix/, bugfix/, hotfix/ prefixes or bug-related changes → Bugfix\n" +
- " - feat/, feature/ prefixes or new functionality → Feature\n" +
- " - If the PR covers multiple purposes (e.g. feature + refactor), note them\n" +
- "- Look for Jira/ticket IDs (pattern: 2-5 uppercase letters + dash + digits, e.g. SIT-123, TDNT-456, SN-78)\n" +
- " in both the branch name AND commit messages. Collect all unique ticket IDs found.\n" +
- " Include the primary ticket at the start of the title like: SIT-123: \n" +
- " and list all tickets at the top of the description, e.g. `Tickets: SIT-123, SIT-456`\n" +
- "- Reply with ONLY the following format, nothing else:\n" +
- "TITLE: \n" +
- "DESCRIPTION:\n" +
- "\n\n";
+/**
+ * Build the PR-summary instruction prompt. When `language` is set, the title
+ * and description prose are written in that language while the literal output
+ * markers (`TITLE:` / `DESCRIPTION:`) and ticket IDs stay English — both are
+ * parsed by `cleanPrSummary`, so they must not be localized.
+ */
+function buildPrompt(language?: string): string {
+ const languageRule = language
+ ? `- Write the title and description in ${language}; keep the literal labels TITLE: and DESCRIPTION: and any ticket IDs in English\n`
+ : "";
+ return (
+ "Generate a pull request title and description for the following changes.\n" +
+ "Rules:\n" +
+ "- The title should be a single line, at most 72 characters, imperative mood\n" +
+ "- The description should be a concise markdown summary (2-5 bullet points)\n" +
+ "- Focus on the what and why, not the how\n" +
+ "- Use the changed files list as the source of truth for coverage\n" +
+ "- Cover every major area; do not focus only on the largest or first diff\n" +
+ "- Detect the PR type from the branch name and changes:\n" +
+ " - fix/, bugfix/, hotfix/ prefixes or bug-related changes → Bugfix\n" +
+ " - feat/, feature/ prefixes or new functionality → Feature\n" +
+ " - If the PR covers multiple purposes (e.g. feature + refactor), note them\n" +
+ "- Look for Jira/ticket IDs (pattern: 2-5 uppercase letters + dash + digits, e.g. SIT-123, TDNT-456, SN-78)\n" +
+ " in both the branch name AND commit messages. Collect all unique ticket IDs found.\n" +
+ " Include the primary ticket at the start of the title like: SIT-123: \n" +
+ " and list all tickets at the top of the description, e.g. `Tickets: SIT-123, SIT-456`\n" +
+ languageRule +
+ "- Reply with ONLY the following format, nothing else:\n" +
+ "TITLE: \n" +
+ "DESCRIPTION:\n" +
+ "\n\n"
+ );
+}
const MAX_DIFF_CONTEXT_CHARS = 24_000;
const MAX_LOG_CHARS = 4000;
@@ -68,6 +81,7 @@ export async function generatePrSummary(
baseBranch: string,
model?: string,
effort?: string,
+ language?: string,
): Promise<{ title: string; description: string }> {
const effectiveModel = model ?? adapter.defaultOneShotModel;
if (!effectiveModel) {
@@ -103,6 +117,7 @@ export async function generatePrSummary(
const logSection = "Git log:\n" + truncate(log, MAX_LOG_CHARS);
const sourceLabel = `Branch diff: ${baseBranch}...${branch}`;
const files = diff.trim() ? getFilesFromDiff(diff) : [];
+ const instructions = buildPrompt(language);
const raw = await runOneShotPromptWithFallback({
location,
@@ -115,7 +130,7 @@ export async function generatePrSummary(
{
level: "full",
buildPrompt: () => {
- let prompt = PROMPT + branchHeader + logSection;
+ let prompt = instructions + branchHeader + logSection;
if (diff.trim()) {
prompt +=
"\n\n" +
@@ -132,7 +147,7 @@ export async function generatePrSummary(
{
level: "files-only",
buildPrompt: () => {
- let prompt = PROMPT + branchHeader + logSection;
+ let prompt = instructions + branchHeader + logSection;
if (files.length > 0) {
prompt += "\n\n" + buildDiffPromptContext({ diff: "", files, sourceLabel });
}
diff --git a/src/supervisor/runtime.ts b/src/supervisor/runtime.ts
index 403f1b58..e111386b 100644
--- a/src/supervisor/runtime.ts
+++ b/src/supervisor/runtime.ts
@@ -963,6 +963,7 @@ export class SupervisorRuntime {
adapter,
payload.model,
payload.effort,
+ payload.language,
),
};
}
@@ -976,6 +977,7 @@ export class SupervisorRuntime {
payload.prompt,
payload.model,
payload.effort,
+ payload.language,
),
};
}
@@ -989,6 +991,7 @@ export class SupervisorRuntime {
payload.baseBranch,
payload.model,
payload.effort,
+ payload.language,
);
}
diff --git a/src/supervisor/titleGenerator.ts b/src/supervisor/titleGenerator.ts
index a1909c3e..94e89c45 100644
--- a/src/supervisor/titleGenerator.ts
+++ b/src/supervisor/titleGenerator.ts
@@ -2,16 +2,28 @@ import type { ProjectLocation } from "@/shared/contracts";
import type { AgentAdapter } from "./agents/base";
import { prepareOneShot } from "./oneShotSpawn";
-const PROMPT =
- "Generate a concise title for a coding conversation based on the user's first message below.\n" +
- "Rules:\n" +
- "- Single line, at most 50 characters\n" +
- "- Focus on the user's intent, not tools or agents mentioned\n" +
- "- Match the language of the user's message\n" +
- "- Preserve technical terms, function names, file names, and libraries exactly\n" +
- "- No quotes, no prefix label, no markdown — just the title text\n" +
- "- Use sentence case (capitalize only the first word)\n" +
- "- Reply with only the title, nothing else\n\n";
+/**
+ * Build the title instruction prompt. With no `language`, the title matches the
+ * user's message language (default behavior). When `language` is set — i.e. the
+ * app is running in a non-English locale — that explicit directive replaces the
+ * match-the-message rule.
+ */
+function buildPrompt(language?: string): string {
+ const languageRule = language
+ ? `- Write the title in ${language}\n`
+ : "- Match the language of the user's message\n";
+ return (
+ "Generate a concise title for a coding conversation based on the user's first message below.\n" +
+ "Rules:\n" +
+ "- Single line, at most 50 characters\n" +
+ "- Focus on the user's intent, not tools or agents mentioned\n" +
+ languageRule +
+ "- Preserve technical terms, function names, file names, and libraries exactly\n" +
+ "- No quotes, no prefix label, no markdown — just the title text\n" +
+ "- Use sentence case (capitalize only the first word)\n" +
+ "- Reply with only the title, nothing else\n\n"
+ );
+}
const MAX_PROMPT_CHARS = 2000;
const TITLE_GEN_TIMEOUT_MS = 30_000;
@@ -63,6 +75,7 @@ export async function generateTitle(
prompt: string,
model?: string,
effort?: string,
+ language?: string,
): Promise {
const effectiveModel = model ?? adapter.defaultOneShotModel;
if (!effectiveModel) {
@@ -73,7 +86,7 @@ export async function generateTitle(
throw new Error(`${adapter.label} does not support one-shot generation`);
}
- const finalPrompt = PROMPT + truncatePrompt(prompt);
+ const finalPrompt = buildPrompt(language) + truncatePrompt(prompt);
// Prefer the SDK / structured-runtime path: no cold-start cost, no argv
// length limit. Fall back to spawning the CLI when the adapter only
diff --git a/tsconfig.json b/tsconfig.json
index e2594773..1a2ad340 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -25,6 +25,7 @@
"packages/agents-usage/src",
"vite.config.ts",
"tsdown.config.ts",
+ "lingui.config.ts",
"vitest.config.ts",
"vitest.integration.config.ts"
]
diff --git a/vite.config.ts b/vite.config.ts
index 63982f2c..56146e25 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -2,6 +2,7 @@ import { resolve } from "node:path";
import { defineConfig, loadEnv, type Plugin } from "vite";
import babel from "@rolldown/plugin-babel";
import react, { reactCompilerPreset } from "@vitejs/plugin-react";
+import { lingui } from "@lingui/vite-plugin";
const compilerPreset = reactCompilerPreset();
const DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com";
@@ -61,7 +62,19 @@ function reactDevtoolsStandalone(): Plugin {
}
export default defineConfig(({ mode }) => ({
- plugins: [reactDevtoolsStandalone(), react(), babel({ presets: [compilerPreset] })],
+ plugins: [
+ reactDevtoolsStandalone(),
+ react(),
+ // The Lingui macro must expand BEFORE the React Compiler. Babel applies
+ // `plugins` ahead of `presets`, so listing the macro as a plugin (with the
+ // compiler as a preset) guarantees that order within this single Babel pass.
+ // We use the Babel macro (not the SWC plugin) because this project transforms
+ // with Babel, sidestepping the SWC-plugin/runtime version-matching pitfalls.
+ babel({ plugins: ["@lingui/babel-plugin-lingui-macro"], presets: [compilerPreset] }),
+ // Compiles `.po` catalog imports into runtime message modules on the fly,
+ // so we never need a separate `lingui compile` step for the app build.
+ lingui(),
+ ],
base: "./",
define: {
...buildPostHogEnvDefines(mode),
diff --git a/vitest.config.ts b/vitest.config.ts
index dc09fea0..ad9ab29f 100644
--- a/vitest.config.ts
+++ b/vitest.config.ts
@@ -1,5 +1,7 @@
import { resolve } from "node:path";
import { defineConfig } from "vitest/config";
+import babel from "@rolldown/plugin-babel";
+import { lingui } from "@lingui/vite-plugin";
export default defineConfig({
test: {
@@ -17,10 +19,15 @@ export default defineConfig({
projects: [
{
extends: true,
+ // Expand Lingui macros (Trans/t/msg/useLingui) and resolve `.po` catalog
+ // imports in the renderer test bundle — the macros throw at runtime if
+ // left untransformed. (No React Compiler here; it is a build-only
+ // optimization and unnecessary for tests.)
+ plugins: [babel({ plugins: ["@lingui/babel-plugin-lingui-macro"] }), lingui()],
resolve: {
alias: {
- "@": resolve(__dirname, "src"),
- "~file-icons": resolve(__dirname, "node_modules/material-icon-theme/icons"),
+ "@": resolve(import.meta.dirname, "src"),
+ "~file-icons": resolve(import.meta.dirname, "node_modules/material-icon-theme/icons"),
},
},
test: {
@@ -34,7 +41,7 @@ export default defineConfig({
extends: true,
resolve: {
alias: {
- "@": resolve(__dirname, "src"),
+ "@": resolve(import.meta.dirname, "src"),
},
},
test: {
diff --git a/vitest.integration.config.ts b/vitest.integration.config.ts
index 0aff77cb..183ce82a 100644
--- a/vitest.integration.config.ts
+++ b/vitest.integration.config.ts
@@ -7,7 +7,7 @@ import { defineConfig } from "vitest/config";
export default defineConfig({
resolve: {
alias: {
- "@": resolve(__dirname, "src"),
+ "@": resolve(import.meta.dirname, "src"),
},
},
test: {