• v0.14.0 fa8d22ebf6

    v0.14.0
    All checks were successful
    E2E / deployment (push) Successful in 1m3s
    Build Web image / Build and push Web image (push) Successful in 3m7s
    Check / fmt + clippy + build + tests (push) Successful in 3m24s
    Build API image / Build and push API image (push) Successful in 14m47s
    Stable

    nrupard released this 2026-08-13 15:24:23 +02:00 | 4 commits to main since this release

    Changelog

    fa8d22e Merge pull request 'Release v0.14.0' (#532) from release/v0.14.0 into main
    d2d5a42 Release v0.14.0
    2522b70 Merge pull request 'fix(apps): resolve the Let's Chat link to chat.{domain}, not the slug (BUNYIP-533)' (#531) from fix/BUNYIP-533-lets-chat-subdomain into main
    43e043b fix(apps): resolve the Let's Chat link to chat.{domain}, not the slug (BUNYIP-533)
    86e631c Merge pull request 'feat(admin): proactive Stripe key permission self-test on /admin/stripe (BUNYIP-532)' (#530) from feat/BUNYIP-532-stripe-permission-self-test into main
    781b003 feat(admin): proactive Stripe key permission self-test on /admin/stripe (BUNYIP-532)
    36338fb Merge pull request 'chore(secrets): retire sync-secrets.nu; Group-1 not from Infisical (BUNYIP-531)' (#529) from chore/BUNYIP-531-retire-sync-secrets into main
    1dc0182 chore(secrets): retire sync-secrets.nu; Group-1 secrets are not from Infisical
    ce2cb5a Merge pull request 'docs(secrets): Infisical folder paths are project-relative (BUNYIP-530)' (#528) from docs/BUNYIP-529-secret-path-runtime into main
    cdf8f01 docs(secrets): Infisical folder paths are project-relative (/runtime, not /bunyip/runtime)
    fc0c0a0 Merge pull request 'feat(secrets): make SMTP_PASSWORD Group-2-only (BUNYIP-529)' (#527) from feat/BUNYIP-529-smtp-group2-only into main
    5f1d9cf docs(compose): note the Group-2 runtime fetch in the secrets header
    9a7e77a feat(secrets): make SMTP_PASSWORD Group-2-only (Infisical, not a file secret)
    1fae7fe Merge pull request 'docs(secrets): document the Group-2 Infisical runtime fetch (BUNYIP-528)' (#524) from docs/BUNYIP-528-group2-infisical-docs into main
    86928a0 Merge pull request 'docs(admin): explain why a Stripe price is replaced, not edited (BUNYIP-511)' (#526) from docs/BUNYIP-511-explain-price-immutability into main
    61cd03a docs(admin): explain why a Stripe price is replaced, not edited (BUNYIP-511)
    8c1521b Merge pull request 'feat(admin): tier/pricing config cohesion - mapping home, checkout-trial, (none) clearing, per-tier visibility (BUNYIP-527)' (#525) from feat/BUNYIP-527-tier-config-cohesion into main
    11ea8fe feat(admin): tier/pricing config cohesion - mapping home, checkout-trial relocation, (none) clearing, per-tier visibility (BUNYIP-527)
    7bf1c32 docs(secrets): document the Group-2 Infisical runtime fetch, sweep stale secret docs
    0f7d8fd Merge pull request 'fix(pricing): show each tier's own trial and reflect slot availability on /pricing (BUNYIP-526)' (#522) from feat/BUNYIP-526-per-tier-trial-and-availability into main
    8c8b233 Merge pull request 'feat(secrets): fetch Group-2 SMTP secret from Infisical at runtime (app-native, BUNYIP-525)' (#523) from feat/BUNYIP-525-infisical-runtime-fetch into main
    b17e068 Merge pull request 'feat(admin): edit Stripe products and replace prices from /admin/stripe (BUNYIP-511)' (#521) from feat/BUNYIP-511-edit-products-replace-prices into main
    7b1b1ae feat(secrets): fetch Group-2 SMTP secret from Infisical at runtime (app-native)
    8a5d4f9 fix(pricing): show each tier's own trial and reflect slot availability on /pricing (BUNYIP-526)
    ede6502 feat(admin): edit Stripe products and replace prices from /admin/stripe (BUNYIP-511)
    798e975 Merge pull request 'feat(admin): move the /pricing publish switch into the Stripe tier catalog mapping (BUNYIP-524)' (#520) from feat/BUNYIP-524-pricing-switch-in-catalog-mapping into main
    8f52b09 feat(admin): move the public /pricing publish switch into the Stripe tier catalog mapping (BUNYIP-524)
    8d5e4da Merge pull request 'fix(pricing): exempt /v1/pricing from the rate-limit floor and cache it in the BFF (BUNYIP-518)' (#517) from fix/BUNYIP-518-pricing-ratelimit-floor-exempt into main
    026ad66 fix(pricing): exempt /v1/pricing from the rate-limit floor and cache it in the BFF (BUNYIP-518)
    c099489 Merge pull request 'fix(stripe): name the missing permission, stop faking an empty list' (#514) from fix/BUNYIP-516-stripe-permission-errors-visible into main
    1c8faf5 fix(stripe): name the missing permission, stop faking an empty list
    443da76 Merge pull request 'feat(admin): derive a tier's Stripe product from its mapped price (BUNYIP-517)' (#516) from feat/BUNYIP-517-derive-tier-product-from-price into main
    42d1754 Merge pull request 'feat(admin): unarchive a Stripe product or price from the admin Stripe page (BUNYIP-513)' (#515) from feat/BUNYIP-513-unarchive-stripe-plan into main
    f9914db feat(admin): derive a tier's Stripe product from its mapped price (BUNYIP-517)
    013a459 Merge branch 'main' into feat/BUNYIP-513-unarchive-stripe-plan
    04b652b feat(admin): unarchive a Stripe product or price from the admin Stripe page (BUNYIP-513)
    0e737dd Merge pull request 'fix(admin): archive Stripe plans all-or-nothing with a member guard (BUNYIP-512)' (#513) from fix/BUNYIP-512-archive-cascade-and-member-guard into main
    fec98ca fix(admin): archive Stripe plans all-or-nothing with a member guard (BUNYIP-512)
    e1e6afb Merge pull request 'fix(pricing): publish every mapped tier and name every silent cause' (#512) from fix/BUNYIP-515-pricing-multi-tier-and-visible-reasons into main
    0a30bcf fix(pricing): publish every mapped tier and name every silent cause
    9a38eee Merge pull request 'fix(web): restore always-visible, grabbable scrollbars' (#511) from fix/BUNYIP-509-visible-scrollbars into main
    e0c7989 fix(web): restore always-visible, grabbable scrollbars
    7e9b705 Merge pull request 'fix(admin): show the real Stripe webhook URL and fix the copy' (#510) from fix/BUNYIP-510-stripe-webhook-url-copy into main
    b0a6a25 fix(admin): show the real Stripe webhook URL and fix the copy
    50aeea9 Merge pull request 'feat(email): send a real test message from admin Email' (#509) from feat/BUNYIP-508-admin-test-email-send into main
    68d74af feat(email): send a real test message from admin Email
    b30888e Merge pull request 'fix(email): announce a configurable SMTP EHLO name' (#508) from fix/BUNYIP-507-configurable-smtp-ehlo-name into main
    e8ee656 fix(email): announce a configurable SMTP EHLO name
    ec89432 Merge pull request 'fix(web): make API response decoding skew-tolerant' (#507) from fix/BUNYIP-506-skew-tolerant-decoding into main
    5ecf063 fix(web): make API response decoding skew-tolerant

    Downloads