Merge b626-631 (batch #626+)

Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
Joseph Doherty
2026-10-08 14:43:45 -04:00
2 changed files with 18 additions and 0 deletions
@@ -142,6 +142,13 @@
try
{
_keys = await Keys.ListAsync(default);
// The one-time banner is only meaningful while its key exists; the credential is
// otua_<keyId>_<secret>, so drop it once no listed key matches (deleted here or elsewhere).
if (_created is not null
&& !_keys.Any(k => _created.StartsWith($"otua_{k.ApiKeyId}_", StringComparison.Ordinal)))
{
_created = null;
}
}
catch (Exception ex)
{
@@ -48,3 +48,14 @@
flex: 0 0 18px;
width: 18px;
}
/* Modal backdrop overran the viewport on /raw (#631). The theme's `.rise` entrance animation runs with
`animation-fill-mode: both`, which keeps its final keyframe's transform applied for good — and ANY
transform (even the identity it leaves) makes that section the containing block for position:fixed
descendants. A modal rendered inside a `.panel.rise` therefore had its fixed backdrop offset by the
panel's left edge, so it ran 240px past the viewport and the page grew a horizontal scrollbar.
`backwards` keeps the hidden start state during the stagger delay but drops the transform once the
animation ends. (Upstream fix belongs in ZB.MOM.WW.Theme's theme.css.) */
.rise {
animation-fill-mode: backwards;
}