Commit Graph

67697 Commits

Author SHA1 Message Date
Vincent Koc
cb31650290 fix(android): localize node device metadata 2026-07-12 13:26:39 +02:00
Vincent Koc
a98ce19e59 fix(android): localize skill workshop statuses 2026-07-12 13:26:39 +02:00
Vincent Koc
de0efd5445 refactor(android): mark presence platform as metadata 2026-07-12 13:26:39 +02:00
Vincent Koc
26692f6915 fix(android): retain localized transient presentation 2026-07-12 13:26:39 +02:00
Vincent Koc
d0ca7d2a24 style(android): wrap presence locale assertion 2026-07-12 13:26:39 +02:00
Vincent Koc
099c261541 fix(android): keep presence metadata locale neutral 2026-07-12 13:26:39 +02:00
Vincent Koc
c5f94adef4 fix(android): localize settings and thinking presentation 2026-07-12 13:26:39 +02:00
Vincent Koc
c984bf0e8b fix(android): type approval command presentation 2026-07-12 13:26:39 +02:00
Vincent Koc
e5932778f4 fix(android): keep cron detail localization reactive 2026-07-12 13:26:39 +02:00
Vincent Koc
1b87391658 fix(android): close locale review gaps 2026-07-12 13:26:39 +02:00
Vincent Koc
be900f2116 fix(android): refresh localized retained presentation 2026-07-12 13:26:39 +02:00
Vincent Koc
71db13d4c3 fix(android): localize command and overview models 2026-07-12 13:26:39 +02:00
Vincent Koc
d0fc18fba8 fix(android): keep voice status semantics locale-safe 2026-07-12 13:26:39 +02:00
Vincent Koc
0026e67488 test(android): keep approval layout guard localization-safe 2026-07-12 13:26:39 +02:00
Vincent Koc
81b2a91d9a docs(changelog): note Android runtime localization 2026-07-12 13:26:39 +02:00
Vincent Koc
6e6213e7b9 fix(android): refresh retained gateway status text 2026-07-12 13:26:39 +02:00
Vincent Koc
928d1935a6 fix(android): refresh retained voice and chat text 2026-07-12 13:26:39 +02:00
Vincent Koc
1cf227cf19 feat(android): add locale-aware retained text 2026-07-12 13:26:39 +02:00
Vincent Koc
5dbcfac2a4 fix(android): prefer real locale translations 2026-07-12 13:26:39 +02:00
Vincent Koc
ad98a6e5ca style(i18n): satisfy checker control-flow lint 2026-07-12 13:26:39 +02:00
Vincent Koc
6dffe0dc28 fix(i18n): type contradiction diagnostics 2026-07-12 13:26:39 +02:00
Vincent Koc
78e2a64808 style(i18n): format Android localization checker 2026-07-12 13:26:39 +02:00
Vincent Koc
d91ae52040 test(android): scan values resource aliases 2026-07-12 13:26:39 +02:00
Vincent Koc
06b2be86c3 fix(android): scope locale context lint suppression 2026-07-12 13:26:39 +02:00
Vincent Koc
56ca704433 test(android): include XML resource references 2026-07-12 13:26:39 +02:00
Vincent Koc
f6a3448658 fix(android): keep localized labels out of state 2026-07-12 13:26:39 +02:00
Vincent Koc
bd52ff5f5f test(android): cover settings model localization 2026-07-12 13:26:39 +02:00
Vincent Koc
4c6f171b9b fix(android): localize remaining settings actions 2026-07-12 13:26:39 +02:00
Vincent Koc
6dbcbd49fa fix(android): apply localization formatting 2026-07-12 13:26:39 +02:00
Vincent Koc
08cf91606d test(android): align localization helper indentation 2026-07-12 13:26:39 +02:00
Vincent Koc
5e3f04248d test(android): satisfy localization helper formatting 2026-07-12 13:26:39 +02:00
Vincent Koc
37c4b740b2 fix(i18n): exclude generated Android resources 2026-07-12 13:26:39 +02:00
Vincent Koc
2a32dcafea build(android): regenerate localization resources 2026-07-12 13:26:39 +02:00
Vincent Koc
b5844bbba2 test(android): harden localization coverage checks 2026-07-12 13:26:39 +02:00
Vincent Koc
f8bcf1d1d6 fix(android): localize settings and cron helpers 2026-07-12 13:26:39 +02:00
Vincent Koc
bd81763cd0 fix(android): localize connection chat and voice states 2026-07-12 13:26:39 +02:00
Vincent Koc
26e28ab2e3 fix(android): format localization fallbacks 2026-07-12 13:26:39 +02:00
Vincent Koc
ea8cadaf75 feat(android): localize chat sessions and voice 2026-07-12 13:26:39 +02:00
Vincent Koc
fc96ddf0e0 feat(android): localize settings surfaces 2026-07-12 13:26:39 +02:00
Vincent Koc
2c19c8d4d2 feat(android): localize onboarding and navigation 2026-07-12 13:26:39 +02:00
Vincent Koc
869d1b0238 feat(android): localize platform feedback 2026-07-12 13:26:39 +02:00
Vincent Koc
c03d64558f feat(android): generate native localization resources 2026-07-12 13:26:39 +02:00
Peter Steinberger
e864155d74 ci(performance): accept disabled gateway health proof (#105324) 2026-07-12 12:22:13 +01:00
Vincent Koc
871a92e5d9 fix(qa): use graceful Matrix replay restart (#105317) 2026-07-12 13:18:27 +02:00
Peter Steinberger
91175d0662 fix(gateway): accept shared macOS platform pins (#105311)
* fix(gateway): accept shared macOS platform pins

* chore(pr): keep release notes in PR body
2026-07-12 12:12:58 +01:00
Vincent Koc
98f2dc89df refactor(gateway): remove stale testing aliases (#105312) 2026-07-12 13:11:35 +02:00
Peter Steinberger
6bf84e0eb4 fix(ui): preserve current worktree branches (#105313) 2026-07-12 12:10:52 +01:00
Peter Steinberger
f94a359338 improve(ui): fold the New session target controls into click menus (#105265)
* improve(ui): fold the new-session targets into click menus

The /new target controls become Cursor-style trigger menus instead of an
inline control row: a folder trigger opens the directory browser as a
floating panel (with editable path in its head for manual entry), and a
where trigger opens one menu holding Gateway/node selection plus the
worktree toggle with labeled base-branch/name fields; the agent picker
becomes a menu when several agents exist. Triggers show live labels
(folder basename, node name, a branch badge when a worktree is on), so
the row stays one quiet line even on phones. Menus reuse the shared
session-menu item styles and the chat composer's details/summary
dismissal contract (outside pointerdown, Escape restores trigger focus).
Node-bound drafts no longer show an inert worktree toggle; the item
disappears because managed worktrees are Gateway-only.

* fix(ui): harden the new-session trigger menus

Review fixes: the folder trigger no longer shows the Gateway workspace
basename for node sessions (an empty node folder means that node's
default directory); sibling menus now close on the details toggle so
keyboard-opened menus stay mutually exclusive; and phone menus anchor to
the trigger row full-width so a wide browser panel under a non-leftmost
trigger cannot overflow the viewport.

* fix(ui): keep filesystem roots visible in the folder trigger

folderDisplayName falls back to the raw path so picking '/' (or a drive
root) labels the trigger instead of leaving it blank.

* fix(ui): give the new-session menus the native-select keyboard contract

Opening a menu moves focus to its first item, ArrowUp/Down wrap through
the items (browser rows included), and Home/End jump to the edges,
restoring what the replaced native selects provided. Re-picking the
checked agent no longer resets the draft (the native select never fired
change for the same option).

* fix(ui): keep native key behavior in menu text fields

Menu arrow/Home/End navigation now ignores events from text inputs so
the browser path, base-branch (datalist), and worktree-name fields keep
their native caret and picker behavior.

* fix(ui): let typed paths apply without a directory listing

Admins on hosts without a working fs.listDir keep manual folder entry:
the browser head input tracks a draft path and Use this folder applies a
typed absolute path even when listing fails; shapeless fs.listDir
payloads render as an empty directory instead of crashing the render.
The folder menu also initializes browser state before the focus hook
captures updateComplete, so keyboard-opened menus focus their first row
as advertised.

* fix(ui): apply exactly the shown browser path

Use this folder now applies the head input's absolute path only; the
draft syncs to every listed directory, so browsing is unchanged while an
edited path can never lose to a stale listing.

* fix(ui): let the browser express host-default directories

Review fixes: a cleared path input now applies '' — the host's default
directory (workspace on the Gateway, home on a node) — restoring the
state the replaced clearable folder textbox could express, and directory
results no longer overwrite a path the user typed while the listing was
in flight. E2E covers clearing back to the node default.

* fix(ui): apply the requested directory during browser navigation

loadBrowser assigns the head input the destination it is fetching, so a
mid-flight Use this folder applies where the user is heading instead of
the directory they just left.
2026-07-12 12:09:53 +01:00
Vincent Koc
6f820f9e6c fix(qa): wait for Control UI composer readiness (#105309) 2026-07-12 13:05:32 +02:00
Peter Steinberger
04e8aeb784 fix(ui): default worktrees to current branch (#105304) 2026-07-12 11:54:15 +01:00