Commit Graph

40 Commits

Author SHA1 Message Date
Peter Steinberger edf1777ddb refactor(i18n): re-key native i18n artifacts to content-hash identity (v2) (#123347)
* refactor(i18n): re-key native i18n artifacts to content-hash identity (v2)

The native inventory stored a write-only 'line' field per entry, so any
unrelated edit above a string rewrote apps/.i18n/native-source.json
(~half of all commits touching it were pure line-number churn). Identity
was (surface, path, source), duplicating the same string per file
(5385 entries for 4187 unique pairs) and churning IDs on file moves.
Locale artifacts were positional arrays repeating full English source
text, so one inserted string rewrote diff spans in all 21 files.

v2 artifacts: inventory entries keyed by (surface, source) with merged
per-site {path, kind} lists and pure sha256 content-hash IDs; locale
files become id-keyed sorted translation maps. Existing translations
carry over by source match with a deterministic duplicate pick; the
sticky-ID reuse machinery and positional validation are deleted.
Everything under apps/.i18n plus generated platform locale artifacts is
marked linguist-generated. ci-changed-scope gains a one-time
owner-complete migration escape mirroring the control-ui precedent.

CLI surface (baseline/check/sync/verify) and the locale-refresh
workflow are unchanged.

* ci: register run-attempt-state test in its Vitest lane

Commit e04dfd26e2 added extensions/codex/src/app-server/run-attempt-state.test.ts
without a lane owner, so the full-suite ownership audit
(test/vitest-projects-config.test.ts) fails on main. Register it in the
attempt-light shard alongside its run-attempt siblings.
2026-08-13 19:39:32 -07:00
qingminlong cb2965ddde fix(scripts): use direct-run helper for Windows guards (#110877)
* fix(scripts): normalize Windows direct-run guards

* test(scripts): cover direct-run routing

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-04 23:11:12 +08:00
WhatsSkiLL 47f8c1d6b0 Android: add adaptive app navigation sidebar (#113908)
* feat(android): add adaptive navigation sidebar

* fix(android): satisfy native i18n checks

* fix(android): use adaptive Material navigation

* fix(android): preserve adaptive navigation state

* chore(i18n): refresh native source baseline

* fix(android): keep compact navigation labels on one line

* chore(android): refresh native i18n source lines

* fix(android): preserve sidebar gateway status

* fix(android): satisfy status label checks

---------

Co-authored-by: Colin <colin@solvely.net>
2026-07-30 17:27:45 -04:00
Vincent Koc 4896416521 fix(android): preserve generated lint suppressions (#115501) 2026-07-29 11:37:40 +08:00
Vincent Koc 4990ac3aa9 fix(i18n): cover Android flavor surfaces 2026-07-24 15:26:58 +08:00
Vincent Koc 1908ea1df4 fix(i18n): suppress lint on generated Wear translations 2026-07-21 18:42:12 +08:00
Vincent Koc c6c1151c3a build(i18n): generate Wear locale resources 2026-07-21 17:36:49 +08:00
Peter Steinberger 262deec72c feat(mobile): session Dashboard on iOS and Android via authenticated Control UI webview (#112163)
* feat(mobile): session dashboard screens on iOS and Android via authenticated Control UI webview

* fix(android): keep configured Control UI base path in session dashboard URL

* docs(android): note system-trust boundary of the shared Control UI webview

* fix(android): origin-only document-start rule for Control UI auth script

* chore(i18n): refresh native inventory on rebased head

* fix(ios): swiftlint closure form in session dashboard toolbar

* fix(i18n): tolerate workflow-owned pending native rows in PR alignment checks

* fix(android): KTX toUri per lint and refresh native inventory

* fix(android): ktlint import order incl. main-inherited fleet test, refresh inventory
2026-07-21 01:13:23 -07:00
Peter Steinberger e0b1a39d2a improve(i18n): generate native locales after merge (#111557)
* ci(i18n): move native locale generation post-merge

* fix(i18n): allow generated Android companions
2026-07-19 15:42:41 -07:00
Peter Steinberger b57660d024 fix(apps): call chat sessions threads (#111038)
* fix(apps): call chat sessions threads

* test(apps): update thread wording expectations

* fix(i18n): guard retained Android translations
2026-07-18 20:34:12 -07:00
Peter Steinberger e5ac755681 fix(i18n): regenerate derived app catalogs inside native:i18n:sync (#110454)
Rewriting apps/.i18n/native-source.json without regenerating the derived
Android/Apple artifacts lands a stale iOS catalog and turns the repo-wide
apple/android i18n checks red for every PR (this is how main broke after
recent app-string additions: the inventory and translations were
committed while Localizable.xcstrings was not regenerated).

native-app-i18n.ts sync --write now chains syncAndroidAppI18n and a new
exported syncAppleAppI18n (catalog + InfoPlist strings) so one command
leaves the whole i18n tree consistent. The shared locale list moves to
scripts/native-i18n-locales.ts to break the import cycle between the
inventory scanner's top-level CLI await and the derived generators.
2026-07-18 07:15:41 +01:00
Peter Steinberger b3301e3212 feat(clients): show live plan checklists in web, iOS, and Android chat (#108675)
The gateway already broadcasts stream:"plan" agent events with typed
{step, status} snapshots; all three clients dropped them. Control UI now
renders an expandable checklist bar above the composer (run-scoped,
cleared on run lifecycle); the shared iOS/macOS chat UI mounts a
Liquid Glass pill (iOS 26 glassEffect, material fallback) between the
message list and composer; Android adds an expandable pill above the
composer bridged through ChatController/NodeRuntime/MainViewModel.
All parsers accept typed and legacy string steps, enforce the
single-in_progress invariant, and scope snapshots and clears to the
owning run. Locale artifacts, Android resources, and the iOS string
catalog carry generated translations for the pill strings.
2026-07-16 09:33:52 -07:00
Leon-SK668 9b6361a50c fix(android): preserve emoji in voice error status (#108101)
* fix(android): preserve emoji in voice error status

* chore(android): sync native i18n inventory

* fix(android): align voice status i18n allowlist
2026-07-15 01:16:27 -07:00
Peter Steinberger 2c8306a5be improve(android): make gateway QR pairing prominent in Settings
Mirror the iOS gateway settings ordering: nav-bar QR scan action,
Scan QR to Pair hero while unpaired, one Add Gateway panel (scan,
setup code + connect, discovered gateways with per-row connect),
paired gateways below, manual host/credential plumbing at the bottom.
Add facts rows (Discovered, Default Agent, Agents, Instance ID) and a
Diagnose action, plus a deterministic 'gateway' screenshot scene.

Closes #106186
2026-07-13 08:02:56 -07:00
Vincent Koc 88d41ad5d2 fix(i18n): cover raw Android presentation strings 2026-07-12 13:26:39 +02:00
Vincent Koc b392dbbbcc build(android): regenerate runtime-owned locale resources 2026-07-12 13:26:39 +02:00
Vincent Koc 2588b834c3 fix(i18n): classify Android structural strings 2026-07-12 13:26:39 +02:00
Vincent Koc fdf1250ece fix(i18n): close Android scanner blind spots 2026-07-12 13:26:39 +02:00
Vincent Koc ca5827a2a5 test(i18n): enforce typed Android presentation 2026-07-12 13:26:39 +02:00
Vincent Koc 4bc1a0343e fix(i18n): harden Android localization scans 2026-07-12 13:26:39 +02:00
Vincent Koc 66b27f0ce3 fix(i18n): require the Android base catalog 2026-07-12 13:26:39 +02:00
Vincent Koc 5b7f50c077 fix(i18n): parse nested Kotlin interpolation 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 71db13d4c3 fix(android): localize command and overview models 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 56ca704433 test(android): include XML resource references 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 b5844bbba2 test(android): harden localization coverage checks 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 e580275464 feat(tooling): enforce noUncheckedIndexedAccess in the scripts lane (NUIA phase 5) (#105180)
* feat(tooling): enforce noUncheckedIndexedAccess in the scripts lane

Burns down all 153 scripts-lane errors (bench aggregation, release
checks, i18n inventories, argv indexing) and flips the flag in
tsconfig.scripts.json. Direct-Node-executed release harness scripts use
local narrowing instead of workspace imports, which do not resolve
under plain node execution. Benchmark measured loops untouched.

* fix(scripts): import expect helpers via relative package sources

tsconfig path aliases resolve from cwd under tsx, so release wrapper
scripts running against old release target cwds could not resolve
@openclaw/normalization-core (not a linked root dependency). Relative
package-source imports match the established pattern on the adjacent
lines and are cwd-independent; old-target planning verified directly.
2026-07-12 10:17:00 +01:00
Peter Steinberger 2e2366b6d3 chore(tooling): typecheck scripts/** with a dedicated tsgo lane (#104348)
* feat(tooling): add tsgo typecheck lane for scripts/**

* fix(scripts): burn down scripts type debt surfaced by the new lane

Typing-only except bugs the lane surfaced: gh-read timeout race,
Discord Headers spread dropping entries, undefined allowedHeadBranches
match, plugin-boundary matchAll crash. Deletes retired config keys from
fixtures/benches (prompt snapshots regenerated, config dump only) and
the orphaned non-runnable sync-moonshot-docs script. Adds full-surface
.d.mts declarations for existing .mjs boundaries.
2026-07-11 02:31:17 -07:00
joshavant 341231831b chore(android): prepare 2026.6.11 Play release 2026-07-01 17:26:11 -05:00
Vincent Koc 9c130388a3 fix(android): validate resource apostrophe syntax 2026-07-01 03:43:03 -07:00
Vincent Koc 5e786ac27a test(android): enforce localized resource coverage 2026-07-01 03:43:03 -07:00
Vincent Koc 844775a6de feat(android): localize every native locale 2026-07-01 03:43:03 -07:00
Vincent Koc af00b0bebf feat(android): localize gateway onboarding 2026-07-01 03:43:03 -07:00