[PR #1071] [MERGED] fix(apple): report apps without asset catalogs as empty inventories #2620

Closed
opened 2026-10-17 21:08:18 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/1071
Author: @kaoru0822-kitauji
Created: 10/8/2026
Status: ✅ Merged
Merged: 10/8/2026
Merged by: @kaoru0822-kitauji

Base: main ← Head: fix/asset-catalog-absent


📝 Commits (2)

  • 79e5a39 fix(apple): report apps without asset catalogs as empty inventories
  • a079af2 fix(apple): keep skipped catalog entries from reading as absence

📊 Changes

2 files changed (+98 additions, -5 deletions)

View changed files

📝 src/artifacts/apple/AppleAssetCatalogAnalysis.test.ts (+75 -1)
📝 src/artifacts/apple/AppleAssetCatalogAnalysis.ts (+23 -4)

📄 Description

Problem

On macOS, running inspect_asset_catalog on an app bundle with no compiled Assets.car failed with:

{"code":"artifact_operation_failed","category":"unavailable","message":"Artifact processing is unavailable for the current target or host. Check artifact support and required tools.","details":{"operation":"inspect_asset_catalog","reason":"unavailable","detail":"No compiled Assets.car catalogs were found in the app bundle"}}

The advice does not apply. assetutil was installed, and the target simply has no compiled catalog, which is itself an observation. Reproduced on main with real apps that ship no Assets.car: XLD, Anki and Sonic Visualiser. decode_interface_builder already returns an empty graph for an app without NIBs.

Change

  • The tool now returns the normal empty page (catalogs: [], total_records: 0, next_offset: null, truncated: false). It adds the limitation "No compiled Assets.car catalog was found in the app bundle; any resource keys are reported as unmatched."
  • Interface Builder resource keys are still decoded and reported as unmatched, which is accurate against an empty catalog set. For example, XLD's NIBs reference NSImageName: NSSwitch.
  • The non-macOS host gate and the capability metadata are unchanged.

No schemas change.

Verification

  • npm run test:focused -- src/artifacts/apple/AppleAssetCatalogAnalysis.test.ts src/domain/apple/appleAssetCatalog.test.ts tests/boundary/filesystem/nativeArtifactGoldens.test.ts: 6 passed. The new regression test fails with the source change reverted.
  • npm run check:fast
  • rea inspect-asset-catalog on /Applications/XLD.app and /Applications/Anki.app: empty inventory. On /Applications/Ghostty.app, which has two catalogs, output is unchanged.

No real Hopper or Ghidra verification was run, because this change does not touch those providers.

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/1071 **Author:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Created:** 10/8/2026 **Status:** ✅ Merged **Merged:** 10/8/2026 **Merged by:** [@kaoru0822-kitauji](https://github.com/kaoru0822-kitauji) **Base:** `main` ← **Head:** `fix/asset-catalog-absent` --- ### 📝 Commits (2) - [`79e5a39`](https://github.com/morluto/rea/commit/79e5a3923db896323c0491e31004214856529b74) fix(apple): report apps without asset catalogs as empty inventories - [`a079af2`](https://github.com/morluto/rea/commit/a079af297bb454417dfd3d89b0037397554ad83e) fix(apple): keep skipped catalog entries from reading as absence ### 📊 Changes **2 files changed** (+98 additions, -5 deletions) <details> <summary>View changed files</summary> 📝 `src/artifacts/apple/AppleAssetCatalogAnalysis.test.ts` (+75 -1) 📝 `src/artifacts/apple/AppleAssetCatalogAnalysis.ts` (+23 -4) </details> ### 📄 Description ## Problem On macOS, running `inspect_asset_catalog` on an app bundle with no compiled `Assets.car` failed with: ```json {"code":"artifact_operation_failed","category":"unavailable","message":"Artifact processing is unavailable for the current target or host. Check artifact support and required tools.","details":{"operation":"inspect_asset_catalog","reason":"unavailable","detail":"No compiled Assets.car catalogs were found in the app bundle"}} ``` The advice does not apply. `assetutil` was installed, and the target simply has no compiled catalog, which is itself an observation. Reproduced on `main` with real apps that ship no `Assets.car`: XLD, Anki and Sonic Visualiser. `decode_interface_builder` already returns an empty graph for an app without NIBs. ## Change - The tool now returns the normal empty page (`catalogs: []`, `total_records: 0`, `next_offset: null`, `truncated: false`). It adds the limitation "No compiled Assets.car catalog was found in the app bundle; any resource keys are reported as unmatched." - Interface Builder resource keys are still decoded and reported as `unmatched`, which is accurate against an empty catalog set. For example, XLD's NIBs reference `NSImageName: NSSwitch`. - The non-macOS host gate and the capability metadata are unchanged. No schemas change. ## Verification - `npm run test:focused -- src/artifacts/apple/AppleAssetCatalogAnalysis.test.ts src/domain/apple/appleAssetCatalog.test.ts tests/boundary/filesystem/nativeArtifactGoldens.test.ts`: 6 passed. The new regression test fails with the source change reverted. - `npm run check:fast` - `rea inspect-asset-catalog` on `/Applications/XLD.app` and `/Applications/Anki.app`: empty inventory. On `/Applications/Ghostty.app`, which has two catalogs, output is unchanged. No real Hopper or Ghidra verification was run, because this change does not touch those providers. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-17 21:08:18 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#2620
No description provided.