• v0.7.1 16d27c91fc

    v0.7.1 — Demo/wizard ui-switcher fixes
    All checks were successful
    CI / test (push) Successful in 1m35s
    Stable

    pyr0ball released this 2026-03-24 12:31:49 -07:00 | 117 commits to main since this release

    Bug fixes

    Demo instance blank screen

    The demo instance (demo.circuitforge.tech/peregrine) was briefly showing Streamlit, then switching to a blank Vue SPA. Root cause: demo/config/user.yaml had ui_preference: vue, and sync_ui_cookie() bypassed the paid-tier gate in demo mode — so it happily navigated to the Vue SPA nginx container, which has no demo data wiring.

    Fix: sync_ui_cookie() now has an explicit early guard that forces pref = streamlit whenever DEMO_MODE=true, before any tier or preference logic runs. demo/config/user.yaml also reset to streamlit as belt-and-suspenders. Vue demo mode is tracked in #46.

    Cloud users stuck in Streamlit wizard

    Cloud users with ui_preference: vue set (e.g. provisioned manually) were landing in the Streamlit wizard instead of being redirected to Vue. Root cause: sync_ui_cookie() was only called after pg.run() in app.py, but the wizard gate called st.stop() first — so the cookie/redirect never fired.

    Fix: sync_ui_cookie() is now called inside the wizard gate block, before st.stop().

    Self-service free key provisioning 0.6.0

    Added to the CircuitForge website (separate repo):

    • /api/account/claim-free-key — idempotent endpoint; calls Heimdall /admin/provision so users can recover from auto-provision failures at signup without contacting support.
    • Account page claim card — shown when a Peregrine key is missing; one-click activation with success/error state.

    E2E tests (website) 0.5.0

    • signup-smoke.spec.ts — happy path: register → Heimdall provisions free key within 8s → login → product card visible on /account
    • claim-key-recovery.spec.ts — sad path: blocks Heimdall provision at signup, navigates to /account, asserts claim card visible, clicks it, asserts success
    Downloads