Repository navigation
Upgrade Parley from 0.11 to latest main (2026-09-24) - #914
Merged
Merged
Conversation
Contributor
|
I'll fix CI failures and address comments from users with write access that start with 'DevinAI' or '@devin'.
|
staging-devin-ai-integration
Bot
force-pushed
the
devin/1789920947-parley-break-spaces-analysis2
branch
from
September 24, 2026 17:44
8c6167d to
e2601a1
Compare
Pin Parley to linebender/parley main (6a9444f). White-space collapsing is now a per-span Parley style, so all four white-space-collapse values map 1:1, <br> and display: contents push modification spans, and the set_white_space_mode calls are removed. Migrate to the newer Parley API (InlineBox::baseline, append_inline_box_to_line ascent/descent/quantize, Cluster::style, Run::font_metrics, FontInstance) and cast normalized coords to &[i16] via bytemuck. Add whitespace_modes tests and make anonymous_block_cache_invalidation assert heights relative to the initial layout, since CSS line-box sizing makes the strut descent depend on the system font.
staging-devin-ai-integration
Bot
force-pushed
the
devin/1789920947-parley-break-spaces-analysis2
branch
from
September 24, 2026 17:46
e2601a1 to
2e87a60
Compare
nicoburns
enabled auto-merge (squash)
September 24, 2026 17:52
staging-devin-ai-integration Bot
pushed a commit
that referenced
this pull request
Sep 24, 2026
Rebased onto main as a single commit: main now includes #914 (Parley upgrade to linebender main), which superseded the Parley repin commits that made up most of this branch's history. The previous history is preserved at backup/832-pre-rebase. - Map stylo vertical-align / alignment-baseline / baseline-shift to Parley's VerticalAlign on text styles and inline boxes - Drop Blitz's root line-height floor and per-span line-height pre-computation; Parley now owns line box sizing - Export inline-block / inline flex / grid baselines to Parley - Scale ch/ic linearly from font units to match shaped advances - Position glyph runs, inline boxes and decorations by baseline offset
staging-devin-ai-integration Bot
pushed a commit
that referenced
this pull request
Sep 24, 2026
Rebased onto main as a single commit: main now includes #914 (Parley upgrade to linebender main), which superseded the Parley repin commits that made up most of this branch's history. The previous history is preserved at backup/832-pre-rebase. - Map stylo vertical-align / alignment-baseline / baseline-shift to Parley's VerticalAlign on text styles and inline boxes - Drop Blitz's root line-height floor and per-span line-height pre-computation; Parley now owns line box sizing - Export inline-block / inline flex / grid baselines to Parley - Scale ch/ic linearly from font units to match shaped advances - Position glyph runs, inline boxes and decorations by baseline offset
staging-devin-ai-integration Bot
pushed a commit
that referenced
this pull request
Sep 26, 2026
Rebased onto main as a single commit: main now includes #914 (Parley upgrade to linebender main), which superseded the Parley repin commits that made up most of this branch's history. The previous history is preserved at backup/832-pre-rebase. - Map stylo vertical-align / alignment-baseline / baseline-shift to Parley's VerticalAlign on text styles and inline boxes - Drop Blitz's root line-height floor and per-span line-height pre-computation; Parley now owns line box sizing - Export inline-block / inline flex / grid baselines to Parley - Scale ch/ic linearly from font units to match shaped advances - Position glyph runs, inline boxes and decorations by baseline offset
staging-devin-ai-integration Bot
pushed a commit
that referenced
this pull request
Sep 28, 2026
Rebased onto main as a single commit: main now includes #914 (Parley upgrade to linebender main), which superseded the Parley repin commits that made up most of this branch's history. The previous history is preserved at backup/832-pre-rebase. - Map stylo vertical-align / alignment-baseline / baseline-shift to Parley's VerticalAlign on text styles and inline boxes - Drop Blitz's root line-height floor and per-span line-height pre-computation; Parley now owns line box sizing - Export inline-block / inline flex / grid baselines to Parley - Scale ch/ic linearly from font units to match shaped advances - Position glyph runs, inline boxes and decorations by baseline offset
nicoburns
added a commit
that referenced
this pull request
Sep 28, 2026
* Implement vertical-align via Parley Rebased onto main as a single commit: main now includes #914 (Parley upgrade to linebender main), which superseded the Parley repin commits that made up most of this branch's history. The previous history is preserved at backup/832-pre-rebase. - Map stylo vertical-align / alignment-baseline / baseline-shift to Parley's VerticalAlign on text styles and inline boxes - Drop Blitz's root line-height floor and per-span line-height pre-computation; Parley now owns line box sizing - Export inline-block / inline flex / grid baselines to Parley - Scale ch/ic linearly from font units to match shaped advances - Position glyph runs, inline boxes and decorations by baseline offset * Paint text decorations at the decorating box's baseline; repin parley Underlines/overlines/line-throughs of a decorating element are drawn at that element's inline-box baseline on each line (via Line::style_baseline through the parley style parent chain) instead of at each glyph run's shifted baseline, so vertically aligned descendants no longer carry the decoration with them. Pin parley to 1fd63fba72b38df9ec14892bd6f20e96fe2c1176, which adds Style::parent / Line::style_baseline and stops a trailing space from starting an extra empty line. * Build FontContext via from_parts (fields are private in the repinned parley) * wasm_hello: build FontContext via from_parts * Repin parley to 5f93a92 (inline sort_inline_boxes) * Repin parley to 754b67c; rustfmt after rebase onto main * Repin parley to b4bf59f; drop removed quantize arg from append_inline_box_to_line * Repin parley to linebender main 63927df (#766 merged) Reverts the FontContext::from_parts adaptation and the decorating-box baseline decoration painting, which depend on the not-yet-upstreamed DioxusLabs/parley #19 / #23 (Style::parent, Line::style_baseline).
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.
Summary
Upgrades Parley from
0.11.1(crates.io) to linebender/parleymainat6a9444f, pinned as a git dependency. There are about 130 upstream commits since 0.11.1. The biggest user-visible effects on Blitz are that white-space collapsing becomes a per-span style,pre-line/break-spacesbecome real modes, and line boxes are now sized following CSS.Notable Parley changes pulled in
White space
WhiteSpaceCollapseis now a style (TextStyle::white_space_collapse/StyleProperty::WhiteSpaceCollapse) instead ofTreeBuilder::set_white_space_modebuilder state (#814). The builder state was applied lazily to buffered text, so text just before a child with a differentwhite-spacewas collapsed using the child's mode. That can no longer happen.PreserveBreaks(#812).BreakSpaces(#833): break opportunities after preserved spaces are computed during analysis, and whitespace never hangs.calculate_content_widths(#785).TreeBuildercollapsing fixed and optimised (#786), and non-breaking spaces are preserved when collapsing (#734).Line layout
LineMetrics::{ascent,descent,leading}are removed.block_{min,max}_coordare now the line-box bounds, andcontent_block_{min,max}_coordgive the typographic bounds.InlineBox::baseline(#639).append_inline_box_to_linenow takes the box'sascent/descentrelative to the baseline, plus aquantizeflag.break_remainingwithCustomOutOfFlowboxes is fixed (#753).Shaping, clusters and fonts
Clusternow spans a full grapheme cluster (#715) and is character-addressed (#810).Glyph::style_indexis removed in favour ofCluster::style/GlyphRun::style(#661, #660).wghtsynthesis (#723), and synthetic bold is applied only when the weight difference is over 200 (#724).Run::metrics()is renamed toRun::font_metrics(), andRun::font()now returns aFontInstance(the font itself is.font).NormalizedCoordmoves toparlanceas a#[repr(transparent)]i16, with optionalbytemuckimpls (#813).Performance
calculate_content_widths(#822).Blitz changes
White space now travels with the style rather than the builder:
set_white_space_modecalls and the threadedcollapse_modeparameter are removed.TextStylesetswhite_space_collapse: Collapse, because Parley's default isPreserve.InlineBox { baseline: None, .. }.append_inline_box_to_line(advance, 0.0, 0.0, true)for floated boxes.cluster.style().brush.id.run.font_metrics()and&run.font().font.bytemuck::cast_slice::<NormalizedCoord, i16>. This enablesparley'sbytemuckfeature inblitz-paint.Tests
tests/blitz-tests/tests/whitespace_modes.rs:pre-linecollapsing across spans.<br>restoring the parent's collapsing.display: contentscarrying its own collapse mode and an independenttext-wrap-mode.break-spaceswrapping and its effect on intrinsic widths and alignment.anonymous_block_cache_invalidationnow asserts heights relative to the initial layout. With CSS line-box sizing, the strut's descent below a baseline-aligned inline-block depends on the system font (22px on Linux and Windows, 23px on macOS).WPT results
Subtests: 600 newly passing, 82 newly failing (net +518).
Full diff (475 changed tests)
Generated by the WPT workflow.