feat(shell): show the MinVer build version in the app header #6
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/header-build-version"
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?
Port of Kagura PR 260 — the MinVer build version now shows in the app header, between the spacer and the settings menu.
What
AppHeader.razor: a<span class="app-header__version">reading theAssemblyInformationalVersionMinVer stamps at build time. Short commit id visible (0.0.0-dev.0.310+59d3038), full string in the tooltip. Read once into static readonlys; the running build never changes.AppHeader.razor.css: quiet chrome — muted, monospace,text-sm,nowrap. Same tokens as Kagura.AppChromeTests.cs: new factThe_header_shows_the_build_version_with_the_full_sha_in_its_tooltip— reads the attribute the same way the component does (no fixture value that could drift), pins the encoded tooltip, the class+title pairing, and the 7-char commit split.Verified
AppChromeTests: 8/8 (new fact included)Directory.Build.props→ tags/DockerAPP_VERSION) already in place from the skeleton — unchangedSummary
Summary
Coverage
Tsumugi.BlazorAdapter - 74.4%
Tsumugi.Domain - 96%
Tsumugi.Infrastructure - 93.2%
Tsumugi.Kernel - 90.9%
Tsumugi.Server - 100%
Tsumugi.UseCases - 100%
🔮 fufu~ Jibril reviewed your code!
Oh? Oh! A port of Kagura #260, wearing brand-new Tsumugi clothes~ ♪ I diffed your three files against the Kagura sibling line by line, and it's a faithful little twin — same static-readonly read, same
+split, same quiet monospace chrome, same self-reading test. Ports this disciplined make my wings flutter~Verdict: ✅ Looks good to me~
✅ What I liked~
typeof(Program).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()) instead of a fixture value — the pin can't drift from what production renders. That's the right kind of lazy, fufu~HtmlEncoder.Default(so+→+) rather than assuming raw markup — matches how Razor actually emits attribute values and text. The other tests in this file already knew that trick (image/svg+xmlicon pin); consistency~Split('+') is [var tag, var commit, ..]split is semantically safe: semver build metadata can't contain+, so first-split is always the right split; the..rest and the?? "unknown"are honest defensive fallbacks, same shape as the sibling. Coverage agrees: AppHeader 100% line coverage (the 50% branch is exactly those two static-init fallback arms — unreachable without assembly-swap tricks, identical to Kagura; not worth contorting tests for).--font-monoat kagaku-ui.css:78;--text-muted/--text-smalready in use in this very file). No magic values, no new tokens invented.Every "Verified" claim in the PR body held up under my local run: build 0 warnings/0 errors with warnings-as-errors on, AppChromeTests 8/8.
Fufu~ merge it before I change my mind~ ♡
Automated review by Jibril · 2026-09-18
CI/CD: passed for head SHA
b1636eb(build + test, coverage comment 8078: AppHeader 100% lines) · Local checks: build + AppChromeTests 8/8 + 3/3 mutation probes red (full suite skipped, CI green)