chore(polish): integrate toasts, reports paging, loading motion; login centring floor for short windows; load-more uses notifyError; round records
Independent Staging Quality Gate / validate (push) Successful in 18m44s
Independent Staging Quality Gate / publish (push) Successful in 3m34s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-09-30 13:55:02 +08:00
co-authored by Claude Opus 5.5
parent 3e0c615fd8
commit da3ed2f3ab
9 changed files with 113 additions and 47 deletions
@@ -141,7 +141,11 @@ test("production refuses placeholder operator details", () => {
test("the login card stays centred; the legal footer takes its own bottom row (BUG-1122)", () => {
const styles = read("../src/app/globals.css");
const page = cssDeclarations(".auth-page", styles);
assert.match(page, /grid-template-rows:\s*minmax\(0, 1fr\) auto minmax\(0, 1fr\)/);
// Equal rows with room for the footer: a 0 minimum let the footer ride up over
// the card on windows 760px tall or less (seen in Chromium during acceptance).
assert.match(page, /grid-template-rows:\s*minmax\(56px, 1fr\) auto minmax\(56px, 1fr\)/);
assert.match(page, /padding:\s*0 var\(--space-8\)/, "no top-only padding: the card sits in the exact middle");
assert.match(cssDeclarations(".auth-shell", styles), /min-height:\s*min\(680px, calc\(100dvh - 128px\)\)/);
assert.match(page, /grid-template-rows:\s*minmax\(0, 1fr\) auto;/, "phones: card row then footer row");
assert.doesNotMatch(page, /place-items:\s*center/, "a single centred group is what pushed the card up");
assert.match(cssDeclarations(".auth-page > .auth-shell", styles), /grid-row:\s*2/);