Place a residual's spans where an emission could have placed them
A guard's markup is located by diffing the full render against one with
that guard off, and when what is deleted shares a boundary with what
follows it, several placements rebuild the render exactly. `placed` took
the latest and repaired only the ones that straddled a neighbour. That
covers the pair that overlaps and misses the one that does not: a span
read late but landing clear of everything else is a tree, and it is the
wrong tree, so nothing refuses it.
MNW's /c/{username}/{slug} is the site. A guarded description paragraph
and an unguarded item count both render as <p class="text"> around a
value, so the span was read 16 bytes late, into the second paragraph's
sentinel. Nothing straddled it, the residual built, and the served page
carried ZQH00000003HQZ where the description belonged.
What tells the placements apart is what an emission can place. A guard
places an emission and a loop places a body, so the run is a whole
element or a run of them: a placement starting inside a tag, closing an
element it did not open, or cutting a sentinel in half is markup no
emission produced, however exactly it rebuilds the render. `placeable`
takes the latest placement that is none of those, and the straddle
repair runs after it on what is left.
Exact on both known sites: /fan-plus's two guarded siblings, 22 bytes
late into the next <section id=">, and this one. Only ever narrows the
choices, so a genuine overlap still reaches `build`'s assertion.
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
- Claude-Session
- https://claude.ai/code/session_01P8ostB2UmZJGj5WjSHRSot
13 files changed,
+232 insertions,
-52 deletions
| 2706 |
2706 |
|
[[package]]
|
| 2707 |
2707 |
|
name = "makeover-webview"
|
| 2708 |
2708 |
|
version = "0.74.0"
|
|
2709 |
+ |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2710 |
+ |
checksum = "19502720cc808bdf7eead1f2393f270c4418cb1cc5cf0060cc33b31df87af063"
|
| 2709 |
2711 |
|
dependencies = [
|
| 2710 |
2712 |
|
"makeover-geometry",
|
| 2711 |
2713 |
|
"makeover-layout",
|
| 3474 |
3476 |
|
|
| 3475 |
3477 |
|
[[package]]
|
| 3476 |
3478 |
|
name = "quasi"
|
| 3477 |
|
- |
version = "0.103.0"
|
|
3479 |
+ |
version = "0.104.1"
|
| 3478 |
3480 |
|
|
| 3479 |
3481 |
|
[[package]]
|
| 3480 |
3482 |
|
name = "quasi-axum"
|
| 3481 |
|
- |
version = "0.103.0"
|
|
3483 |
+ |
version = "0.104.1"
|
| 3482 |
3484 |
|
dependencies = [
|
| 3483 |
3485 |
|
"axum",
|
| 3484 |
3486 |
|
"http",
|
| 3492 |
3494 |
|
|
| 3493 |
3495 |
|
[[package]]
|
| 3494 |
3496 |
|
name = "quasi-basics"
|
| 3495 |
|
- |
version = "0.103.0"
|
|
3497 |
+ |
version = "0.104.1"
|
| 3496 |
3498 |
|
dependencies = [
|
| 3497 |
3499 |
|
"makeover-layout",
|
| 3498 |
3500 |
|
"quasi-declare",
|
| 3503 |
3505 |
|
|
| 3504 |
3506 |
|
[[package]]
|
| 3505 |
3507 |
|
name = "quasi-bench"
|
| 3506 |
|
- |
version = "0.103.0"
|
|
3508 |
+ |
version = "0.104.1"
|
| 3507 |
3509 |
|
dependencies = [
|
| 3508 |
3510 |
|
"askama",
|
| 3509 |
3511 |
|
"dhat",
|
| 3524 |
3526 |
|
|
| 3525 |
3527 |
|
[[package]]
|
| 3526 |
3528 |
|
name = "quasi-declare"
|
| 3527 |
|
- |
version = "0.1.11"
|
|
3529 |
+ |
version = "0.1.13"
|
| 3528 |
3530 |
|
dependencies = [
|
| 3529 |
3531 |
|
"proc-macro2",
|
| 3530 |
3532 |
|
"quasi-router",
|
| 3536 |
3538 |
|
|
| 3537 |
3539 |
|
[[package]]
|
| 3538 |
3540 |
|
name = "quasi-http"
|
| 3539 |
|
- |
version = "0.103.0"
|
|
3541 |
+ |
version = "0.104.1"
|
| 3540 |
3542 |
|
dependencies = [
|
| 3541 |
3543 |
|
"form_urlencoded",
|
| 3542 |
3544 |
|
"http",
|
| 3545 |
3547 |
|
|
| 3546 |
3548 |
|
[[package]]
|
| 3547 |
3549 |
|
name = "quasi-immediate"
|
| 3548 |
|
- |
version = "0.103.0"
|
|
3550 |
+ |
version = "0.104.1"
|
| 3549 |
3551 |
|
dependencies = [
|
| 3550 |
3552 |
|
"docengine",
|
| 3551 |
3553 |
|
"egui",
|
| 3556 |
3558 |
|
|
| 3557 |
3559 |
|
[[package]]
|
| 3558 |
3560 |
|
name = "quasi-notifs"
|
| 3559 |
|
- |
version = "0.103.0"
|
|
3561 |
+ |
version = "0.104.1"
|
| 3560 |
3562 |
|
dependencies = [
|
| 3561 |
3563 |
|
"quasi-router",
|
| 3562 |
3564 |
|
"synckit-config",
|
| 3566 |
3568 |
|
|
| 3567 |
3569 |
|
[[package]]
|
| 3568 |
3570 |
|
name = "quasi-router"
|
| 3569 |
|
- |
version = "0.103.0"
|
|
3571 |
+ |
version = "0.104.1"
|
| 3570 |
3572 |
|
dependencies = [
|
| 3571 |
3573 |
|
"makeover-layout",
|
| 3572 |
3574 |
|
]
|
| 3583 |
3585 |
|
|
| 3584 |
3586 |
|
[[package]]
|
| 3585 |
3587 |
|
name = "quasi-tauri"
|
| 3586 |
|
- |
version = "0.103.0"
|
|
3588 |
+ |
version = "0.104.1"
|
| 3587 |
3589 |
|
dependencies = [
|
| 3588 |
3590 |
|
"http",
|
| 3589 |
3591 |
|
"quasi-http",
|
| 3594 |
3596 |
|
|
| 3595 |
3597 |
|
[[package]]
|
| 3596 |
3598 |
|
name = "quasi-tui"
|
| 3597 |
|
- |
version = "0.103.0"
|
|
3599 |
+ |
version = "0.104.1"
|
| 3598 |
3600 |
|
dependencies = [
|
| 3599 |
3601 |
|
"docengine",
|
| 3600 |
3602 |
|
"makeover",
|
| 3607 |
3609 |
|
|
| 3608 |
3610 |
|
[[package]]
|
| 3609 |
3611 |
|
name = "quasi-webview"
|
| 3610 |
|
- |
version = "0.103.0"
|
|
3612 |
+ |
version = "0.104.1"
|
| 3611 |
3613 |
|
dependencies = [
|
| 3612 |
3614 |
|
"docengine",
|
| 3613 |
3615 |
|
"makeover-layout",
|
| 6316 |
6318 |
|
name = "synckit-client"
|
| 6317 |
6319 |
|
version = "0.10.0"
|
| 6318 |
6320 |
|
|
|
6321 |
+ |
[[patch.unused]]
|
|
6322 |
+ |
name = "quasi-type"
|
|
6323 |
+ |
version = "0.1.3"
|
|
6324 |
+ |
|
| 6319 |
6325 |
|
[[patch.unused]]
|
| 6320 |
6326 |
|
name = "kberg"
|
| 6321 |
6327 |
|
version = "0.1.0"
|
| 6331 |
6337 |
|
[[patch.unused]]
|
| 6332 |
6338 |
|
name = "tagtree"
|
| 6333 |
6339 |
|
version = "0.4.1"
|
| 6334 |
|
- |
|
| 6335 |
|
- |
[[patch.unused]]
|
| 6336 |
|
- |
name = "makeover-build"
|
| 6337 |
|
- |
version = "0.67.0"
|
| 6338 |
|
- |
|
| 6339 |
|
- |
[[patch.unused]]
|
| 6340 |
|
- |
name = "quasi-type"
|
| 6341 |
|
- |
version = "0.1.3"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
description = "The axum host adapter for quasi-router: an HTTP request in, a rendered description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-basics"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
description = "The first-party widget set: named assemblies of primitives, shared across our apps"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
description = "What a described screen costs to render, in time and in allocations"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-http"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
description = "The http-shaped seam quasi's webview host adapters share: decoding in, a rendered description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-immediate"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
edition = "2024"
|
| 5 |
5 |
|
description = "The immediate-mode renderer for quasi-router: a described screen in, an egui frame out. Immediate mode is the constraint that matters, not the library."
|
| 6 |
6 |
|
license = "MIT"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-notifs"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
description = "Declared notification kinds and the registry that holds them: what a notification says and what it is for, apart from how it reaches a person"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-router"
|
| 3 |
|
- |
version = "0.104.0"
|
|
3 |
+ |
version = "0.104.1"
|
| 4 |
4 |
|
description = "Host-agnostic router: a request in, a renderer-agnostic description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|