fix(android): align Play Store icon with the app (#159964)

* fix(android): align Play Store icon with the app

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

* fix(test): cover Bun candidate versions through the smoke entrypoint

Replace the source-string assertion made stale by the candidate-helper extraction with a mismatched tarball case in the existing installation fixture.

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
This commit is contained in:
RoboClaw 2026-09-27 17:54:30 -07:00 • committed by GitHub
parent 1ea24b2dc3
commit da6e11cf80
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 16 deletions

3
.gitignore vendored
View file

@ -92,7 +92,8 @@ apps/android/fastlane/Preview.html
apps/android/fastlane/test_output/
apps/android/fastlane/logs/
apps/android/fastlane/.env
apps/android/fastlane/metadata/android/**/images/
apps/android/fastlane/metadata/android/**/images/**
!apps/android/fastlane/metadata/android/en-US/images/icon.png
# fastlane build artifacts (local)
apps/ios/*.ipa

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View file

@ -2705,19 +2705,6 @@ syncBuiltinESMExports();
expect(result.stderr).not.toContain("Bun is required");
});
it("resolves the matching candidate AI package without changing the public registry", () => {
const script = readFileSync(BUN_GLOBAL_SMOKE_PATH, "utf8");
expect(script).toContain("assert-release-versions");
expect(script).toContain('"$BUN_INSTALL/install/global/package.json"');
expect(script).toContain("package/node_modules/@openclaw/ai");
expect(script).toContain("--strip-components=4");
expect(script).toContain('npm pack --ignore-scripts --silent --pack-destination "$PACK_DIR"');
expect(script).toContain('overrides: { "@openclaw/ai": `file:${aiPackageTarball}` }');
expect(script).not.toContain("--registry");
expect(script).not.toContain("@openclaw:registry");
});
it("requires root and AI candidate versions to match", () => {
const tempDir = tempDirs.make("openclaw-bun-candidate-versions-");
const rootManifestPath = join(tempDir, "openclaw.json");
@ -2829,6 +2816,13 @@ syncBuiltinESMExports();
bunRuntime: "supported",
statusExit: 0,
},
{
name: "rejects a mismatched bundled AI candidate before installation",
bundledAi: true,
bunRuntime: "supported",
statusExit: 0,
aiVersion: "2026.6.18",
},
{
name: "installs an older tarball with no bundled AI dependency unchanged",
bundledAi: false,
@ -2853,7 +2847,7 @@ syncBuiltinESMExports();
bunRuntime: "unexpected-failure",
statusExit: 0,
},
])("$name", ({ bundledAi, bunRuntime, statusExit }) => {
])("$name", ({ bundledAi, bunRuntime, statusExit, aiVersion = "2026.6.17" }) => {
const tempDir = tempDirs.make("openclaw-bun-prebuilt-");
const packageDir = join(tempDir, "fixture", "package");
const aiDir = join(packageDir, "node_modules", "@openclaw", "ai");
@ -2879,7 +2873,7 @@ syncBuiltinESMExports();
mkdirSync(aiDir, { recursive: true });
writeFileSync(
join(aiDir, "package.json"),
JSON.stringify({ name: "@openclaw/ai", version: "2026.6.17" }),
JSON.stringify({ name: "@openclaw/ai", version: aiVersion }),
);
}
const packed = spawnSync(
@ -3014,6 +3008,15 @@ node -e 'const fs=require("node:fs");const p=process.argv[1];const value=JSON.pa
},
});
if (aiVersion !== "2026.6.17") {
expect(result.status).toBe(1);
expect(result.stderr).toContain(
"candidate version mismatch: openclaw=2026.6.17, dependency=2026.6.17, @openclaw/ai=2026.6.18",
);
expect(existsSync(statePath)).toBe(false);
return;
}
const expectedExit = bunRuntime === "unexpected-failure" ? 42 : statusExit;
expect(result.status, result.stderr).toBe(expectedExit);
expect(existsSync(path.dirname(readFileSync(statePath, "utf8").trim()))).toBe(false);