Drawable depth: geometry, text formatting, and images (#3, #37, #38) - #39
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Extend AcceptanceDecks so the human #24 pass can open Magic Move size change, styled text, and an image with Dissolve In without hand-writing a probe. Co-authored-by: Cursor <cursoragent@cursor.com>
Minted character styles now carry TSS.StyleArchive super + stylesheet registration so formatting decks open in Keynote. Image minting is aligned toward Keynote-inserted shape but still SIGTRAPs on the slim blank; triage and next steps are in drawable_open_crash.md. Co-authored-by: Cursor <cursoragent@cursor.com>
Two distinct Keynote 15.3 load failures, root-caused by diffing our slim authored deck against a script-driven Keynote insert on the same blank: 1. TSPersistence abort: image DataInfo lacked materializedLength and the TSD.ImageDataAttributes extension (pixelSize), and we minted a thumbnail data Keynote never creates. Now: single full-size Data/ member, DataInfo with digest + materializedLength + pixel-size attributes, ownedDrawables entry, originalSize=naturalSize, rectangle tracedPath, wrap type 4. 2. NSViewLayout uncaught exception: the image's media style lives in the DocumentStylesheet component, but the slide component never declared the cross-component edge. registerExternalReferences now appends the TSP.ComponentExternalReference exactly as Keynote does. All 8 acceptance decks (5 original + 3 drawable-depth) open cleanly in Keynote 15.3; swift test 20/20; LINT_MODE=STRICT lint clean (restructured ImageSupply into ImageRecords, replaced ref tuples with TSP_ComponentDataReference, split oversized test file). Findings: research/findings/drawable_open_crash.md (resolved, incl. the Keynote autosave-in-place trap and raw-diff methodology). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Image open crash (#38) is fixed as of ac16bc8 — root causes and methodology in |
The 2026-07-30 open-only pass missed three render-level bugs:
1. drawable_geometry crashed / slide 2 blank (multi-slide clone):
- RecordCloner materialized absent optional references as EMPTY
messages (id 0) via inout accessor access — Keynote resolves 0 to
nil, silently never loads the cloned component (0 iWork items),
and Magic Move pairing crashes on the nil (NSSet nil exception).
Every singular remap is now has*-guarded.
- Cloned slide components now carry the template's uuid-map entries
remapped with fresh uuids (Keynote requires one per member record);
newly minted drawable records get entries too.
- Cloned slide nodes now register a Document-component uuid entry and
merge into the thumbnail data-reference row — an unregistered
header data reference fails TSP integrity.
- Magic Move moved to slide 1 in DrawableGeometryContent: Keynote
plays the outgoing slide's transition.
2. text_formatting rendered plain: switched from a tableCharStyle
CharacterStyle fork (opens, never paints) to Keynote's actual
mechanism — a TSWP.ParagraphStyleArchive variation (isVariation,
parent = storage's para style) on tableParaStyle, registered in the
stylesheet styles + parentToChildrenStyleMap, storage header ref
swapped, slide-component externalReferences edge, uuid entries in
both components, and tsdFill alongside fontColor (color paints via
the fill).
3. image_drawable showed the missing-media placeholder: the 1x1
hand-minimal JPEG is not ImageIO-decodable; embedded a real 64x48
sips-encoded JPEG.
Verification now includes rendered-slide export (renderdeck) and
AppleScript model probes, not just open-survival: all 8 decks open and
render green in Keynote 15.3; swift test 20/20; strict lint clean.
Findings: research/findings/drawable_open_crash.md.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Human-pass regressions fixed as of 6cda7f7 — details in |
Foundation Process doesn't exist on iOS/tvOS/watchOS/visionOS (compile failure) and the silent run() failure deadlocked both Windows jobs to the 6h timeout. List zip entry paths via KeyBundle instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- research/findings/acceptance_keynote_open.md: expanded-pass section (9 decks incl. text_runs, regression + drawable-depth render columns, #10 live-verify extra, tag + merge-to-main steps) - .claude/PLAN.md, .claude/PARALLEL-WORKTREES.md, .claude/agent-notes.md: current position after PR #39 and PR #41 merges (drawable depth, mixed runs, TextBox/Text DSL rename) and issue housekeeping Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- research/findings/acceptance_keynote_open.md: expanded-pass section (9 decks incl. text_runs, regression + drawable-depth render columns, #10 live-verify extra, tag + merge-to-main steps) - .claude/PLAN.md, .claude/PARALLEL-WORKTREES.md, .claude/agent-notes.md: current position after PR #39 and PR #41 merges (drawable depth, mixed runs, TextBox/Text DSL rename) and issue housekeeping Co-authored-by: CI <ci@example.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Text/Image.frame+.zIndex; writegeometry.size; sort intodrawablesZOrderwith build targets alignedCharacterStyleArchiveontotable_char_style(do not mutate shared Body paragraph style)Imagedrawable + generalizedSlideItemsBuilder; mintTSD.ImageArchive, upsertData/, registerDataInfo(SHA-1) + component data refs; In build verified structurallydrawable_geometry.md,text_formatting.md,image_authoring.mdTest plan
LINT_MODE=STRICT ./Scripts/lint.shswift test(KeynoteKitTests: geometry, formatting, image, goldens, goal sketch, supply)v0.1.0until expanded 12 — Acceptance — five decks in Keynote 15.3 #24 is greenMade with Cursor