Mixed formatting runs within a single text box (#40) - #41
Merged
Conversation
DSL: TextRun + TextRunsBuilder; Text { runs } init (strings lift to plain
runs). Lowering: AuthoredSlide.TextItem.Run spans (split to +TextItem file).
Surgery: one TSWP.CharacterStyleArchive (type 2021) per span on
tableCharStyle keyed by UTF-16 start offset — plain spans get override-free
styles (never a zero-identifier reference); full registration edges from the
#37 lessons (stylesheet styles list, storage header objectReferences,
slide-component externalReferences, uuid-map entries in both components;
color via tsdFill). Paragraph-style variation still carries item-wide
defaults and composes with run overrides.
New text_runs acceptance deck (#40 render probe). Findings doc rewritten for
the shipped mechanisms; render verification in Keynote 15.3 is the open gate.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
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 |
Human pass on text_runs.key: per-run character styles on tableCharStyle render correctly with the full registration edge set — the historical renders-plain failure belonged to the pre-edge-fix attempt. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leogdion
marked this pull request as ready for review
July 31, 2026 14:40
Per review: the drawable is TextBox, a styled span inside it is Text. TextRunsBuilder no longer lifts free String literals — every span is an explicit Text element. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
leogdion
pushed a commit
that referenced
this pull request
Jul 31, 2026
- 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>
This was referenced Jul 31, 2026
leogdion
added a commit
that referenced
this pull request
Jul 31, 2026
- 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>
Draft
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.
Part of #40. Render verification passed (2026-07-31 human pass). Note on merge order: this PR renames the public DSL surface (
Text→TextBox), so it should now merge before thev0.1.0tag — otherwise v0.1.0 ships an API that is renamed immediately after.Summary
TextBox(renamed fromText); a styled span inside it isText(renamed fromTextRun):TextBox { Text("Bold").bold(); Text(" plain") }. Builders never accept a bareString— every span is an explicitText. Item-level modifiers onTextBoxstill style the whole item.AuthoredSlide.TextItem.Runspans alongside the item-wide fields;hasRunFormattinggates the new path.TSWP.CharacterStyleArchive(registry type 2021) minted per span ontotableCharStyle, keyed by UTF-16 start offset. Plain spans get override-free styles so no entry ever carries a zero-identifier reference. Every minted style gets the full edge set the Text formatting on authored Text items #37 render fix established: stylesheetstyleslist, storage record headerobjectReferences, slide-componentexternalReferences, uuid-map entries in both components, and color viacharProperties.tsdFill. The item-wide paragraph-style variation is unchanged and composes with run overrides.text_runsdeck (9th in the catalog) as the render probe;AcceptanceDeckschecklist extended.research/findings/text_formatting.mdrewritten: it still described the abandoned pre-fix char-style spec; now covers both shipped mechanisms and the open render risk.Test plan
swift test— all targets green, incl. newTextRunTests(entries/offsets, override bags, registration edges, plain-runs fallback, item+run composition) and the structural gate over the new deck (full decode + UUID-map invariants)LINT_MODE=STRICT ./Scripts/lint.shtext_runs.key: "Bold red" large bold red, "italic" italic, spans between plain, all in ONE box. Must be render-level (AppleScript slide-image export), not open-level: this mechanism previously opened cleanly but rendered plain (pre-edge-fix attempt). If it renders plain, diff against a Keynote-scripted reference per the findings doc.🤖 Generated with Claude Code