Commit Graph

48 Commits

Author SHA1 Message Date
Peter Steinberger 69220fc0d4 test(macos): remove body-only view probes (#121820)
* test(macos): remove body-only view probes

* test(macos): drop retired i18n wrapper contract
2026-08-10 20:26:56 -07:00
Peter Steinberger 45c2d5911a refactor(i18n): remove unused Apple contradiction report (#117182) 2026-07-31 20:36:52 -07:00
Vincent Koc 6726404c18 fix(i18n): include shared discovery copy in macOS catalog 2026-07-28 23:48:57 +08:00
Vincent Koc 9b63702543 fix(macos): localize privacy permission prompts 2026-07-28 23:48:01 +08:00
Peter Steinberger 9a624cd78f fix(ios): localize Agent Pro detail labels (#112980)
* fix(ios): preserve localized Agent Pro detail labels

* fix(ios): localize Dreaming metric labels

* test(ios): refresh native localization inventory

* test(setup): align isolated detection fallback

* test(system-agent): allow slow shared TUI setup

* test(chat): allow loaded outbox retry drain

---------

Co-authored-by: Alix-007 <li.long15@xydigit.com>
2026-07-23 09:01:07 -07:00
joshavant 690ed56441 fix(ios): preserve localized app display names 2026-07-22 22:56:22 -05:00
Vincent Koc 36fe7d4cde fix(i18n): include shared chat strings in macOS catalog 2026-07-21 20:14:39 +08:00
Vincent Koc d4021c351c fix(macos): localize settings surfaces (#112185) 2026-07-21 16:15:40 +08:00
Peter Steinberger bdf71d7d98 refactor(apple): unify offline client databases (#111598)
* refactor(apple): unify offline client databases

* refactor(apple): remove dead cache APIs

* fix(apple): satisfy native storage gates

* fix(apple): sync generated localization catalog

* Revert "fix(apple): sync generated localization catalog"

This reverts commit d0f5e7b74932e98ccc5f1984840e8f9d545edc2d.

* fix(i18n): keep source validation pre-merge

* test(macos): isolate flaky suite state

* test(macos): isolate log locator on main actor
2026-07-19 22:14:12 -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 9b556bcd5e feat(system-agent): auto-hatch into the agent after fresh setup (#110331)
* feat(system-agent): hatch into the agent after a fresh setup applies

The hatch is a ceremony: a fresh-install setup apply now announces the hatch
and hands straight off (open-tui in the terminal, open-agent for gateway
clients); the web custodian page lands in agent chat with the birth-sequence
opener prefilled as a draft so one Send wakes the seeded BOOTSTRAP. Non-setup
persistent operations keep their in-place replies.

* fix(system-agent): hatch only on clean post-write verification

* fix(ui): scope hatch draft to setup handoffs

* fix(onboarding): seed hatch handoffs across clients

* fix(i18n): refresh native hatch inventory

* fix(onboarding): seed remote gateway hatch handoff

* fix(macos): localize hatch draft

* fix(onboarding): gate hatch on pending bootstrap

* fix(i18n): sync hatch source to ios catalog

* fix(onboarding): gate hatch on canonical pending state
2026-07-18 03:32:15 -04: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 d2b382528e feat(ios): guide first launch through pairing explainer and permissions (#106129)
* feat(ios): guide first launch through pairing explainer and permissions

* fix(ios): keep first-run flow resumable and surface limited grants in onboarding

* chore(ios): regenerate native i18n after rebase

* chore(android): project refreshed native translations into strings.xml

* fix(ios): move i18n wrapper contract to shared permission row and sync catalog
2026-07-13 00:35:31 -07:00
Peter Steinberger 2186cdf36e fix(i18n): restore Text(title) wrapper contract for settings accessibility labels
0aabf56242 relaxed the wrapper contract to .accessibilityLabel(title) while
the same pattern stayed in RAW_LOCALIZATION_BYPASSES, and #105859 then
restored Text(title) in SettingsProTabSections.swift, leaving main's
apple-app-i18n guard failing in both directions. Revert the contract to the
original required pattern; both guard tables validate against current main.
2026-07-12 19:47:54 -07:00
Peter Steinberger c81ae0412c fix(ios): localize Settings accessibility labels (#105859)
* fix(ios): preserve localized accessibility labels

* chore(i18n): refresh native source inventory
2026-07-12 19:33:27 -07:00
Ayaan Zaidi 0aabf56242 chore(i18n): track accessibilityLabel(title) wrapper contract
5e9bc0916f switched two SettingsProTabSections accessibility labels
from .accessibilityLabel(Text(title)) to .accessibilityLabel(title);
title is LocalizedStringKey so lookup stays localized, but the wrapper
contract in apple-app-i18n.ts still required the old spelling and the
tooling shard only runs on PRs, so main broke silently.
2026-07-13 07:46:38 +05:30
Vincent Koc 01ed6b1f04 fix(ios): distinguish localized and verbatim session actions 2026-07-12 18:33:47 +02:00
Vincent Koc 9bc3a7bfe4 fix(i18n): bind plist translations to stable IDs 2026-07-12 18:33:47 +02:00
Vincent Koc b8c544b62b chore(i18n): document catalog conflict handling 2026-07-12 18:33:47 +02:00
Vincent Koc f7739ad676 fix(i18n): scope inflected count placeholders 2026-07-12 18:33:47 +02:00
Vincent Koc a49e6a32e9 fix(watch): make localized text extraction explicit 2026-07-12 18:33:47 +02:00
Vincent Koc dddf42c606 fix(i18n): mark imported Apple translations complete 2026-07-12 18:33:47 +02:00
Vincent Koc 971789b25a fix(i18n): cover interpolated Swift runtime forms 2026-07-12 18:33:47 +02:00
Vincent Koc 53eff8785e fix(i18n): constrain translation reuse 2026-07-12 18:33:47 +02:00
Vincent Koc 7592d33e77 fix(i18n): guard translation reuse 2026-07-12 18:33:47 +02:00
Vincent Koc 8670514a5b fix(i18n): refresh current InfoPlist translations 2026-07-12 18:33:47 +02:00
Vincent Koc 35a336f9db fix(i18n): widen Apple coverage key set 2026-07-12 18:33:47 +02:00
Vincent Koc 578650cf7c fix(i18n): retain honest Apple fallback state 2026-07-12 18:33:47 +02:00
Vincent Koc 2f11a5793c test(i18n): guard semantic Apple status paths 2026-07-12 18:33:47 +02:00
Vincent Koc d2f5008939 test(i18n): distinguish inflected Apple resources 2026-07-12 18:33:47 +02:00
Vincent Koc b2516ef9a1 build(i18n): harden Apple localization generation 2026-07-12 18:33:47 +02:00
Vincent Koc 0b3e98a76e fix(ios): preserve string catalog version 2026-07-12 18:33:47 +02:00
Vincent Koc cc85d8256f fix(ios): use plural-aware localized counts 2026-07-12 18:33:47 +02:00
Vincent Koc 1591aa4c32 build(ios): support inflected localized counts 2026-07-12 18:33:47 +02:00
Vincent Koc a8ae1bff7f fix(ios): preserve localized status semantics 2026-07-12 18:33:47 +02:00
Vincent Koc 7074d5cd0c build(ios): enforce runtime localization coverage 2026-07-12 18:33:47 +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 ac89350327 feat(apps): review durable approvals on mobile (#104913)
* feat(apps): Android, iPhone, and Watch approval clients

Squash-rebased #103912 segment onto the deep-links tip on current main.
Native approval surfaces: iOS approval presentation with gateway-switch
lease preservation and resolution fencing, watchOS inbox + approval
actions with shipped-shape payload codec, Android approval notices with
publication-tokened dismissal. Native i18n inventory regenerated.

(cherry picked from commit 428a76670ffeede54248b7bd7aa4438e2589851b)
(cherry picked from commit 80225d5707c3645eeea5435f266131037b50ede6)
(cherry picked from commit 2a23b714dc30d773a294aa45adc617e46b80732e)
(cherry picked from commit 9ff1153827769e2cbab7c11c153f0f8634662c28)
(cherry picked from commit 5b25723525bd562e5f97478af492f7b46ad30fd1)
(cherry picked from commit 8c80e8467b5fe89aad0d4c74a0573f1600ed3af9)
(cherry picked from commit ad4037bc9846bf6f082b41c129ee68aa344576c3)
(cherry picked from commit fdf767dd662cff3c8a5a6d571f38f153410651ca)
(cherry picked from commit 00c120376ffd992ea68ce29254a9bc0a25ed1740)
(cherry picked from commit f36a95213e561ceadc9da799e7f7803f9905844f)
(cherry picked from commit e2c25cbe2baacab44d21871d8cb6734704f065ac)
(cherry picked from commit 7c4fda519080486d341a9f4df36d63f9e24b1235)
(cherry picked from commit 1b3d4eda3dc5988012124597f9454ae21fb187a1)
(cherry picked from commit 2a606197227b0221d5f21f0fb92bdce5bf57eeec)
(cherry picked from commit 6f0c3865677f5988f4d1bccce8e46a0949c18ea2)
(cherry picked from commit 784a5857b7ade84b42866b8b7789d315ff04eadd)
(cherry picked from commit cbf294e026841c9bc2799da0fc7db666a69c52db)

* fix(apps): harden approval reconciliation and watch states
2026-07-11 19:59:07 -07:00
lin-hongkuan 522e253c53 fix(ios): resize oversized shared images (#103860)
* fix(ios): resize oversized shared images

* fix(ios): satisfy SwiftFormat await rules

* fix(ios): integrate share image processing

* fix(ios): type share attachment failures

---------

Co-authored-by: lin-hongkuan <lin-hongkuan@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 15:16:45 -07: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
Peter Steinberger dc42c893c3 improve(ios): redesign share extension compose sheet (#104187) 2026-07-10 22:22:15 -07:00
Tyler Nishida 2db5bd3394 feat(ios): refresh onboarding setup flow (#98868) 2026-07-05 21:38:54 -04:00
Josh e43c72954a Polish iOS onboarding and chat critique fixes (#99243)
* fix(ios): polish onboarding and empty chat

Co-authored-by: Josh <17843332+jcooley8@users.noreply.github.com>

* fix(ios): correlate pending chat echoes

* fix(ios): ship localized chat starters

* fix(ios): preserve chat echo identity

* fix(ios): adopt late correlated chat echoes

* fix(ios): reconcile reused chat runs

* fix(ios): preserve transformed chat history

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-04 00:38:56 -07:00
Vincent Koc 5e4d71686a fix(apple): preserve localized static labels 2026-07-01 05:19:12 -07:00
Vincent Koc d3e6d1fd6c fix(macos): compile packaged localizations 2026-07-01 05:19:12 -07:00
Vincent Koc a53b6823c6 test(apple): enforce phased catalog coverage 2026-07-01 05:19:12 -07:00
Vincent Koc 9cfbd1b65c feat(apple): localize native app surfaces 2026-07-01 05:19:12 -07:00
Vincent Koc 02046b665f feat(apple): add Russian and Hindi app catalogs 2026-07-01 05:19:12 -07:00