Add PresentationDocument and export presentation subcommand (#38, #39) - #45
Open
leogdion wants to merge 3 commits into
Open
Add PresentationDocument and export presentation subcommand (#38, #39)#45leogdion wants to merge 3 commits into
leogdion wants to merge 3 commits into
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 |
…39) Closes #38. Closes #39. The demo deck: seven solid-color slides with styled titles anchored on lane 1, separated by one-second cross dissolves. No .mov files and no ffmpeg, so anyone who clones the repo can regenerate the .fcpxml with one command — FCPKit demonstrating itself. `PresentationDocument` and `PresentationSlide` ship in FCPKitDSL so the showcase is browsable and testable; the CLI holds only a thin command that invokes them. `PresentationSequence` assembles the story items from an array, because a deck's length is data-driven rather than fixed-arity like the result builder's `buildBlock`. Dissolve-safe title timing: anchored items are not swept into a primary-storyline transition, so a title spanning a dissolve would hard-cut while its background dissolved. Packing sets a dissolved clip's `start` to T/2 and shrinks its duration by both overlaps, and an anchor's offset is relative to that trimmed start — so a title at offset zero already begins where the incoming dissolve ends, and only the tail needs trimming. Deletes the duplicated library copy of `RGBDocument`; demo scaffolding belongs only in the CLI, and `FCPTimeIntervalTests` already used its own local fixture. Rebuilt on v0.1.x after #42, #43, and #44 landed, so this branch now carries only the presentation work rather than the three tracks it was stacked on. Verified end to end against Apple's shipped DTDs: the deck packs to 36s, emits ts1..ts7, validates at both 1.13 and 1.14, and is byte-identical to the export produced before the tracks were squashed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
leogdion
force-pushed
the
issue/38-presentation
branch
from
August 3, 2026 21:15
aea171f to
0154aeb
Compare
Keep FCPKitDSL focused on authoring surface; showcase types depend only on the public DSL, with DocumentBuilder flattening nested groups so data-driven for/if spines export correctly.
Emit library colorProcessing via Project.colorProcessing(.wideHDR), reject zero-duration titles at build, and let anchored story items inherit the host duration when unset so PresentationDocument exports import cleanly into wide-HDR libraries. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #38. Closes #39.
Rebuilt on
v0.1.xnow that #42, #43, and #44 have landed. This branch previously merged all three so it could build; the diff is now just the presentation work — 9 files, one commit.What this adds
The demo deck: seven solid-color slides with styled titles anchored on lane 1, separated by one-second cross dissolves. No
.movfiles and noffmpeg— anyone who clones the repo can regenerate the.fcpxmlwith one command. FCPKit demonstrating itself.PresentationDocumentandPresentationSlideship inFCPKitDSLso the showcase is browsable and testable; the CLI holds only a thin command that invokes them, per theRGBDocumentlesson.PresentationSequenceassembles story items from an array, because a deck's length is data-driven rather than fixed-arity like the result builder'sbuildBlock.Dissolve-safe title timing
Anchored items are not swept into a primary-storyline transition, so a title spanning a dissolve would hard-cut while its background dissolved. Packing sets a dissolved clip's
startto T/2 and shrinks its duration by both overlaps, and an anchor's offset is relative to that trimmed start — so a title at offset zero already begins where the incoming dissolve ends, and only the tail needs trimming:Asserted directly rather than assumed.
Cleanup
Deletes the duplicated library copy of
RGBDocument. Demo scaffolding belongs only in the CLI, andFCPTimeIntervalTestsalready used its own local fixture, so nothing broke.Verified end to end against Apple's shipped DTDs
ts1..ts7— seven uniquetext-style-defids (Fix duplicate text-style-def ids in multi-title documents #35 working in the showcase)match-analysis-typeelements (DSL emits match-analysis-type at v1.13, where the element does not exist #41 working)Custom, oneBasic Title, oneCross Dissolveacross seven slidesGate
FCPKIT_REQUIRE_DTD=1 swift test— 68 XCTest + 49/12/65 Swift Testing, all passingfcpxml-diff schema-completeness --fail-if-total-exceeds 0— no structural lossswift-format lintandswiftlint— 0 violations across 282 filesswift run fcpxml-dsl --helplistspresentationin USAGE and EXAMPLESrgb.fcpxmlnorpresentation.fcpxmlappears ingit statusafter an export runRemaining
#40 is human-only — it needs Final Cut Pro for the Share → Master File export and the README embed.
🤖 Generated with Claude Code