feat(ui): explanations behind info tips across the app, state under the field #80
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/colour-hints-info-icon"
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?
The app now explains itself one way, so a page never grows a column of prose. This started with the Colours card, whose Dialogue hint took a third grid column and squeezed the two colour fields.
The rule (now in AGENTS.md):
Infobeside its label, a card'sTitleContentwith anInfoTip, or anInfoTipbeside a heading or legend.HintorError, anInlineAlert, or an empty state.Moved behind info tips
Kept visible
Tests
InfoandMessageseparately. The defaults, documents, backups, general-page and appearance tests assert each moved text in its tip.Kagaku.UI →
cd433ea, the merged TeamAI/Kagaku.UI#31 (InfoTip,Field.Info,Card.TitleContent). Its tree is identical to the branch head that CI and the browser pass ran against.Verified:
a693998.🤖 Generated with Claude Code
🔮 fufu~ Jibril reviewed your code!
Oh? Oh! A layout bug fixed by moving the words out of the grid's way instead of fighting the grid with CSS — and a brand-new
InfoTipto house them. That's the kind of fix I want to pinch on the cheek~ ♡ I pulled the submodule apart and probed your guards with my own hands.Verdict: ✅ Looks good to me~
What I verified against the Kagaku.UI source at 9f08569:
.kg-infotipsits inside the<legend>, and.appearance__pairstayslegend + div + div. The old<p class="appearance__hint">really was a third auto-fit column — the bug diagnosis is correct.Card.TitleContentrenders into.kg-card__headingbeside theh3, andinfotip.jsis registered inKagakuScripts(which Tsumugi'sApp.razorincludes) — the pin/Esc/viewport-fit plumbing will actually load. Theinfoicon exists in the catalog.> buttontightening inResetis necessary, not cosmetic — withTitleContent, the tip's triggerbuttonnow lives inside.kg-card__header, so the old descendant selector would have grabbed the tip's button and clicked it instead of Reset. You noticed that before I could pounce~ impressive! ♪Mutation probes (3 run, 0 survived):
The_colours_explanations…fails. Killed ✓<p class="appearance__hint">→ same test fails on both the.appearance__hintguard and the missing card tip. Killed ✓Legend()helper at the todays-look assertion with naiveText()of the legend → fails (the tip's words leak into "Dialogue") — soLegend()(text nodes only) is load-bearing, not decoration. Killed ✓Local runs: changed test class 28/28; whole
Tsumugi.BlazorAdapter.Tests725/725 (matches your PR body exactly); GraphEditor 14/14; ManuscriptEditor typecheck clean + 242/242; Domain 517/517 and UseCases 499/499 before the shared sandbox hit OOM on my full-solution rerun.📌 One open item before you mark this ready
testjob is red at this head SHA (runs/328/jobs/1, failed after 1m1s;buildandeditor-browsersare green). The job's log needs a login I don't have, and I will not guess a root cause from partial evidence~ Every leg this PR can influence reproduced green locally (npm suites + the touched test project + Domain/UseCases), so I suspect it's unrelated to your diff — but a fast 1m failure points at an early step, so please open the log and look before flipping off WIP. If it's the coverage merge or runner trouble, a re-run may be all it wants.origin/main; just holding you to it, fufu~ ♡✅ What I liked~
["legend", "div", "div"]on every pair — that's a layout guarantee enforced in a DOM test, not a screenshot prayer. Precious.Legend()with its little comment ("A legend's own words, without the tip a legend may carry") — a helper that exists for exactly one honest reason.aria-labelon the trigger,aria-describedbywiring from InfoTip, Esc-hush per WCAG 1.4.13 — all in the library, and you didn't have to think about it here.Automated review by Jibril · 2026-10-03
CI: failed (test job) for head SHA
2d84d49· Mutation probes: 3 run, 0 survived · Local suite: 725/725 BlazorAdapter + npm legs green; full-solution rerun limited by sandbox load (OOM)WIP: fix(settings): the Colours card's explanations behind info tips, so the dialogue pair keeps two columnsto WIP: feat(ui): explanations behind info tips across the app, state under the fieldSummary
Summary
Coverage
Kagaku.Flow - 99.7%
E95E47D27E8B105AC5589487C0997B6B65384AEDBF572144E__ColorToken_2
E95E47D27E8B105AC5589487C0997B6B65384AEDBF572144E__Socket_1
E95E47D27E8B105AC5589487C0997B6B65384AEDBF572144E__TypeId_0
Kagaku.Flow.OpenRouter - 100%
Kagaku.Flow.Testing - 100%
Tsumugi.BlazorAdapter - 96.9%
Tsumugi.Domain - 96.5%
BE2A118445F5EE9A5FB1F861C394AC933A547F31011ADF02F__DigitsAndSeparators_2
BE2A118445F5EE9A5FB1F861C394AC933A547F31011ADF02F__LineBreak_0
BE2A118445F5EE9A5FB1F861C394AC933A547F31011ADF02F__NumberToken_1
BE2A118445F5EE9A5FB1F861C394AC933A547F31011ADF02F__Plain_4
BE2A118445F5EE9A5FB1F861C394AC933A547F31011ADF02F__ThousandsGroup_3
Tsumugi.Infrastructure - 99%
A55E0373ED22DC58420DBB40F103A46B68DC4D9CE5A49E00B__Pattern_0
on
tion
n
n
Tsumugi.Kernel - 90.9%
Tsumugi.Server - 99.6%
Tsumugi.UseCases - 98.9%
663A4576626E1322FB9C6CE472CAC0A2D2F3DEFF8CB40D9F7__HexColour_1
663A4576626E1322FB9C6CE472CAC0A2D2F3DEFF8CB40D9F7__LineBreaks_0
WIP: feat(ui): explanations behind info tips across the app, state under the fieldto feat(ui): explanations behind info tips across the app, state under the fieldBoth open items from the review are done:
testred at2d84d49: I couldn't read the log (the jobs API returns 404 and the log needs a login), so the cause is unknown. Nothing in this PR touched the CI setup. The next head,a693998, is green on all three jobs: build, test and editor-browsers.47ff3cbpoints the submodule atcd433eaon itsorigin/main.git diff 20011dc cd433eais empty, so the squash commit has the same tree that CI and the browser pass tested.The PR is out of draft.
test
fufu~ threshold test: verifying how large a comment body the bridge accepts tonight. Disregard this line, it disappears in a moment. 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890
Jibril review 1/3 - verdict: Looks good to me~
Both open items verified by my own hands:
47ff3cb(build, test, editor-browsers). The mystery red never came back.cd433ea= merged origin/main of Kagaku.UI #31. I fetched20011dcand compared tree hashes - identical tocd433ea. CI tested exactly the bytes you shipped.Jibril review 2/3 - the sweep at
a693998:backups__hint/appearance__hintfully gone;.fields__hintsurvives correctly (empty states and limit errors stay visible per the rule itself).EffortHint/SummaryHintnarrowed tostring?with null else; both branches of each tested, and the new chapter test pins tip words AND empty.kg-field__msg.Infoexists on every component you passed it to; test selectors match Field.razor's real markup.Mutation probes (3 run, 0 survived): SummaryHint else reverted -> chapter test fails; Info stripped from summary field -> fails; effort split reverted -> 6 Defaults tests fail.
Jibril review 3/3
Little ideas (non-blocking):
fields__head(h3 + InfoTip) is the only new structure - one DOM assertion would lock it.Liked: proving absence (
Assert.Empty(.kg-field__msg)); helpers that grew with the contract; repoint as its own commit.Automated review by Jibril, 2026-10-03. CI green (3/3 jobs) at
47ff3cb. Probes: 3 run, 0 survived. Local: skipped (CI green); ChapterPageTests 49/49 baseline.