[PR #2248] [MERGED] fix(apple): join recognized keys from NIBArchive field maps #5115

Closed
opened 2026-10-31 01:04:05 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2248
Author: @XiaoBinGan
Created: 10/12/2026
Status: ✅ Merged
Merged: 10/12/2026
Merged by: @morluto

Base: main ← Head: fix/apple-asset-catalog-nib-values


📝 Commits (4)

  • c2b542a fix(apple): join recognized keys from NIBArchive field maps
  • 500b9de Merge remote-tracking branch 'origin/main' into codex/fold-pr-2248
  • 0ffd2aa fix(apple): normalize resource keys at the NIBArchive producer
  • 5198b8b fix(apple): restrict catalog joins to parsed resource nodes

📊 Changes

5 files changed (+268 additions, -34 deletions)

View changed files

📝 src/artifacts/apple/AppleAssetCatalogAnalysis.test.ts (+90 -2)
📝 src/artifacts/apple/AppleAssetCatalogAnalysis.ts (+11 -26)
📝 src/artifacts/apple/InterfaceBuilderAnalysis.ts (+16 -6)
📝 src/domain/apple/appleAssetCatalog.ts (+23 -0)
➕ tests/acceptance/applications/assetCatalogResourceKeys.test.ts (+128 -0)

📄 Description

Fixes #2176.

Behavior

Restore catalog rows for recognized scalar image/asset keys decoded from NIBArchive resource nodes. Normalize those fields once in the Interface Builder producer, sharing the recognized-key contract with the catalog consumer. Preserve the original nibValues, authored field values, archive path/SHA-256 and node identity; account for the extra serialized strings in the decoder budget.

The consumer reads the canonical attributes and parsed resource classification. It does not reinterpret nested archive objects or match image-named fields on controls/views. A recognized key produces unmatched, matched or ambiguous rows for zero, one or multiple catalog renditions, with the original source provenance.

Contributor preservation

Keep XiaoBinGan's earlier PR and commit as canonical. Folded thangldw's #2256 producer-boundary implementation and public CLI/MCP coverage with coauthor credit. Reviewed Bappaditya-kuilya's #2249 independent alternative and fixture coverage; its nested-field consumer representation is superseded by this single producer normalization.

Validation and scope

49 focused tests passed across the catalog workflow, public CLI/MCP resource-key joins and Interface Builder filesystem decoding. npm run check and npm run docs:check passed. Spec review caught and fixed overbroad joins from non-resource nodes; a rooted NSButton NIBArchive now proves the negative case.

The production archive parser, graph, CLI and MCP paths are exercised. Catalog records are injected/supplied fixtures: this does not establish native assetutil, a real Assets.car, native UINib applicability, or Windows/Linux behavior. Earlier contributor evidence reported 124 focused passes and a public CLI unmatched-row reproduction; its native hierarchy suite was unavailable on that contributor's CommandLineTools-only setup. Those historical results are not represented as new native-provider verification.


🔄 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/2248 **Author:** [@XiaoBinGan](https://github.com/XiaoBinGan) **Created:** 10/12/2026 **Status:** ✅ Merged **Merged:** 10/12/2026 **Merged by:** [@morluto](https://github.com/morluto) **Base:** `main` ← **Head:** `fix/apple-asset-catalog-nib-values` --- ### 📝 Commits (4) - [`c2b542a`](https://github.com/morluto/rea/commit/c2b542a4ea2d3f8cb35959632034182e94b18228) fix(apple): join recognized keys from NIBArchive field maps - [`500b9de`](https://github.com/morluto/rea/commit/500b9dea4c042c7e80a0f33234302237dc14bf64) Merge remote-tracking branch 'origin/main' into codex/fold-pr-2248 - [`0ffd2aa`](https://github.com/morluto/rea/commit/0ffd2aa78f39fe1f318fa640a088cd9053046bbb) fix(apple): normalize resource keys at the NIBArchive producer - [`5198b8b`](https://github.com/morluto/rea/commit/5198b8b8dfcd89fc4c7774f787316455fdf3471d) fix(apple): restrict catalog joins to parsed resource nodes ### 📊 Changes **5 files changed** (+268 additions, -34 deletions) <details> <summary>View changed files</summary> 📝 `src/artifacts/apple/AppleAssetCatalogAnalysis.test.ts` (+90 -2) 📝 `src/artifacts/apple/AppleAssetCatalogAnalysis.ts` (+11 -26) 📝 `src/artifacts/apple/InterfaceBuilderAnalysis.ts` (+16 -6) 📝 `src/domain/apple/appleAssetCatalog.ts` (+23 -0) ➕ `tests/acceptance/applications/assetCatalogResourceKeys.test.ts` (+128 -0) </details> ### 📄 Description Fixes #2176. ## Behavior Restore catalog rows for recognized scalar image/asset keys decoded from NIBArchive **resource** nodes. Normalize those fields once in the Interface Builder producer, sharing the recognized-key contract with the catalog consumer. Preserve the original `nibValues`, authored field values, archive path/SHA-256 and node identity; account for the extra serialized strings in the decoder budget. The consumer reads the canonical attributes and parsed resource classification. It does not reinterpret nested archive objects or match image-named fields on controls/views. A recognized key produces unmatched, matched or ambiguous rows for zero, one or multiple catalog renditions, with the original source provenance. ## Contributor preservation Keep XiaoBinGan's earlier PR and commit as canonical. Folded thangldw's #2256 producer-boundary implementation and public CLI/MCP coverage with coauthor credit. Reviewed Bappaditya-kuilya's #2249 independent alternative and fixture coverage; its nested-field consumer representation is superseded by this single producer normalization. ## Validation and scope 49 focused tests passed across the catalog workflow, public CLI/MCP resource-key joins and Interface Builder filesystem decoding. `npm run check` and `npm run docs:check` passed. Spec review caught and fixed overbroad joins from non-resource nodes; a rooted NSButton NIBArchive now proves the negative case. The production archive parser, graph, CLI and MCP paths are exercised. Catalog records are injected/supplied fixtures: this does not establish native `assetutil`, a real `Assets.car`, native `UINib` applicability, or Windows/Linux behavior. Earlier contributor evidence reported 124 focused passes and a public CLI unmatched-row reproduction; its native hierarchy suite was unavailable on that contributor's CommandLineTools-only setup. Those historical results are not represented as new native-provider verification. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:04:05 +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#5115
No description provided.