Add full Italian translation across all 8 namespaces (common, launch,
editor, timeline, settings, dialogs, shortcuts, extensions). Register
'it' in SUPPORTED_LOCALES, wire bundle in I18nContext, and add
"Italiano" label to MorePopover and SettingsPanel language selectors.
i18n:check reports no missing/extra keys for the new locale.
- Default preference to 'system' so first-run users get OS preference detection
- Set data-theme attribute on documentElement alongside .dark class toggle
- Create missing ThemeContext.tsx (build-breaking)
- Fix text contrast on blue accent backgrounds (use text-white on bg-[#2563EB])
- Fix PlaybackControls border to use border-white/10 (dark overlay)
- Fix ExportSettingsMenu/FormatSelector active state text for light mode
- Fix ProjectBrowserDialog placeholder text on dark gradient
- Fix SettingsPanel dot preview border, accent text, hover text, X button text
- Fix TimelineEditor tooltip text and custom aspect input borders/bg
- Fix TutorialHelp malformed CSS class and kbd backgrounds
- Fix KeyboardShortcutsHelp kbd backgrounds for light mode
- Fix ExtensionManager badge text on blue pill
- Fix AnnotationSettingsPanel upload button hover text
- Fix index.css light mode timeline colors (was identical to dark)
Add complete Korean translation across all 7 namespaces:
common, launch, editor, timeline, settings, dialogs, shortcuts.
All 403 translation keys covered. Passes npm run i18n:check.
normalizeLocale now correctly maps Windows-style locale strings
(e.g. "zh-Hans-CN") to "zh-CN" by trying lang-region before falling
back to the base language. Bare "zh" is also mapped to "zh-CN".
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>