Commit Graph
99 Commits
Author SHA1 Message Date
ldm0 373edf56dd fix(layout): avoid subtracting SVG margins twice 2026-09-21 06:39:53 +08:00
ldm0 480416e50b fix(layout): size inline SVG icons from available space
Keep track of SVGs without intrinsic dimensions so a viewBox-only icon
stretches along the available inline axis instead of acquiring a fixed
150px natural size. Preserve author dimensions, aspect ratios, box insets,
and intrinsic percentage contributions; resolve absolute sizing probes
against their containing block and positioning insets.

Add Chromium-calibrated geometry and paint coverage for search icons,
padded containers, explicit and constrained sizes, absolute positioning,
and shrink-to-fit containers. Correct the older SVG paint expectation
that assumed the same 150px fallback.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast (18,310 passed, 13 skipped)
- Replayed the original Google document through moli serve: both the plus
  and apps icons are 24x24 instead of 150x150.
2026-09-21 06:39:53 +08:00
ldm0 984c20ec98 Fix table cell baselines and float vertical alignment 2026-09-18 16:19:13 +08:00
ldm0 d98b2255f1 Fix table cell containing blocks and measured baselines 2026-09-18 16:19:13 +08:00
ldm0 b1c012951c fix(layout): stabilize table layout and cache measurements
Index each row's cell range and row-group boundary to remove repeated
placement scans. Cache complete table measurement outputs, including
baselines, in an eight-entry LRU with layout cache invalidation.

Preserve caption minima, Flex table heights, percentage padding bases,
anonymous table behavior and the existing vertical layout path. Extend
the Chromium geometry fixtures and refresh the full WPT-cross case lists.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast: 18180 passed, 13 skipped
- WPT-cross all: 8779/12906 passed; table: 535/716 passed
- Table results unchanged by index/cache optimization; 28 full-run
  differences checked twice per binary with no stable new regression
2026-09-18 16:19:13 +08:00
ldm0 1a75321d36 fix(layout): resolve table row and section block sizes before Grid 2026-09-18 16:19:13 +08:00
ldm0 0f3e3acd4d fix(layout): preserve inline clearance below floats
Move inline content that cannot fit beside floats to the first suitable slot,
and retain that clearance in CSS baseline and container-height calculations.
This places GitHub's full-width Show more activity button below its timeline.

Update Taffy to e4e8f77c for float segment extension and content-slot fallback.
Preserve whitespace collapsing around out-of-flow loading hints and cover
float placement, staggered heights, and pre/nowrap behavior in regressions.
2026-09-18 12:43:03 +08:00
ldm0 61669e8740 perf(layout): reject point misses before shared clip checks 2026-09-17 14:53:54 +08:00
ldm0 29b5a36d5f perf(layout): stream point hit candidates before ordering results 2026-09-17 14:53:54 +08:00
ldm0 636d97e21c perf(layout): keep hit results free of unused box models 2026-09-17 14:53:54 +08:00
ldm0 43dd80a890 perf(layout): answer specialized geometry queries once 2026-09-17 14:53:54 +08:00
ldm0 5b7d151a78 fix(layout): avoid eager geometry for hit-test misses 2026-09-17 02:16:44 +08:00
ldm0 3f50eeb166 perf(fonts): reuse native Brotli for WOFF2 decoding 2026-09-15 15:11:52 +08:00
ldm0 8c8169bedd fix(fonts): update wuff to handle corrupt WOFF2 data
Upgrade wuff to 0.2.9 with compatible version requirements in the layout
and renderer test dependencies. Add a regression proving that corrupt
Brotli data returns a decode error and preserves an existing font.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast: 17574 passed, 13 skipped
- Release verification: the previous SIGABRT sample renders with fallback;
  valid-font screenshots remain byte-identical
2026-09-15 15:11:52 +08:00
ldm0 bdf76173fe fix(layout): clamp negative widths in intrinsic inline probes 2026-09-15 14:58:25 +08:00
ldm0 17e961433e feat(emulation): apply native view scaling and capture viewport 2026-09-15 14:46:31 +08:00
ldm0 46d5abcae3 feat(emulation): support default background color overrides 2026-09-15 14:46:31 +08:00
ldm0 226ceb3931 fix(table): span zero row spans to section end 2026-09-15 01:54:41 +08:00
ldm0 09257c15cf refactor(fonts): extract system font matching crate
Move Fontconfig matching, substitution policy, and the Fontique lookup cache into moli-system-fonts. Keep CSS family adaptation in moli-layout, migrate tests and fixtures, and retain the Skia notice in source comments.
2026-09-12 04:13:15 +08:00
ldm0 04fb84ce40 fix(fonts): reject unrelated system font substitutions
Split from window.chrome onto origin/main at 4b35bbc968. No other unmerged feature groups included.

Original-commits: 5f14c020f
2026-09-11 22:57:15 +08:00
ldm0 8d9acecc2f fix(layout): preserve double precision transform matrices
Split from window.chrome onto origin/main at 4b35bbc968. No other unmerged feature groups included.

Original-commits: 78d80d527
2026-09-10 20:30:55 +08:00
ldm0 ebe6551954 fix(layout): model flex static-position edges 2026-09-09 01:29:35 +08:00
ldm0 acb59e7107 fix(layout): paint flex and grid items atomically 2026-09-07 22:43:22 +08:00
ldm0 6faf462821 fix(table): preserve fixed percentage intrinsic maxima 2026-09-07 19:40:19 +08:00
ldm0 be6393b694 fix(layout): ignore ratios on internal table boxes 2026-09-07 18:49:41 +08:00
ldm0 07f8e8533a fix(layout): omit whitespace-only flex and grid items 2026-09-07 17:19:45 +08:00
ldm0 0e14d82486 perf(cssom): reuse size projections within style observations
Memoize a single-element property batch without building a full index, and derive one temporary sizing lookup per Document for multi-element observations. Route DOMSnapshot style collection through the shared observation and keep all projections scoped to the synchronous read.

Cover query counts, missing boxes, cold and mock reads, snapshot replacement, iframe isolation, and Inspector and DOMSnapshot capture paths.
2026-09-05 21:31:57 +08:00
ldm0 5ee69560fc fix(cssom): resolve logical sizes from sampled layout axes 2026-09-05 21:31:57 +08:00
ldm0 e02b58d0df fix(cssom): read used sizes from existing layout snapshots
Retain the sampled CSS sizing basis alongside frozen geometry. Resolve width and height only from an existing snapshot for the owning Document, without creating or refreshing layout; preserve style-only fallbacks otherwise.

Cover sizing boxes, zoom, replaced elements, Chromium-derived cases, and demand-driven snapshot lifecycles with renderer, layout, and CLI regressions.
2026-09-05 21:31:57 +08:00
ldm0 16a73930e9 test(layout): cover repeated collapsed-margin measurements 2026-09-03 23:49:49 +08:00
ldm0 f4fa0c70dd fix(layout): preserve table cell sizing and alignment 2026-09-03 23:49:49 +08:00
ldm0 c1204434f7 fix(layout): implement automatic table column sizing 2026-08-31 11:59:59 +08:00
ldm0 b045ea3d52 perf(layout): cache pure text intrinsic widths 2026-08-31 02:34:16 +08:00
ldm0 ac439e328e perf(layout): reuse shaped inline layouts across probes 2026-08-31 02:34:16 +08:00
ldm0 90a036d2b8 docs(layout): explain scrollbar corrective relayout 2026-08-30 19:46:56 +08:00
ldm0 9240c16283 perf(layout): summarize intrinsic inline placement 2026-08-30 19:46:56 +08:00
ldm0 e05ce5ef46 perf(layout): cache document font resolution 2026-08-30 19:46:56 +08:00
ldm0 b09fee1df2 feat(layout): expose resolved Grid tracks 2026-08-30 05:41:30 +08:00
ldm0 7f2efded61 fix(layout): establish filter containing blocks 2026-08-30 03:14:38 +08:00
ldm0 6c4103eefc perf(layout): localize overflow feedback projection 2026-08-30 00:55:04 +08:00
ldm0 112cfda8cb perf(layout): cull paint outside captures 2026-08-30 00:55:04 +08:00
ldm0 13a0609ffa perf(layout): reuse numeric scrollbar feedback 2026-08-30 00:55:04 +08:00
ldm0 59fa4f6c8a perf(layout): materialize inline fragments once 2026-08-30 00:55:04 +08:00
ldm0 b6d7693152 test(layout): cover paint clip stack reuse boundaries 2026-08-29 00:34:31 +08:00
ldm0 4117a16f2d perf(renderer): trace per-frame rendering phases 2026-08-28 15:18:42 +08:00
ldm0 06174c0549 perf(layout): reuse common paint clip prefixes 2026-08-28 15:18:42 +08:00
ldm0 a50bc689ed perf(renderer): reuse style work within layout observations 2026-08-28 15:18:42 +08:00
ldm0 65f53b667e fix(layout): resolve CSSOM metrics in absolute zoom space 2026-08-28 11:28:23 +08:00
ldm0 e5f4ef1f5f Resolve used aspect ratios at layout boundaries 2026-08-28 04:41:52 +08:00
ldm0 de242fbaec Fix one-dimensional inline offset geometry 2026-08-27 19:22:08 +08:00