mirror of
https://github.com/morluto/rea
synced 2026-10-27 06:33:32 -04:00
2a4667bb79
decode_interface_builder failed on every flat (keyed-archive) NIB that holds plist data or dates. Archived colors keep their components as data, so this covers nearly every AppKit NIB: XLD.app decoded 0 of 64. The decoded Uint8Array and Date values failed JSON validation. They now use the shared plist projection, which keeps them as explicit $plist_type values. Decoding those archives exposed a second failure. The keyed-archive parser inlined every UID reference up to 16 levels for every object, so an archive whose views reference their window, superview, and next key view expanded exponentially. A 9 KB NIB took 3 s, and a 158 KB MainMenu.nib did not finish. A reference now resolves to its string, or to a stub naming the referenced object's archive UID, authored ID, and class. The hierarchy walk visits each object once. The parser also reads XML CF$UID references and treats UID 0 as nil. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>