Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
c056ce1
MAESTRO: add i18n infrastructure with i18next, locale detection, and …
openasocket Mar 11, 2026
3a04225
MAESTRO: add locale directory structure for 8 non-English languages
openasocket Mar 11, 2026
27df86e
MAESTRO: add locale detection IPC bridge with system language mapping
openasocket Mar 11, 2026
b506c5e
MAESTRO: integrate i18n initialization into React renderer entry point
openasocket Mar 11, 2026
6b5de63
MAESTRO: add language setting to settings store with RTL and document…
openasocket Mar 11, 2026
339a16b
MAESTRO: add useI18n hook, i18n types, and i18next module augmentatio…
openasocket Mar 11, 2026
6d09287
MAESTRO: refactor formatRelativeTime() to locale-aware Intl.RelativeT…
openasocket Mar 11, 2026
de21450
MAESTRO: refactor formatElapsedTime() and formatActiveTime() to local…
openasocket Mar 11, 2026
7284b69
MAESTRO: refactor formatSize() to locale-aware Intl.NumberFormat
openasocket Mar 11, 2026
5650894
MAESTRO: refactor formatCost() to locale-aware Intl.NumberFormat curr…
openasocket Mar 11, 2026
7f136a4
MAESTRO: refactor formatTokens() and formatTokensCompact() to locale-…
openasocket Mar 11, 2026
529de49
MAESTRO: replace hardcoded 'en-US' locale with getActiveLocale() acro…
openasocket Mar 11, 2026
fb1ddc5
MAESTRO: add i18n translation key naming convention and example trans…
openasocket Mar 11, 2026
ef9a205
MAESTRO: add <T> convenience component for inline i18n translations
openasocket Mar 11, 2026
520e75c
MAESTRO: add tNotify() i18n-aware toast notification helper
openasocket Mar 11, 2026
d6aa9de
MAESTRO: add i18n extraction audit script for tracking untranslated s…
openasocket Mar 11, 2026
3c09436
MAESTRO: add i18n constantKeys.ts and shortcuts namespace for non-Rea…
openasocket Mar 11, 2026
e9d2363
MAESTRO: add tailwindcss-rtl plugin for RTL layout support
openasocket Mar 11, 2026
156fced
MAESTRO: add DirectionProvider for RTL-aware layout direction management
openasocket Mar 11, 2026
da39d37
MAESTRO: convert SessionList, MainPanel, RightPanel from fixed LTR to…
openasocket Mar 11, 2026
bbe3b4c
MAESTRO: add directional icon flipping for RTL layouts
openasocket Mar 11, 2026
23100ae
MAESTRO: add RTL-specific CSS overrides for scrollbars, borders, shad…
openasocket Mar 11, 2026
9a3b640
MAESTRO: extract all hardcoded strings from SettingsModal.tsx to i18n
openasocket Mar 11, 2026
a29a101
MAESTRO: extract all hardcoded strings from EncoreTab.tsx to i18n
openasocket Mar 11, 2026
eca3540
MAESTRO: extract all hardcoded strings from settings-adjacent shared …
openasocket Mar 11, 2026
3efa4f4
MAESTRO: extract all hardcoded strings from HamburgerMenuContent.tsx …
openasocket Mar 11, 2026
c7cd7fe
MAESTRO: extract all hardcoded strings from QuickActionsModal.tsx to …
openasocket Mar 11, 2026
8258885
MAESTRO: extract all hardcoded strings from SessionContextMenu.tsx to…
openasocket Mar 11, 2026
6f57f30
MAESTRO: extract all hardcoded strings from SessionItem.tsx and Sessi…
openasocket Mar 11, 2026
87d54f1
MAESTRO: extract all shortcut label strings from shortcuts.ts to i18n
openasocket Mar 12, 2026
e8d70ba
MAESTRO: extract all hardcoded strings from top 10 modal components t…
openasocket Mar 12, 2026
9661d6c
MAESTRO: extract all hardcoded strings from remaining modal component…
openasocket Mar 12, 2026
b4d4b50
MAESTRO: extract all toast notification strings to i18n via tNotify()
openasocket Mar 12, 2026
8dabf89
MAESTRO: extract all hardcoded strings from Wizard, Tour, and InlineW…
openasocket Mar 12, 2026
a289836
MAESTRO: extract all hardcoded strings from InputArea and shortcutFor…
openasocket Mar 12, 2026
d084c4e
MAESTRO: extract all hardcoded strings from MainPanel, TabBar, FilePr…
openasocket Mar 12, 2026
814d69c
MAESTRO: extract hardcoded strings from RightPanel, History, conducto…
openasocket Mar 12, 2026
e0c9bbd
MAESTRO: extract all hardcoded strings from web/mobile components to …
openasocket Mar 12, 2026
ac4de51
MAESTRO: add Language selector dropdown to Settings General tab
openasocket Mar 13, 2026
5a9fdee
MAESTRO: extract all hardcoded aria-label strings to i18n accessibili…
openasocket Mar 13, 2026
aa8e8b4
MAESTRO: add language indicator to hamburger menu
openasocket Mar 13, 2026
43f9825
MAESTRO: add missing ARIA attributes for WCAG 2.1 AA compliance
openasocket Mar 13, 2026
fdfc338
MAESTRO: add CodeText component for WCAG 2.1 SC 3.1.2 lang attribute …
openasocket Mar 13, 2026
46d5e3f
MAESTRO: bundle all locale resources and ensure language persists acr…
openasocket Mar 13, 2026
ca25d49
MAESTRO: add missing translation fallback handlers and loading state …
openasocket Mar 13, 2026
ac5d1c3
MAESTRO: implement RTL-aware keyboard navigation for arrow keys
openasocket Mar 13, 2026
b67e6fa
MAESTRO: add LiveRegion for screen reader announcements of dynamic st…
openasocket Mar 13, 2026
aa112e5
MAESTRO: produce complete Spanish (es) translations for all 7 i18n na…
openasocket Mar 13, 2026
ab1f3da
MAESTRO: produce complete French (fr) translations for all 7 i18n nam…
openasocket Mar 13, 2026
f99c376
MAESTRO: produce complete German (de) translations for all 7 i18n nam…
openasocket Mar 13, 2026
2c0b295
MAESTRO: produce complete Mandarin Chinese (zh) translations for all …
openasocket Mar 13, 2026
7fbe999
MAESTRO: produce complete Arabic (ar) translations for all 7 i18n nam…
openasocket Mar 13, 2026
9ed5cc7
MAESTRO: produce complete Bengali (bn) translations for all 7 i18n na…
openasocket Mar 13, 2026
e3c0a26
MAESTRO: add automated i18n translation validation script
openasocket Mar 13, 2026
bd1f4e0
MAESTRO: add i18n integration tests covering config, formatters, RTL,…
openasocket Mar 13, 2026
d4a0508
MAESTRO: add contributor guide for adding new i18n languages
openasocket Mar 14, 2026
0560c24
MAESTRO: add i18n end-to-end smoke test covering all 9 languages
openasocket Mar 14, 2026
4dd6bc1
MAESTRO: extract ThemeTab mode labels and Custom Theme header to i18n…
openasocket Mar 14, 2026
4a75818
MAESTRO: verify theme/i18n switching independence with integration tests
openasocket Mar 14, 2026
98f0779
MAESTRO: verify theme and RTL CSS custom properties don't collide
openasocket Mar 14, 2026
a27c4ed
MAESTRO: add language broadcast to web client for i18n direction sync
openasocket Mar 14, 2026
17dc407
MAESTRO: extract Custom Theme Builder strings to i18n keys
openasocket Mar 14, 2026
f4cf444
MAESTRO: add cache stability comment to MermaidRenderer theme key
openasocket Mar 14, 2026
c5e0481
MAESTRO: add i18n theme integration smoke tests (I18N-13)
openasocket Mar 14, 2026
9b2bc5e
MAESTRO: add RTL-aware coordinate utility for touch gestures and posi…
openasocket Mar 14, 2026
9a91f0d
MAESTRO: add RTL support to CommandHistoryDrawer swipe-to-delete gest…
openasocket Mar 14, 2026
4a0437f
MAESTRO: add RTL support to ResponseViewer touch navigation and posit…
openasocket Mar 14, 2026
a1cbdbd
MAESTRO: add RTL support to SessionPillBar scroll targeting and posit…
openasocket Mar 14, 2026
471a881
MAESTRO: add RTL support to MobileHistoryPanel swipe gestures and pos…
openasocket Mar 14, 2026
2b052c2
MAESTRO: add RTL support to static positioning in remaining mobile co…
openasocket Mar 14, 2026
6dee14e
MAESTRO: fix pre-existing Prettier formatting issues
openasocket Mar 14, 2026
27a41e5
MAESTRO: add RTL-aware ToggleSwitch component replacing inline transl…
openasocket Mar 14, 2026
750677a
MAESTRO: convert AchievementCard left/right positioning to CSS logica…
openasocket Mar 14, 2026
9a8a838
MAESTRO: add RTL integration tests for touch gestures and dynamic pos…
openasocket Mar 14, 2026
b4a2675
MAESTRO: fix pre-existing Prettier formatting issues
openasocket Mar 14, 2026
fdafceb
MAESTRO: replace duplicate formatBytes in UpdateCheckModal with share…
openasocket Mar 14, 2026
a85f5c1
MAESTRO: fix pre-existing Prettier formatting issues
openasocket Mar 14, 2026
c6c857b
MAESTRO: replace all hardcoded/missing locale args in date/time forma…
openasocket Mar 15, 2026
2a101f8
MAESTRO: initialize i18n in the Electron main process (I18N-15)
openasocket Mar 15, 2026
82f058e
MAESTRO: fix pre-push hook failures from non-parseable files
openasocket Mar 15, 2026
da11629
MAESTRO: translate Electron native dialog titles via mainT() (I18N-15)
openasocket Mar 15, 2026
0e5a1e9
MAESTRO: add mainT() mocks to system and debug handler tests (I18N-15)
openasocket Mar 15, 2026
5435505
MAESTRO: translate main-process error messages via mainT() (I18N-15)
openasocket Mar 15, 2026
56948c3
MAESTRO: extract WizardConversationView error strings to i18n (I18N-15)
openasocket Mar 15, 2026
2a3af39
MAESTRO: extract status text mappings to i18n keys (I18N-15)
openasocket Mar 15, 2026
b5dac5f
MAESTRO: add dual-index search to command palette (I18N-15)
openasocket Mar 16, 2026
f03eb08
MAESTRO: document PWA manifest i18n decision — keep English (I18N-15)
openasocket Mar 16, 2026
a81578a
MAESTRO: document system prompts English-only architectural decision …
openasocket Mar 16, 2026
80c2983
MAESTRO: add CI bundle size gate for translation files (I18N-15)
openasocket Mar 16, 2026
d2d39c4
MAESTRO: replace hardcoded notification error strings with mainT() i1…
openasocket Mar 16, 2026
d48952f
MAESTRO: extract remaining hardcoded strings, add Chinese translation…
openasocket Mar 16, 2026
3b81181
MAESTRO: i18n EmptyStateView, QueuedItemsList, Toast + first-pass tra…
openasocket Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ jobs:
- run: npx prettier --check .
- run: npx eslint src/
- run: npm run lint # TypeScript type checking
- run: npm run i18n:size-check # Translation bundle size budget

test:
runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ node_modules/
coverage/
*.min.js
.gitignore
.claude/
550 changes: 282 additions & 268 deletions docs/releases.md

Large diffs are not rendered by default.

187 changes: 180 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 12 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,10 @@
"test:integration:watch": "vitest --config vitest.integration.config.ts",
"test:performance": "vitest run --config vitest.performance.config.mts",
"refresh-speckit": "node scripts/refresh-speckit.mjs",
"refresh-openspec": "node scripts/refresh-openspec.mjs"
"refresh-openspec": "node scripts/refresh-openspec.mjs",
"i18n:audit": "npx tsx scripts/i18n-audit.ts",
"i18n:validate": "npx tsx scripts/i18n-validate.ts",
"i18n:size-check": "npx tsx scripts/i18n-size-check.ts"
},
"build": {
"npmRebuild": false,
Expand Down Expand Up @@ -240,13 +243,19 @@
"electron-store": "^8.1.0",
"electron-updater": "^6.6.2",
"fastify": "^4.25.2",
"i18next": "^25.8.17",
"i18next-browser-languagedetector": "^8.2.1",
"i18next-fs-backend": "^2.6.1",
"i18next-http-backend": "^3.0.2",
"i18next-resources-to-backend": "^1.2.1",
"js-tiktoken": "^1.0.21",
"marked": "^17.0.1",
"mermaid": "^11.12.1",
"node-pty": "^1.1.0",
"qrcode": "^1.5.4",
"qrcode.react": "^4.2.0",
"react-diff-view": "^3.3.2",
"react-i18next": "^16.5.6",
"react-markdown": "^10.1.0",
"react-syntax-highlighter": "^16.1.0",
"reactflow": "^11.11.4",
Expand Down Expand Up @@ -304,6 +313,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"tailwindcss": "^3.4.1",
"tailwindcss-rtl": "^0.9.0",
"typescript": "^5.3.3",
"typescript-eslint": "^8.50.1",
"vite": "^5.0.11",
Expand All @@ -315,7 +325,7 @@
},
"lint-staged": {
"*": [
"prettier --write"
"prettier --write --ignore-unknown"
],
"*.{js,cjs,mjs,jsx,ts,tsx,mts,cts}": [
"eslint --fix"
Expand Down
Loading