Repository navigation
feat(local): translate the desktop app into Japanese and German, open without a broken chat model, and add a dev app identity - #1911
Conversation
… Japanese and German
…as a pre-commit hook
…trings, tone and glossary
…hout the ICU parser
…he translate skill
…s and drop @formatjs/intl from main
…o from onboarding
|
@AnishSarkar22 is attempting to deploy a commit to the Rohan Verma's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…cons under build/icons
…y why A saved key the keychain can no longer decrypt, an unreachable provider or egress turned off used to stop startup at "SurfSense could not start", with no way to reach Settings. Startup now opens without that model and a notice attached to the composer names the reason and links to Settings. - backend: drop ProviderConnection.api_key's dead InvalidToken catch so an unreadable key raises UnreadableSecretError (409 unreadable_secret), as documented; mark test_secrets as unit so it runs - backend: code a failed connection model listing by what the endpoint did (provider_auth, provider_rate_limited, provider_unreachable, provider_error) - chat: egress off keeps the model selected and holds the composer; the notice's Allow… opens the egress consent dialog, so a send never raises it - chat: the notice follows the selected model (connection and name) and is checked again on model change, on closing Settings and after Allow - chat: the notice sits behind the composer's top edge without moving it, and the scroll-to-bottom arrow rises clear of it - models: show Retry beside a failed model list, not below it - electron: run development as "SurfSense Dev" so its keychain item never touches the installed app's key - i18n: new notice, placeholder and button strings in ja and de - docs: connections.md describes the codes, the notice and the egress flow
…d and dev icons in build/icons
…cOS icons Apple's margin
…e once the cause is fixed The saved chat model was checked twice, by startup and by the dashboard, with different rules. Startup cleared the model to say it couldn't be used, which left the dashboard nothing to check again, so a notice stayed until a reload even after the key was re-entered in Settings. - availability.ts: one check, used by startup and the dashboard, answering available, gone, needs-consent or unusable - startup keeps the saved model whatever its status and passes that status on, so the dashboard doesn't check the same model twice - the dashboard checks again when the model changes, when Settings closes and after Allow, so fixing the cause clears the notice without a reload - the notice is derived from the status; the composer is held whenever a send couldn't go anywhere - chat rows are named by their title, with the time read as a description, instead of "Q3 rollup2 weeks ago" - an unknown license state shows as no license instead of crashing the dashboard - the citation context moves to its own file so fast refresh keeps working - the podcast brief and upload validation tests are marked unit so they run - tests: recovery after Settings closes, the egress notice following the selected model's host, launch keeping the saved model; stale expectations for the source count, message failures and the new-chat placeholder updated - docs: connections.md describes the single check, its statuses and when it runs again
What
react-intlin the renderer and@formatjs/clito extract, compile and verify. All three catalogs are precompiled and bundled, so nothing is fetched at run time and the build needs no network, which suits the air-gapped app.formatMessagecall andformatjs extractgeneratesen.json.ja.jsonandde.jsonare translated with the newtranslateskill, which holds the key naming, tone and glossary.formatjs verifyand a project check for id prefixes, apostrophes and file layout. A test also checks each language's plural categories.en-XApseudo-locale for development only, to spot overflow and text that isn't in a message. Production builds don't contain it.@formatjs/intl, and its bundle shrinks from about 349 KB to about 35 KB.pytest -m unitskipped.build/icons/.architecture/localization.md, ADR 0029 (ICU catalogs) and ADR 0030 (FormatJS), plus updates toconnections.mdandpackaging.md.Why
Fixes #
How to test