What's Changed
- docs: add v2.3.9 changelog
- chore: bump version to 2.3.9
- fix: community widget idempotency guard + suppress missing i18n help keys
- feat(feeds): add NHK World and Nikkei Asia RSS feeds for Japan coverage
- feat(feeds): add NHK World and Nikkei Asia RSS feeds for Japan coverage
- fix(i18n): remove dead English fallback literals in StoryModal
- fix(i18n): remove dead English fallback literals in CountryIntelModal
- feat(i18n): add Japanese locale (1132 keys)
- fix(i18n): replace remaining hardcoded English in source and locales
- fix(i18n): normalize regional language codes in RTL detection
- fix(i18n): fix 5 P1/P2 bugs — timeAgo count, community widget, Linux AppImage, locale gaps, lang normalization
- feat(i18n): eliminate ~95 hardcoded English strings and remove dead UTC clock
- fix(css): restore intel-findings context menu styles removed in afccb1c
- fix(community): point discussion link to main discussions page
- style(community): vibrant green accent for discussion pill widget
- feat(i18n): add Arabic (RTL) and Chinese Simplified locales
- fix(css): remove broken @import for missing lang-switcher and rtl-overrides
- fix(trending): proper-noun heuristic handles headline-start and lowercase terms
- feat: add community discussion floating pill widget
- feat: add floating pill community discussion widget
- fix(trending): add proper-noun heuristic fallback when ML unavailable
- fix(trending): add proper-noun heuristic fallback when ML unavailable
- feat(i18n): add Russian locale and fix key parity across all 10 languages
- fix(i18n): localize remaining map/tooltips/popups and close locale gaps
- fix(i18n): localize remaining UI literals and expand locale coverage
- fix(trending): add missing English stopwords to suppressed terms
- fix(trending): add missing English stopwords to suppressed terms
- fix(i18n): close key coverage gaps and localize merged UI strings
- fix(css): define --panel-bg and --panel-border theme variables
- fix: resolve findings toggle state and badge listener lifecycle
- feat: add toggle to disable Intelligence Findings badge
- i18n: restructure and translate popups section across all locales
- fix(i18n): Propagate common keys to all 9 locale files & fix CountryBriefPage
- fix(i18n): Translate remaining title attributes and panel-empty strings
- fix(i18n): Final deep scan - translate panel-empty, export, and disabled sources strings
- fix(i18n): Replace all showLoading/showError hardcoded strings across 19 panels
- fix(i18n): Replace all remaining hardcoded strings in PizzInt, Playback, Monitor, DeckGLMap
- fix(i18n): Replace remaining hardcoded strings with t() calls in 12 components
- feat(i18n): Implement full internationalization support for 9 languages and add Linux AppImage config
Full Changelog: v2.3.8...v2.3.9