Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
4730779
Patch the stylo family to the style-more branch of the stylo fork
dfrg Oct 7, 2026
256fe93
Lay out and paint document text with winkin behind a feature
dfrg Oct 7, 2026
ceb1c50
Give dir=auto its direction from the first strong character
dfrg Oct 7, 2026
e3f42d6
Apply the UA bidi rules for bdo, and for pre and textarea with dir=auto
dfrg Oct 7, 2026
b1f3972
Turn text-autospace off in pre, code, kbd, samp and tt
dfrg Oct 7, 2026
c06e4c4
Size screenshots to the document's height, and take an output path
dfrg Oct 7, 2026
6123e45
Add a winkin feature to the WPT runner
dfrg Oct 7, 2026
5563ec8
Hand winkin absolutely positioned boxes as anchors, and take their st…
dfrg Oct 7, 2026
bfd742c
Take winkin and fontwich from the public winkin repository
dfrg Oct 7, 2026
d844c76
Take winkin's fonts through DocumentConfig, and hand them to iframes
nicoburns Oct 7, 2026
ae2941d
List winkin's fonts once in the WPT runner, and share them across tests
nicoburns Oct 7, 2026
869c293
Add a winkin feature to the browser, sharing a tab's fonts across its…
nicoburns Oct 7, 2026
64ba54e
Split inline layout into a shared prelude and one function per text b…
nicoburns Oct 8, 2026
4aca38a
Skip the Parley build of an inline context under winkin
nicoburns Oct 8, 2026
0c794d1
Route inline hit testing and selected text through the inline layout,…
dfrg Oct 8, 2026
a9fd98d
Adapt winkin to upstream's layout pass state
dfrg Oct 8, 2026
02b3d0d
Read innerText and Selection offsets through the inline layout
dfrg Oct 8, 2026
58c2886
Lay out winkin's inline formatting contexts in physical axes under wr…
dfrg Oct 8, 2026
c475691
Fix blitz-dom's rustdoc link warnings
dfrg Oct 9, 2026
b18fc13
Move the Parley text path behind a text backend boundary
dfrg Oct 8, 2026
e3e562a
Tighten the text backend boundary's APIs
dfrg Oct 9, 2026
5e1ea5e
Walk an inline formatting context's DOM once, in Blitz, for every tex…
dfrg Oct 9, 2026
39b8c8b
Lay out an inline formatting context's lines in Blitz, through a narr…
dfrg Oct 9, 2026
9227694
Lay out the ::before and ::after of display: contents elements in inl…
dfrg Oct 9, 2026
7c96bf6
Take an atomic inline's baseline as baseline-source and its last line…
dfrg Oct 9, 2026
8884212
Lay out atomic inlines only as far as the pass reads them
dfrg Oct 9, 2026
52f65c4
Measure an inline formatting context's floats once, in the room besid…
dfrg Oct 9, 2026
953ffc9
Place an inline formatting context's floats in a room of its own, the…
dfrg Oct 9, 2026
8d32e8f
Count an inline formatting context's floats in its content widths
dfrg Oct 9, 2026
2d7631c
Test innerText's text and its cost
dfrg Oct 8, 2026
c9d5e7e
Make Parley a feature of the text backend, on by default
dfrg Oct 8, 2026
36536a5
Underline the text an input method is composing in text inputs
dfrg Oct 8, 2026
54ff6f6
Put winkin behind the text backend boundary
dfrg Oct 8, 2026
dce99c7
Make winkin a text backend feature beside parley, with Parley on by d…
dfrg Oct 8, 2026
33b7a8c
Keep break-spaces and the wrap mode in winkin's form controls
dfrg Oct 8, 2026
6c15d2f
Show composing text and keep an undo history in winkin's editor
dfrg Oct 8, 2026
5132c73
Test editing text inputs under either text backend
dfrg Oct 8, 2026
da796cd
Keep winkin's built content across an intrinsic inline-size pass
dfrg Oct 8, 2026
94a7345
Key winkin's built content on its basis only where a percentage reads it
dfrg Oct 8, 2026
aaca11e
Take winkin and fontwich at 8906e07, with Layout::set_atomic_sizes
dfrg Oct 8, 2026
a1ac0f2
Set winkin's atomic inline heights in place instead of building again
dfrg Oct 8, 2026
f5ff66c
Build against stylo main
dfrg Oct 8, 2026
2f77517
Expect font-family names unquoted where they serialize as identifiers
dfrg Oct 8, 2026
d6a975e
Map text-transform: math-auto to winkin, and take winkin at 20cfd61
dfrg Oct 9, 2026
c05a088
Mask password inputs in winkin's editor, and block copying them
dfrg Oct 9, 2026
8156a99
Set the initial font-family in winkin's standard font, as Chrome does
dfrg Oct 9, 2026
23c925b
Map word-break: break-word for both text backends
dfrg Oct 9, 2026
f76255a
Take stylo with word-break: break-word, and winkin with per-element t…
dfrg Oct 9, 2026
be083cf
Build winkin's inline content in box construction and measure it in l…
dfrg Oct 10, 2026
0415eb5
Build winkin's inline content in parallel under parallel-construct
dfrg Oct 10, 2026
40add22
Take winkin with Layout::measure
dfrg Oct 10, 2026
d320319
Map system font files under winkin rather than reading them
dfrg Oct 10, 2026
2b12a9c
Size winkin's lines without placing them in passes that only size a b…
dfrg Oct 10, 2026
e14ac8d
Work out the room over and under winkin's lines only where they carry…
dfrg Oct 10, 2026
08a24b4
Take winkin with size_lines and has_annotations
dfrg Oct 10, 2026
0913634
Take winkin with left-to-right controls left at level 0
dfrg Oct 10, 2026
2909b11
Take winkin breaking between a space and the marks after it
dfrg Oct 10, 2026
94d110f
Take winkin's restructured stages and one-walk screen-order caret steps
dfrg Oct 10, 2026
df40b55
Map text-fit to winkin, and pass letter-spacing as a length-percentage
dfrg Oct 11, 2026
4847367
Give a bdi with no valid dir the direction dir=auto gives, and stop i…
dfrg Oct 11, 2026
1ea2bc7
Add classList.replace to the script runtime
dfrg Oct 11, 2026
c1736e2
Take winkin with text-fit and stylo that parses it
dfrg Oct 11, 2026
7b9e63e
Share winkin's parsed fonts between the main context and every constr…
dfrg Oct 11, 2026
7a18506
Take winkin with shared fonts, a one-push shaping buffer and a cheape…
dfrg Oct 11, 2026
26f775e
Take winkin with cheaper boxes and a cheaper glyph walk for short runs
dfrg Oct 11, 2026
2d329cc
Take winkin whose carets keep the side they arrived from
dfrg Oct 11, 2026
4cc3e28
Take winkin with a faster prepare
dfrg Oct 12, 2026
e1c6dbb
Take winkin with its CSS support page brought up to date
dfrg Oct 12, 2026
d0d2270
Format winkin's text backend
dfrg Oct 12, 2026
1cc41aa
Lay text out again in place when only its alignment changes under winkin
dfrg Oct 12, 2026
a23f5a7
Take winkin with Layout::set_text_align
dfrg Oct 12, 2026
f18c37e
Change a winkin layout's alignment without rebuilding it
dfrg Oct 12, 2026
79f141d
Take winkin with line layout's rare paths out of line
dfrg Oct 12, 2026
cb27d5e
Take winkin whose carets stop at both places a position is drawn
dfrg Oct 12, 2026
56bb296
Take winkin whose builder borrows the context for the whole build
dfrg Oct 12, 2026
7063747
Take winkin that keeps less in a layout
dfrg Oct 12, 2026
764c087
Take winkin that keeps each table at its length
dfrg Oct 13, 2026
589df43
Draw winkin's from-font underlines with the font's own thickness and …
dfrg Oct 13, 2026
87bee2b
Resolve text-emphasis-position: auto by the content language
dfrg Oct 13, 2026
daaad48
Round an underline's offset to a whole device pixel
dfrg Oct 13, 2026
8049437
Split inline content around block pseudos, and keep inline display: c…
dfrg Oct 13, 2026
3c9a3f6
Place an initial letter's room as Chrome places it among floats
dfrg Oct 13, 2026
1f384f5
Gap an auto underline by the thickness it is drawn at
dfrg Oct 13, 2026
9f17403
Take winkin with the web platform test fixes and lean advances
dfrg Oct 13, 2026
efa5851
Take winkin's line background with the line it borrows
dfrg Oct 13, 2026
7e5adc9
Transform a form control's text as its style asks
dfrg Oct 13, 2026
5b21eb2
Draw no glyphs of transparent text, colour glyphs included
dfrg Oct 13, 2026
91be54e
Keep a decorated element whose decoration ink reaches into view
dfrg Oct 13, 2026
b510b05
Map <font size> to font-size
dfrg Oct 13, 2026
7a1127f
Measure font-relative units at the size font-size-adjust sets
dfrg Oct 13, 2026
d9112b4
Measure ch and ic down the line in upright vertical text
dfrg Oct 13, 2026
01516d6
Turn an emphasis mark on combined text with its line
dfrg Oct 13, 2026
c20760a
Propagate decorations through a display: contents float
dfrg Oct 13, 2026
b93d79b
Take winkin with lines for empty boxes with edges and annotation edges
dfrg Oct 13, 2026
8a173d4
Lend a new formatting context no margin for its first line's annotations
dfrg Oct 13, 2026
4abd3e8
Collapse margins through an inline formatting context only without a …
dfrg Oct 13, 2026
484e129
Draw an inline box's outline, and its borders snapped and seamless
dfrg Oct 13, 2026
cf3c75b
Turn on Stylo's prefs before parsing a user-agent sheet
dfrg Oct 13, 2026
bd5c44e
Build the WPT runner with file inputs
dfrg Oct 13, 2026
908de97
Draw progress bars, meters, sliders and color wells, in any writing mode
dfrg Oct 13, 2026
8d1f508
Paint an atomic inline in its place in winkin's line
dfrg Oct 13, 2026
b44964a
Show a list box's options, as many rows as its display size
dfrg Oct 13, 2026
7ca7111
Leave the white space a wrapped line ends in out of a Parley editor's…
nicoburns Oct 12, 2026
c24bb93
Set the line height the innerText geometry test reads
nicoburns Oct 12, 2026
199f633
Run CI's WPT tests with the winkin text backend, in place of Parley
nicoburns Oct 9, 2026
681882e
Add "just browink" command
nicoburns Oct 9, 2026
7b3ed1d
Format the text backend branch
nicoburns Oct 13, 2026
169ba5e
Move by words through the standard key bindings in the text input tes…
nicoburns Oct 12, 2026
3a9ed28
Keep a display: contents node that holds a table part out of the anon…
nicoburns Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 30 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,33 @@ jobs:
- run: sudo apt-get update && sudo apt-get install -y libfontconfig1-dev
- run: cargo build --workspace

# The text backend features: Parley (the default), winkin alone, both (Parley wins),
# and neither, which must fail to compile.
check-text-backends:
name: "Check text backends"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: sudo apt-get update && sudo apt-get install -y libfontconfig1-dev
- name: Parley (default)
run: cargo check -p blitz-dom -p blitz-paint -p blitz -p wpt
- name: winkin alone
run: |
cargo check -p blitz-dom --no-default-features --features winkin,system-fonts,svg
cargo check -p blitz-paint --no-default-features --features winkin,svg
cargo check -p blitz --no-default-features --features winkin,net
cargo check -p browser --no-default-features --features winkin,hybrid
cargo check -p wpt --no-default-features --features winkin,cpu
- name: Both (Parley is used)
run: cargo test -p blitz-dom --features winkin --lib text::tests
- name: Neither fails to compile
run: |
if cargo check -p blitz-dom --no-default-features --features svg 2> neither.log; then
echo "blitz-dom built without a text backend"; exit 1
fi
grep -q "Enable one of the \`parley\` or \`winkin\` features" neither.log

# wasm_hello is a standalone workspace; seven_guis and todomvc are workspace
# members with a [lib] crate-type = ["cdylib"] target for wasm.
build-wasm-examples:
Expand All @@ -70,9 +97,9 @@ jobs:
run: cargo build --target wasm32-unknown-unknown
working-directory: examples/wasm_hello
- name: Build seven_guis (wasm)
run: cargo build -p seven_guis --lib --target wasm32-unknown-unknown --no-default-features --features hybrid
run: cargo build -p seven_guis --lib --target wasm32-unknown-unknown --no-default-features --features hybrid,parley
- name: Build todomvc (wasm)
run: cargo build -p todomvc --lib --target wasm32-unknown-unknown --no-default-features --features hybrid
run: cargo build -p todomvc --lib --target wasm32-unknown-unknown --no-default-features --features hybrid,parley

fmt:
name: Rustfmt
Expand All @@ -96,7 +123,7 @@ jobs:
components: clippy
- run: sudo apt-get update && sudo apt-get install -y libfontconfig1-dev
- run: cargo clippy --workspace -- -D warnings
- run: cargo clippy -p blitz-dom --no-default-features --features svg,woff,accessibility,system-fonts,file-input,custom-widget --all-targets -- -D warnings
- run: cargo clippy -p blitz-dom --no-default-features --features parley,svg,woff,accessibility,system-fonts,file-input,custom-widget --all-targets -- -D warnings

ci-scripts:
name: "Test CI scripts"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/wpt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
wpt:
name: "Run WPT Tests"
runs-on: warp-ubuntu-latest-arm64-16x
timeout-minutes: 15
timeout-minutes: 25
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -43,9 +43,9 @@ jobs:
- name: Clone WPT tests
run: git clone --depth 1 --revision "$(cat ./wpt/WPT_COMMIT)" https://github.com/web-platform-tests/wpt ./wpt/tests
- name: Build WPT runner
run: cargo build -rp wpt
run: cargo build -rp wpt --no-default-features --features cpu,winkin
- name: Run WPT tests
run: cargo run -rp wpt css svg
run: cargo run -rp wpt --no-default-features --features cpu,winkin css svg
- name: Compress report (zstd)
run: zstd -22 --ultra -o ./wpt/output/wptreport.json.zst ./wpt/output/wptreport.json
- uses: actions/upload-artifact@v7
Expand Down
Loading
Loading