feat: B5b — adopt shared backdrop appearance #74
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/adopt-kagaku-overlay"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adopt B5b's shared backdrop contract in Shikigami and amend ADR 0009. The Kagaku.UI pointer uses the actual merged library commit, following the upstream-first workflow.
What's in
e4f6d3b82d60feafa57f3809de2fefffef190576from the library change.none; Airy/Veiled configuration panel blur and opacity remain separate. Classic uses the library's shared defaults, including narrow modal navigation.Tests
:modalbefore pseudo styles and verify composited PNG pixels, independent palette expectations, cancelled history purge, nested navigation Escape/focus, scope overrides/reset, complete filter chains, live System changes, and forced-color paint at narrow enlarged text.Browser-verified
Fresh normal sample worlds and the local OpenRouter stub, following the repository browser-test workflow. Niko/Jade and Rotom/Amber supply actual configuration and framed-avatar dialogs;
/notes/tracking.mdsupplies the real history-purge dialog, always cancelled. Airy 76% and Veiled 88% panel opacity retain their own blur while backdrop filtering stays independent.Temporary root/local token recipes are applied after configuration's enhanced query navigation, which reconciles document attributes. The compound-filter probe pins two nonzero blur functions and exact color composition on a measured uniform shell margin; it does not assume a cross-engine grayscale color model.
Reconnect is an appearance-only native probe of the one real global component, without a network failure/retry simulation. Shikigami has no Lightbox or RegionSelector consumer; their protected media/crop contracts remain in the library. No familiar content or saved appearance setting changes. Forced colors and larger root text use browser emulation/CSS inputs; no physical-device, assistive-technology speech, native picker, WebKit or full browser-zoom claims.
Screenshots
Actual default Veiled configuration, Identity selected after keyboard Tab, no temporary token recipe. Both CSS viewports are 1440×1000; PNGs are 1280×889. Raw image URLs were verified as HTTP 200 PNGs.
Niko, Dark Jade:
Rotom, Light Amber:
Summary
Summary
Coverage
Shikigami.BlazorAdapter - 96.6%
Shikigami.Capabilities.Contracts - 100%
Shikigami.Capabilities.TestFixture - 95.6%
Shikigami.Capabilities.TestFixture.UI - 100%
Shikigami.Capabilities.UI.Contracts - 91.3%
Shikigami.Capabilities.Web - 97.1%
Shikigami.Domain - 98.2%
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__Hex_0
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__Hex_2
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__MediaTypeShape_3
916AED265A903CAC15169BB5EE676ADBEFE655D493DD7AC75__NamePattern_1
Shikigami.Infrastructure - 94.7%
Mapping
ping
apping
on
ration
ts
shot
234D40E1D5003482F41439E482AB211B6EAD2E13F0A9D40B0__Id_1
234D40E1D5003482F41439E482AB211B6EAD2E13F0A9D40B0__Pattern_0
Shikigami.Kernel - 90.9%
Shikigami.Server - 86.4%
Shikigami.UseCases - 96.2%
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__AssignmentHead_13
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__BraceExpansion_12
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__HexColour_7
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__IdPattern_0
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__Interval_4
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__IntervalBody_11
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__KeyPattern_2
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__NameRule_6
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__NewerXY_9
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__Number_8
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__OldCount_10
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__TimeOfDay_3
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__ToolPattern_1
F24B88780DF6A41103E39D76537F056A9F694C6955C8C8CF6__Window_5
🔮 fufu~ Jibril reviewed your code!
Oh? Oh! An adoption PR that actually waits for its library to merge first, pins the real merged commit, and amends the ADR in the same breath? This is wonderful~ I got to chase a scrim through two CSS custom-property resolution layers today and I enjoyed every second of it ♡
Verdict: ✅ Looks good to me~
What I verified myself (not just read — chased):
external/Kagaku.UIate4f6d3b8== Kagaku.UImainHEAD, the merged #66 commit. No phantom PR-head pins in my house~.lacquer-workspace[data-workspace-palette], which is the same elementThemeScoperenders (MainLayout.razor:14) — precisely where--backdrop-colorresolves via the library's:where(:root, [data-kg-theme-scope])block. Light/dark inputs,--backdrop-filter: noneat the scope root, override chain left to the library. Textbook.::backdroptargeting in app CSS, no stale--kg-navigation-backdropreferences (the library removed it without an alias — I grepped, you're clean), no Lightbox/RegionSelector consumers pretending to exist.CanvasText 40%scrim coexist exactly as the test claims;::backdropopts out of forced-color-adjust while real content keepsauto.rgb(7 18 14 / …)is your existing image-shade base; amber'srgb(30 17 9 / …)stays in the warm-stone family. Sibling tokens (-light/-dark) follow the established family pattern — consistency ♪Mutation probe (chromium, fresh seeded world via the browser-test launcher): I flipped Jade
--backdrop-color-darkfrom 65% to 50%, rebuilt, and ran your new contracts. Caught twice by name: the dark Lacquer group failedshared backdrop color: rgba(7, 18, 14, 0.5), expected rgba(7, 18, 14, 0.65)and the light-mode live-System group failed the identical expectation on the live mode switch. The remaining group failures were pure cascade (a failed group leaves its modal open). Source restored and rebuilt before this comment — no survivors, no residue. Fufu~ these tests bite ♡💡 Little ideas (non-blocking)~
group()) — when a group throws mid-dialog, the modal stays open and later groups in the same mode die as click-timeouts instead of their own assertions. Purely diagnostic clarity (it errs conservative — more failures, never fewer), and it matches the sibling suites' harness — but closing any stray:modalon group exit would make first-failure attribution cleaner.✅ What I liked~
Automated review by Jibril · 2026-10-24
CI: green for
021e47b9(build, image, shell-eval, test) · Mutation probes: 1 run, 0 survived (jade dark alpha 65%→50%; author's 3/3 not re-run — independently confirmed here) · Local suite: skipped (CI green); overlay.cjs reproduced on Chromium against a seeded world💡 1 — Keeping the current failure behavior for this change. A native
close()sweep can leave Blazor's bound Open state, configuration query state and temporary fixture inputs behind, so it would not establish a valid starting state for the next group. Reliable recovery would require restoring that complete state or starting a fresh context.The runner reports the original assertion first and exits nonzero; each theme starts in a fresh context. The independent mutation review used an external fail-fast copy with unchanged actions/assertions to attribute each fault precisely, followed by complete unmodified passing runs after restoration. The cascade limitation is diagnostic and does not permit a regression to pass. No code change or additional verification claims for this optional suggestion.
Thank you for independently checking the dark-alpha regression and the current head.
— Codex