Repository navigation
INL1a-tags (v2): b, strong, em and i (T133), restacked onto the text stack - #105
Open
thejackshelton wants to merge 169 commits into
Open
thejackshelton wants to merge 169 commits into
thejackshelton wants to merge 169 commits into
Conversation
…xt px is proven in, and in the border shorthands css/values.ts: a math function in border, border-<side>, border-block(-start/-end) and border-inline(-start/-end) is the <line-width>, typed and refused as the border-*-width longhands are (css-backgrounds-3 §3.1, css-logical-1 §6.3); shorthands/border.ts and logical.ts assign it to the width. Fixtures (values group, ltr and rtl): values-calc-contexts-block, -flex, -positioned, -display-none, -root, -root-min-max put each of calc(), min(), max() and clamp() in every box property in the block, flex-row/column, relative, absolute (cb-ltr and cb-rtl), display-none and root contexts, and gaps in every flex line mode and on a non-flex container, plus px, rem and % insets, flex-basis and gaps on a static block; values-calc-border-shorthand; values-calc-length-max, the CSS_LENGTH_MAX golden (T118J): Chrome collapses float(33554429) with -33554430 to -2 device px at every DPR. values-reject-order-fraction pins the order refusal. Retargets: values-reject-border-shorthand moves from calc(1px + 0.5vw), now accepted, to calc(1px * 2px / 1px) solid #000, still refused (typed arithmetic), refused on border-left-width. values.test.ts blinkNumber writes printf %g (3.35544e+07), which the new computed values need.
…ture, then pnpm run profile:rows and pnpm run parity:capture three times to the fixed point, then pnpm run profile:rows; pnpm run parity:dpr-capture; pnpm run layout:vectors; pnpm run layout:dpr-vectors; pnpm run layout:break-vectors; pnpm run parity:break-capture; pnpm run parity:pixel-capture; pnpm run native:gen; node --conditions=dragon-internal examples/music-player/tools/check.ts (pnpm run north-star:check lacks the condition, T124); pnpm run parity:glyph-b3 -- --write-bottom-pins; node --conditions=dragon-internal packages/parity/src/cli/media-sweep.ts (then --check: 18/18, 286 samples); pnpm run wpt:run -- --target web and pnpm run wpt:update-expectations -- --target web (no change); pnpm run tw:sweep. Profiles: 1922 rows added on each target (web and ios exact, android unsupported), none removed or changed. Tailwind 4.3.3: web and ios 2214 -> 4121 supported, none the other way, 0 mismatch
…nes -- --run-host) for the CALC-2 cases; device lanes not run (device step pending, landing-queue rule)
…h its own height treated as auto (T128) css-flexbox-1 §4.5 content size suggestion; ported from Blink third_party/blink/renderer/core/layout/flex/flex_layout_algorithm.cc at 145.0.7632.6 (BSD, The Chromium Authors; sha256 b0ea68654c62d2ca1d73d801ffca395901aa37e51569281266fc9ef87a9e892c) lines 914-923 and 1117-1120 (LayoutResult::IntrinsicBlockSize). A percentage height child of such an item is refused as percent-height-flex, since Blink resolves it against the item's set height.
…ontainer shorter than its items, px and calc() heights, empty and non-empty content, ltr and rtl; Chrome captures from pnpm run parity:capture and pnpm run parity:dpr-capture
…ize (flex_layout_algorithm.cc lines 1078-1084 at 145.0.7632.6): an item that cannot shrink takes its specified size without measuring its content, which gives the same used size and avoids 4 percent-height-flex refusals
…enerated), rt-hit.ts (Chrome 145 hit test with the T063J inline rule), the hit table, hit capture and report, the states fixture group
…eld-r1: faults.ts keeps both field sets; lanes.ts takes master's SUITE_LINE; grammar.generated.ts regenerated (pnpm run grammar:gen); out/lanes.json taken from master and regenerated later
…ure values-calc-flex-column-auto-min): pnpm run grammar:gen; pnpm run parity:capture and pnpm run profile:rows twice (fixed point); pnpm run parity:dpr-capture; pnpm run layout:vectors; pnpm run layout:dpr-vectors; pnpm run layout:break-vectors; pnpm run parity:break-capture; pnpm run parity:pixel-capture; pnpm run native:gen; node --conditions=dragon-internal examples/music-player/tools/check.ts; pnpm run tw:sweep; pnpm run wpt:run -- --target web; pnpm run wpt:update-expectations -- --target web; pnpm run parity:glyph-b3 -- --write-bottom-pins; node --conditions=dragon-internal packages/parity/src/cli/media-sweep.ts (then --check); pnpm run parity:lanes -- --run-host. Every existing vector and capture is byte-identical; emitted CSS changes only in the compilation-digest header; the new fixture adds its vectors, captures, pixel and break records; corpus.json and corpus-dpr.json carry the new engine digests
…unk); hit-capture identity manifest writer and hit-capture-identity.test.ts
…efused loudly by the hit table, the line ink gate from Skia's run-local glyph bounds, layers in order-modified paint order, layer clips; tap steps on the host runtime; rt-hit, pointer-events, hit report and identity tests; hit-pointer-events covers an absolute pointer-events: none track (the north-star context)
… run parity:hit-capture -- --identity-base 9b60a9e, then grammar:gen, parity:capture, profile:rows, parity:capture, profile:rows, parity:dpr-capture, layout:vectors, layout:dpr-vectors, layout:break-vectors, parity:break-capture, parity:pixel-capture, native:gen, node --conditions=dragon-internal examples/music-player/tools/check.ts, tw:sweep, parity:glyph-b3 -- --write-bottom-pins, node --conditions=dragon-internal packages/parity/src/cli/media-sweep.ts, parity:hit-capture twice; ua:capture earlier changed nothing more). Every capture and emitted file of 9b60a9e differs only by the pointer-events key (hit-capture-identity.test.ts); profiles gain only the pointer-events rows; expected-media changes only valuesCompared (one more longhand per element); RtHit.swift and RtHit.kt are new translated roots
…ed grid, pinned by the grid's sha256 (hit-capture/2): 15 MB to 2 MB
…y:hit-capture, run twice: the second run changes nothing): 468 cases, 703666 points
…rder, and px lengths clamped to the CSS length range Chrome places an rtl in-flow block child at line-left = ((Pb + border-padding) + additional) + margin-left with additional = ((available - inline size) - InlineSum()), so a margin-left near the CSS length minimum saturates and lands the box at x = 1.984375 px where CSS2 (and the engine) ignored it (block_layout_algorithm.cc 2799-2804, 3283-3304 at 145.0.7632.6, BSD). The engine now threads the container's BFC line offset and follows Blink's order for in-flow children (ComputeChildData), new formatting contexts (LayoutNewFormattingContext 2054-2169, no floats), ResolveInlineAutoMargins (length_utils.cc 1555-1574), the stretch size (46-65) and SlowToPhysical. px lengths are clamped after zoom like calc() results already were (measured: width 1e9px is 33554428 px at DPR 1 and 2). Without saturation the result equals the old closed form (pinned by a 2000-case test). New fixture values-length-saturation.
…it.ts (translated, the same function on host and device); P1 corpus hit suite (one line per layout vector at DPR 1, 2, 3 and 2.625: rt-hit harness op, corpus.ts suite hunk, targets.ts declares p1/hit from the vector counts); parity:hit-capture -- --vectors writes the hit facts
…ilder is rt-hit.ts hitTableOf
…ors, then pnpm run native:gen): RtHit.swift and RtHit.kt gain hitTableOf, hitGrid and hitRuns; the harnesses gain the rt-hit operation; corpus.json declares hit 1872; native:swift and native:kotlin give hit 1872/1872 and every other suite unchanged
… inline placement): pnpm run parity:capture, profile:rows, parity:capture, profile:rows (fixed point); pnpm run parity:dpr-capture; pnpm run layout:vectors; pnpm run layout:dpr-vectors; pnpm run layout:break-vectors; pnpm run parity:break-capture; pnpm run parity:pixel-capture; pnpm run native:gen; node --conditions=dragon-internal examples/music-player/tools/check.ts (no change); node --conditions=dragon-internal packages/parity/src/cli/media-sweep.ts (then --check: 18/18, 286 samples; no change); pnpm run parity:glyph-b3 -- --write-bottom-pins (no change); pnpm run wpt:run -- --target web and wpt:update-expectations -- --target web (no change); pnpm run tw:sweep (no change). No existing vector, capture or expectation moves: every changed tracked file is a new fixture's files, an emitted-CSS compilation header (bodies identical), 88 profile rows that gain values-length-saturation proof cases (no status changes), the generated Swift and Kotlin engines, the pixel manifest, and the corpus-dpr lock (+2 vectors-m2, +6 vectors-dpr/engine-dpr/snap-values lines; on identical corpus lines the old engine differs only on the 16 lines built from values-length-saturation-rtl (1 vectors-m2, 3 vectors-dpr, 4 engine-dpr, 8 engine-calc); corpus.json (the milestone-1 corpus with its 20000 random trees) is unchanged).
…nes --run-host) for the values-length-saturation cases; device lanes not run (device step pending, landing-queue rule)
…ve-swift and native-kotlin: hit 1872/1872 appended; intent kept: exact suite sizes, full passes); device-vectors pins p1/hit at 1872 and fails a short run; the identity test checks every manifest hash's shape
…parity:lanes --run-host) on the SELD-R1b head after merging origin/master: layout-vectors-host passes on ios and android with p1/hit 1872/1872 and p1/rt 54588/54588; device lanes not run until the device step
… keeps the engine's Ctx and Piece names (the native support code reads Ctx)
… run native:gen): the engine's Ctx and Piece keep their names; only RtHit and the harnesses change
…once, hitAt answers a point (hitTest is the two); hitRuns and the host compare prepare once per case. The Swift hit suite drops from 65 s to 19 s, so it no longer reaches the 180 s suite timeout when both host lanes run at once
…en); native:swift and native:kotlin keep hit 1872/1872
…t): seams and grid registry order gain pointer-events after grid (and INHERITED gains it); values stays the group before states; rt stays the P1 suite before hit; css-escapes twin count 13778 -> 13799 and the glyph-clearance counts per DPR grow with the eight hit-* cases. targets.ts derives the hit suite's DPR directories from DPRS (no DPR literal). The visiblePainted reject expects Dragon's lowercased message
…to seld-r1: lanes.ts takes master's SUITE_CAUSE; native-swift and native-kotlin pins take master's cause check with rt and hit appended; generated files taken from seld-r1a and regenerated in the next commit
…in: grammar:gen, ua:capture, parity:capture and profile:rows twice, parity:dpr-capture, layout:vectors, layout:dpr-vectors, layout:break-vectors, parity:break-capture, parity:pixel-capture, parity:hit-capture --vectors, native:gen, music-player check.ts, tw:sweep, parity:glyph-b3 --write-bottom-pins, media-sweep.ts, parity:hit-capture, wpt:run and wpt:update-expectations --target web, parity:lanes --run-host) and parity:hit-capture --identity-base 77c641e; north-star errors per target equal master's (android equals ios) and pointer-events has no diagnostic
…ain until phase R. The device runtime measures and draws only the bundled Ahem (emit/native-support.ts DragonBridge.measurer, layout/src/text.ts fontDataMeasurer), so the 11 shaped cases would have crashed or mismatched on devices and their ios and android rows rested on host lanes alone. - project.ts: InternalOptions.nativeRealFaces (off by default) gates phase C's realFaceAt; native keeps TXT1a-1's deferred font refusal and the engine lane lowers the case in engine mode; the option enters the digest when on. - The engine lane runs through engineLayoutProjection (pipeline.ts runCase, dpr.ts runDprCase, text-latin-run.ts shapedCaseIds), which is the native projection whenever native lowers; a case native refuses or a shaped case proves no native row (its ios features are empty). - The device cases are every layout case but the shaped ones: targets.ts device lane sets, native-host.ts nativeCases and lanes.ts referenceProof read vectorCaseIds. Tests: txt1a-native-compiler.test.ts turns phase C on to keep proving its lowering and adds the default-off guard; text-latin.test.ts pins the native refusal and engine lowering of every real-face case and that no shaped case is a device case, and compares engine with native projections where native lowers; native-host.test.ts and lanes.test.ts count device cases (vectorCaseIds); pixel-reference.test.ts proves the real-face glyph rule on phase C's lowering and its clearance pins drop TXT1a-2's term (no shaped case is sampled on devices)
…hose input hitRefusal accepts (corpus.ts hitCases leaves the INL1a inline-box and <br> vectors out); parity:lanes failed the declared 2080 against the derived 2028
…line boxes; review of #91) into txt1a-1a-v2. Conflicts: block.ts and harness.ts take TXT1a-1's shaping faults and master's order faults
…into txt1a-1-v2. Conflict: internal.ts keeps engineLayoutProjection beside SELD-R1b's hit facts
…nto txt1a-2-v2. Conflicts: .gitattributes, regen.ts and targets.ts keep both sides (SELD-R1b's hit steps and hit suite beside the text-latin vector outputs and device-case sets, device-states beside them); FIXTURE_GROUPS puts the text groups after SELD-R1b's states, so every new case stays appended last; values.test.ts pins that order; pixel-reference pins' comment covers both
…ged in (2d04d5c), whose FIXTURES hold 520 layout cases (C2 alone held 489); the pin still says TXT1a-1 leaves every FIXTURES layout case as its base has it
…atin.test.ts's BASE slice is 520 cases with that hash
… with seld-lanes-v2) into inl1a-tags-v2. Conflicts: text-latin.test.ts BASE is 520 cases plus TXT1a-2's and T133's, and T133's real-face cases are native-refused and no device cases like TXT1a-2's; values.test.ts pins the groups' order with states before the text groups
…/tmp/heavy-lease.sh pnpm regen (fixed point after 3 passes). The INL1a inline cases' captures gain SELD-R1b's pointer-events key; master's new cases' vectors gain INL1a's verticalAlign and strut inputs; the translated engines, profiles, corpus digests, pixel manifest, bottom-scanline pins, tw-sweep snapshot and lanes.json host lanes follow; emitted CSS headers move in their compilation digest
…'s break faults once (the merge had them twice, so every corpus line's 41 fault keys failed the harness's 45 and the corpus suites were all harness errors); hit-capture-identity.test.ts allows files beyond its base only for fixtures the base lacks (SELD-R1b's, and INL1a's inline fixtures merged after it), and still fails a file added to a base fixture
…nline-tags-faces is refused on ios and android until phase R, ready on web, and the engine lane lays it out; the original no-error compile holds under phase C's lowering (nativeRealFaces); the tags-change-the-faces check reads the engine projection, the faces the engine is given
…heavy-lease.sh pnpm regen (fixed point after 2 passes). The generated Swift and Kotlin harnesses list INL1a's break faults once, and lanes.json host lanes pass again
# Conflicts: # packages/translate/harness/harness.ts
…-lanes-v2 merged forward): /tmp/heavy-lease.sh pnpm regen (fixed point after 3 passes). The translated engines and harnesses (shaping and order faults), corpus digests and lanes.json host lanes
This branch has not been deployed
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.
Stacked, lands as the text-stack train after train 3. This branch is a restack onto INL1a (#88 B1, #89 B2, #90 C1, #91 C2), made by intent: C2 plus this branch's own change. Its base is
review/txt1a-2-v2, pushed at txt1a-2-v2's head 9f2f872, so the diff is this branch's alone. The text stack lands as one train after train 3; master is merged in during the train's catch-up. Host-only: no device run yet (pending-device).What changed
inl1a-tags(36e84c1e1):text-latin.test.tsbase pins (489, C2's hash).pnpm regen, fixed point):percentage-min-width.htmlnow stops atwidth: fit-contentinstead of<strong>.Tests and pins changed, with reasons
inl1a-tags.test.ts: Ahem text in b, strong, em or i keeps the UA-font refusal on android as well as ios. Master'scomputed-checks.tsrefuses it on every configured native target, and android became one after the branch was written. The message is the same, with the target named.What passed (host-side, this head)
/tmp/heavy-lease.sh pnpm regenreaches a fixed point; its outputs are in their own commit, whose message names the command.pnpm typecheckpasses.pnpm test: everything passes except the 12 device-record tests that need a fresh device run (lanes,lanes-records,lanes-concurrent,device-failures,p6a-promotion): device step pending. Load timeouts in the full run:inline.test,p6a-raster.test,text-latin.testandvalues.testtimed out under load and pass on rerun.🤖 Generated with Claude Code