Skip to main content

max / quasi

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
Author: Max Johnson <me@maxj.phd> · 2026-09-08 01:34 UTC
Commit: dc4f8cd6043dfed2bbd08d899e08133fa0874d29
Parent: b5a21fe
13 files changed, +232 insertions, -52 deletions
M Cargo.lock +18 -20
@@ -2706,6 +2706,8 @@
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,11 +3476,11 @@
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,7 +3494,7 @@
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,7 +3505,7 @@
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,7 +3526,7 @@
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,7 +3538,7 @@
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,7 +3547,7 @@
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,7 +3558,7 @@
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,7 +3568,7 @@
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,7 +3585,7 @@
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,7 +3596,7 @@
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,7 +3609,7 @@
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,6 +6318,10 @@
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,11 +6337,3 @@
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,6 +1,6 @@
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,6 +1,6 @@
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,6 +1,6 @@
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,6 +1,6 @@
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,6 +1,6 @@
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,6 +1,6 @@
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,6 +1,6 @@
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