ci(i18n): publish Wear locale artifacts

This commit is contained in:
Vincent Koc
2026-07-21 09:21:06 +02:00
parent c6c1151c3a
commit 60cb53233b
5 changed files with 9 additions and 2 deletions
@@ -6,6 +6,7 @@ on:
- main
paths:
- apps/android/app/src/main/**
- apps/android/wear/src/main/**
- apps/ios/**
- apps/macos/Sources/**
- apps/macos/Package.swift
@@ -308,6 +309,7 @@ jobs:
apps/android/app/src/main/java/ai/openclaw/app/i18n/NativeStringResources.kt
apps/android/app/src/main/res/values*/assistant.xml
apps/android/app/src/main/res/values*/strings.xml
apps/android/wear/src/main/res/values*/strings.xml
apps/ios/Resources/Localizable.xcstrings
apps/macos/Sources/OpenClaw/Resources/Localizable.xcstrings
apps/ios/Sources/*.lproj/InfoPlist.strings
@@ -317,6 +319,7 @@ jobs:
invalidation-paths: |
apps/.i18n/native-source.json
apps/android/app/src/main
apps/android/wear/src/main
apps/ios
apps/macos/Sources
apps/macos/Package.swift
+2 -2
View File
@@ -65,14 +65,14 @@ export class NativeGeneratedArtifactsMixedError extends Error {}
const CONTROL_UI_TEST_SCOPE_RE =
/^(ui\/|test\/vitest\/vitest\.shared\.config\.ts$|scripts\/ensure-playwright-chromium\.mjs$)/;
const NATIVE_I18N_SCOPE_RE =
/^(?:apps\/\.i18n\/|apps\/android\/app\/src\/main\/|apps\/ios\/|apps\/macos\/Sources\/|apps\/shared\/OpenClawKit\/Sources\/|scripts\/(?:android-app-i18n|apple-app-i18n|native-app-i18n)\.ts$|test\/scripts\/(?:android-app-i18n|apple-app-i18n|native-app-i18n)\.test\.ts$|\.github\/workflows\/(?:ci|native-app-locale-refresh)\.yml$)/;
/^(?:apps\/\.i18n\/|apps\/android\/(?:app|wear)\/src\/main\/|apps\/ios\/|apps\/macos\/Sources\/|apps\/shared\/OpenClawKit\/Sources\/|scripts\/(?:android-app-i18n|apple-app-i18n|native-app-i18n)\.ts$|test\/scripts\/(?:android-app-i18n|apple-app-i18n|native-app-i18n)\.test\.ts$|\.github\/workflows\/(?:ci|native-app-locale-refresh)\.yml$)/;
// Android base resources are co-owned: source PRs edit their English content,
// while the generator rewrites managed sections. Treat them as generated only
// alongside a hard-generated artifact so neither ownership path blocks the other.
const NATIVE_COOWNED_GENERATED_I18N_RE =
/^apps\/android\/app\/src\/main\/res\/values\/(?:assistant|strings)\.xml$/;
const NATIVE_HARD_GENERATED_I18N_RE =
/^(?:apps\/\.i18n\/native\/[^/]+\.json|apps\/\.i18n\/apple-translation-contradictions\.json|apps\/android\/app\/src\/main\/java\/ai\/openclaw\/app\/i18n\/NativeStringResources\.kt|apps\/android\/app\/src\/main\/res\/values-[^/]+\/(?:assistant|strings)\.xml|apps\/ios\/Resources\/Localizable\.xcstrings|apps\/macos\/Sources\/OpenClaw\/Resources\/Localizable\.xcstrings|apps\/ios\/(?:Sources|WatchApp|ShareExtension|ActivityWidget)\/[^/]+\.lproj\/InfoPlist\.strings)$/;
/^(?:apps\/\.i18n\/native\/[^/]+\.json|apps\/\.i18n\/apple-translation-contradictions\.json|apps\/android\/app\/src\/main\/java\/ai\/openclaw\/app\/i18n\/NativeStringResources\.kt|apps\/android\/app\/src\/main\/res\/values-[^/]+\/(?:assistant|strings)\.xml|apps\/android\/wear\/src\/main\/res\/values-[^/]+\/strings\.xml|apps\/ios\/Resources\/Localizable\.xcstrings|apps\/macos\/Sources\/OpenClaw\/Resources\/Localizable\.xcstrings|apps\/ios\/(?:Sources|WatchApp|ShareExtension|ActivityWidget)\/[^/]+\.lproj\/InfoPlist\.strings)$/;
const FAST_INSTALL_SMOKE_SCOPE_RE =
/^(Dockerfile$|\.npmrc$|package\.json$|pnpm-lock\.yaml$|pnpm-workspace\.yaml$|scripts\/ci-changed-scope\.mjs$|scripts\/postinstall-bundled-plugins\.mjs$|scripts\/e2e\/(?:Dockerfile(?:\.qr-import)?|agents-delete-shared-workspace-docker\.sh|gateway-network-docker\.sh)$|extensions\/[^/]+\/(?:package\.json|openclaw\.plugin\.json)$|\.github\/workflows\/install-smoke\.yml$|\.github\/actions\/setup-node-env\/action\.yml$)/;
const FULL_INSTALL_SMOKE_SCOPE_RE =
@@ -14,6 +14,7 @@ describe("native i18n changed scope", () => {
"apps/.i18n/apple-translation-contradictions.json",
"apps/android/app/src/main/java/ai/openclaw/app/i18n/NativeStringResources.kt",
"apps/android/app/src/main/res/values-sv/strings.xml",
"apps/android/wear/src/main/res/values-sv/strings.xml",
"apps/ios/Resources/Localizable.xcstrings",
"apps/macos/Sources/OpenClaw/Resources/Localizable.xcstrings",
"apps/ios/WatchApp/sv.lproj/InfoPlist.strings",
+1
View File
@@ -103,6 +103,7 @@ describe("detectChangedScope", () => {
for (const changedPath of [
"apps/.i18n/native-source.json",
"apps/android/app/src/main/java/ai/openclaw/app/MainActivity.kt",
"apps/android/wear/src/main/java/ai/openclaw/wear/WearScreens.kt",
"apps/ios/Sources/RootTabs.swift",
"apps/macos/Sources/OpenClaw/Settings.swift",
"apps/shared/OpenClawKit/Sources/OpenClawKit/Client.swift",
+2
View File
@@ -983,6 +983,7 @@ describe("ci workflow guards", () => {
expect(workflow.on.push.paths).toContain("ui/src/i18n/.i18n/glossary.*.json");
expect(workflow.on.push.paths).toContain("apps/.i18n/native/**");
expect(workflow.on.push.paths).toContain("apps/.i18n/native-source.json");
expect(workflow.on.push.paths).toContain("apps/android/wear/src/main/**");
expect(workflow.on.push.paths).toContain("scripts/android-app-i18n.ts");
expect(workflow.on.push.paths).toContain("scripts/apple-app-i18n.ts");
expect(refreshStep.run).toContain("run_refresh anthropic");
@@ -1011,6 +1012,7 @@ describe("ci workflow guards", () => {
"apps/android/app/src/main/java/ai/openclaw/app/i18n/NativeStringResources.kt",
"apps/android/app/src/main/res/values*/assistant.xml",
"apps/android/app/src/main/res/values*/strings.xml",
"apps/android/wear/src/main/res/values*/strings.xml",
"apps/ios/Resources/Localizable.xcstrings",
"apps/macos/Sources/OpenClaw/Resources/Localizable.xcstrings",
"apps/ios/Sources/*.lproj/InfoPlist.strings",