Internationalization
- Fixed several duration and relative-time strings that were hardcoded in English and rendered in English regardless of the selected language. These affected every non-English build (originally flagged on the Chinese build).
- Added a shared
formatDuration()helper so chapter-span (Timeline) and summary-stats durations are built from localized parts instead of assembled in code. - Localized the "N years ago" label in the On This Day view.
- Moved the visibility-cascade wording ("member of '...'", "all member chapters hidden...") out of code and into localized labels.
- New strings translated across all nine locales (en, fr, de, es, it, pt, zh_CN, zh_HK).
Tooling and CI
- Added an ESLint 9 flat config with a
npm run lintscript and a dedicated CI lint job. Rules-of-hooks is a hard error; the newer React Compiler advisory rules run as warnings so they surface without blocking CI. - Fixed the genuine issues surfaced on first lint run (missing i18n keys, intentional empty catch blocks).
Dependencies
- Updated
@glance-apps/intentsto 1.4.0 and pinned both@glance-apps/intentsand@glance-apps/syncto exact versions.
Documentation
- Added the glance-intents transport reference and CONTRIBUTING notes for the lint workflow.