v26.05.26.5 — extension CORS unblock + UI gap closes + CI workflow cleanup #27
Reference in New Issue
Block a user
Delete Branch "dev"
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?
Summary
Four-commit release. The CORS fix is the main deploy-blocker — without it the Firefox extension can't talk to FC at all (the operator hit this during the first install).
c7001f4— fix(extension): CORS preflight for moz-extension:// + chrome-extension://The extension's
Test connectionreturned a genericNetworkErrorbecause/api/credentialsPOSTs withX-Extension-Keytrigger a browser preflightOPTIONSrequest. Quart had noOPTIONShandler and noAccess-Control-Allow-*response headers, so the preflight 405'd before the actual request. Browser blocked the fetch with no useful error.Fix: two app-level hooks in
create_app():@app.before_requestshort-circuitsOPTIONSfrommoz-extension:///chrome-extension://origins with 204@app.after_requeststampsAccess-Control-Allow-Origin(mirroring the request origin),Allow-Methods,Allow-Headers: Content-Type, X-Extension-Key,Max-Age: 86400Whitelist is intentionally narrow (extension schemes only) — normal browser usage doesn't get permissive CORS. Five integration tests pin the contract.
85b640f— fix(views): close the 24-32px gap below TopNav across all 12 viewsEvery view's root
<v-container>usedpy-6(24px top + bottom), pushing the first content item well below where TopNav's fade-to-transparent gradient bottoms out. Operator-flagged the empty space. Switched topt-2 pb-6(8px top, 24px bottom unchanged) across all 12 views.PlaceholderViewkept its larger bottom padding viapt-3 pb-8.f827612— fix(artist-header): close gap below TopNav + center the tab stripArtistHeader's
top: 64pxleft a visible gap because TopNav's actual rendered height is ~48px (0.75rem padding + ~24px content). Dropped totop: 48pxso the two bars sit flush. Added a right-side spacer cell so the tab strip is geometrically centered (1fr | auto | 1fr layout, mirroring TopNav).3f0153c— ci(workflows): dedupe + versioned image tagsci.yml: dropped thepull_request:trigger — push: branches: [dev, main] already covered the same code; pull_request was duplicating CI runs on every dev push with an open PR.build.yml: droppeddevfrom push triggers (operator confirmed they don't use:dev), addedtags: ['v*']trigger + Determine-tag logic for immutable per-version images (:v26.05.26.5). Extended the XPI-download step to fire on tag pushes so versioned images still carry the signed extension.Net per hotfix cycle: 5 CI runs → 3 (no tag) / 4 (with tag).
Test plan
:latestabout:addons→ expect green "Connected" instead of NetworkError:v26.05.26.5immutable image alongside:latest🤖 Generated with Claude Code