-
v0.2.1
Stablereleased this
2026-06-08 21:38:22 +02:00 | 119 commits to main since this releaseChangelog
c1ed059Merge pull request 'Release v0.2.1' (#78) from release/v0.2.1 into main
0c2c1cbRelease v0.2.1
7fa0abaMerge pull request 'BUNYIP-58: force real bunyip-api rebuild, guard against oci-build stub leak' (#76) from fix/bunyip-58-oci-build-stub-leak into main
73d2cf7fix(oci-build): force real bunyip-api rebuild, guard against stub leak
da55b1eMerge pull request 'fix(oidc): register SPA clients from env-driven startup upsert (BUNYIP-57)' (#75) from fix/bunyip-57-env-driven-oidc-client-seed into main
c918f2efix(oidc): make post-logout URIs optional in SPA client upsert (BUNYIP-57)
8608d18fix(oidc): register SPA clients from env-driven startup upsert (BUNYIP-57)
518b9afMerge pull request 'fix(oidc): honor checked= flag on /login to break authorize redirect loop' (#74) from fix/oidc-login-redirect-loop-honor-checked into main
8d9e4defix(oidc): honor checked= flag on /login to break authorize loop
58a1e38Merge pull request 'fix(build): bump rust-builder-glibc to v1.0.1, drop bun workaround' (#73) from fix/bun-v1.0.1-drop-workaround into main
2b0f100fix(build): bump rust-builder-glibc to v1.0.1, drop bun workaround
ecf2b54Merge pull request 'chore: Sync .gitignore' (#72) from chore/sync-gitignore into main
dff36a0chore: Sync .gitignore
3f722bcMerge pull request 'fix(web): applications-page launcher points at /dashboard, not /' (#71) from fix/applications-launcher-points-at-dashboard into main
a7c2422fix(web): applications-page launcher points at /dashboard, not /
98ca4dcMerge pull request 'fix(auth): GET /v1/auth/logout 302s directly to url; /logout page lands on /' (#70) from fix/logout-honors-final-url into main
942b837fix(auth): GET /v1/auth/logout 302s directly to url; /logout page lands on /
b9a3f4cMerge pull request 'feat(auth): AuthenticatedUser accepts OIDC at+jwt alongside legacy HS256 (BUNYIP-55)' (#69) from feat/bunyip-55-authenticated-user-accept-atjwt into main
23c9abcfeat(auth): AuthenticatedUser accepts OIDC at+jwt alongside legacy HS256 (BUNYIP-55)
467ab5aMerge pull request 'fix(oidc): gate authorize on a server-validated OP session (BUNYIP-53)' (#67) from fix/bunyip-53-logout-terminates-op-session into main
005e017Merge pull request 'fix(web): make bun/bunx runnable by the host user in the dev image (BUNYIP-54)' (#68) from fix/bunyip-54-web-bun-permission into main
c992899fix(web): make bun/bunx runnable by the host user in the dev image
b4ab88dfix(oidc): gate authorize on a server-validated OP session
baf11fcMerge pull request 'feat(dev-sso): bunyip-api as the OIDC OP for hub and mokosh SPA' (#66) from feat/dev-sso-bunyip-as-op into main
ce45c85feat(dev-sso): make bunyip-api the OIDC OP for the hub and mokosh SPA
151be82Merge pull request 'feat(auth): GET /v1/auth/memberships synthetic single-tenant stub' (#65) from feat/auth-memberships-stub into main
ff79eb9feat(auth): GET /v1/auth/memberships synthetic single-tenant stub
9bfeee2Merge pull request 'feat(web): admin UI to edit and create application distribution config' (#64) from feat/bunyip-51-app-distribution-admin-ui into main
bd5a1bbfix(web): address review of application distribution admin UI
d52cff9feat(web): admin UI to edit and create application distribution config
5bd3046Merge pull request 'feat(admin): add revoke-lifetime-membership endpoint + UI' (#63) from feat/admin-user-management into main
e20979bfeat(admin): add revoke-lifetime-membership endpoint + UI
556f1c3Merge pull request 'fix(dev): escape literal paren in dev-sso print string' (#62) from fix/dev-sso-nushell-paren-escape into main
e963488fix(dev): escape literal paren in dev-sso print string
b5d0343Merge pull request 'fix(web): drop obsolete bun symlink workaround in dev Dockerfile' (#61) from fix/web-dockerfile-bun-base-image-update into main
c9da238fix(web): drop obsolete bun symlink workaround in dev Dockerfile
e7ec9c7Merge pull request 'feat/admin-user-management' (#60) from feat/admin-user-management into main
8f36030chore: remove stray mktemp file accidentally committed
b4377c2fix(admin): use axum 0.7 ':id' path-param syntax, not '{id}'
61c851dMerge pull request 'feat(admin): expand user management with detail page + new actions' (#59) from feat/admin-user-management into main
fff3968feat(admin): expand user management with detail page + new actions
e2d54b6Merge pull request 'fix(web): show forbidden/unauthenticated download errors distinctly (BUNYIP-49)' (#58) from fix/bunyip-49-downloads-forbidden-message into main
800261efix(web): handle 404 + add sign-in link on downloads error page (BUNYIP-49 review)
0d8726efix(web): show forbidden/unauthenticated download errors distinctly (BUNYIP-49)
bdca948Merge pull request 'feat: map DownloadCacheError via dunite ErrorClass in member-download handler (BUNYIP-48)' (#57) from feat/bunyip-48-download-errorclass into main
db252a7feat: map DownloadCacheError via dunite ErrorClass in the member-download handler (BUNYIP-48)
1f0b5e4Merge pull request 'feat: adopt dunite PSA-37 secret_env + PSA-42 acquire_concurrency_only; bump dunite dep' (#56) from feat/bunyip-47-adopt-dunite-psa37-42 into main
727ecb6refactor(oci): collapse always-Some concurrency guard to a plain UsageGuard (BUNYIP-47 review)
d9e299ffeat: adopt dunite PSA-37 secret_env + PSA-42 acquire_concurrency_only; bump dunite dep
36ef071Merge pull request 'fix(oci): daily pull limit counts logical pulls, not every manifest request (BUNYIP-43)' (#55) from fix/bunyip-43-oci-pull-count into main
63e1eb7fix(oci): address PR #55 review - extract should_meter + test, fix doc, note tradeoffs
53a7dfdfix(oci): daily pull limit counts logical pulls, not every manifest request (BUNYIP-43)
76989b9Merge pull request 'chore(compose): pass through distribution limit/TTL env vars (BUNYIP-42)' (#54) from chore/bunyip-42-compose-distribution-tunables into main
52a6a30chore(compose): pass through distribution limit/TTL env vars (BUNYIP-42)
4892c99Merge pull request 'fix(oci): blob cache total_size_bytes decode error broke LRU eviction (BUNYIP-41)' (#53) from fix/bunyip-41-oci-blob-eviction-pool into main
02dd8a8fix(download): same SUM-as-i64 decode bug in download cache; harden BUNYIP-41 test
a27f51dfix(oci): blob cache total_size_bytes decode error broke LRU eviction (BUNYIP-41)
a9df71fMerge pull request 'fix(oci): rate-limit failed token verifications, not successful pulls (BUNYIP-40)' (#52) from fix/bunyip-40-oci-token-rate-limit into main
eb7f399fix(oci): address PR #52 review - per-IP failure cap, dedup limit blocks
658e697fix(oci): rate-limit failed token verifications, not successful pulls (BUNYIP-40)
f3b4c42Merge pull request 'feat(entitlements): per-product access control with admin + Stripe grants (BUNYIP-39)' (#51) from feat/bunyip-39-per-product-entitlements into main
0ea20b1fix(entitlements): address PR #51 review findings
6d09f67feat(entitlements): per-product access control with admin + Stripe grants (BUNYIP-39)
be19611Merge pull request 'feat(deps): consume dunite PSA-36 (single-flight core + download Transport error class) (BUNYIP-44)' (#50) from feat/bunyip-44-dunite-psa-36 into main
d407788fix(download): map upstream NotFound to 404 and classify with an exhaustive match (PR #50 review)
8e4d08efeat(deps): consume dunite PSA-36 (single-flight core + download Transport error class)
dbe79c9Merge pull request 'fix(feedback): improve contrast of hero text (BUNYIP-45)' (#49) from fix/feedback-hero-bunyip-contrast into main
d85b113fix(feedback): raise contrast of hero "Bunyip" wordmark
ac3c796Merge pull request 'feat(applications): seed Drillmark as a hosted launcher tile' (#48) from feat/seed-drillmark-application into main
8b4797efeat(applications): seed Drillmark as a hosted launcher tile
efa868aMerge pull request 'fix(launcher): point app tiles at /dashboard so AuthGuard fires' (#47) from fix/launcher-tile-to-dashboard into main
cae06a4Merge pull request 'fix(cors): split CORS_ORIGIN comma-list into per-origin registrations' (#46) from fix/cors-allowed-origins-list into main
66e9934fix(cors): split CORS_ORIGIN comma-list into per-origin registrations
3eee826fix(launcher): point app tiles at /dashboard so AuthGuard fires
960e4ffMerge pull request 'fix(web): preserve ?redirect= through the 2FA hop' (#45) from fix/preserve-redirect-through-2fa into main
ff262cefix(web): preserve ?redirect= through the 2FA hop
c361409Merge pull request 'feat(applications): seed Mokosh as a hosted launcher tile' (#44) from feat/seed-mokosh-application into main
8fd483eMerge pull request 'fix(web): accept absolute OIDC issuer URLs in safe_redirect' (#43) from fix/bunyip-web-safe-redirect-allow-issuer into main
e7a2266feat(applications): seed Mokosh as a hosted launcher tile
e78b5cafix(web): accept absolute OIDC issuer URLs in safe_redirect
8569ee7Merge pull request 'fix(oidc): use single web_origin for login redirects, not the cors_origin list' (#42) from fix/bunyip-web-origin-for-oidc-login-redirect into main
b004bd2fix(oidc): use single web_origin for login redirects, not the cors_origin list
3e638f3Merge pull request 'feat(oidc): seed mokosh-apps + drillmark as public PKCE clients' (#41) from feat/bunyip-op-cutover into main
786ec10feat(oidc): seed mokosh-apps + drillmark as public PKCE clients
9f4e000Merge pull request 'feat(secrets): file-based production secrets via compose secrets (BUNYIP-38)' (#40) from feat/bunyip-38-file-based-secrets into main
6cfd663fix(secrets): address PR #40 review findings
ae84d2bfeat(secrets): file-based production secrets via compose secrets + {NAME}_FILE convention (BUNYIP-38)
2444718Merge pull request 'chore(toolchain): pin rust 1.94.1, fix clippy/fmt workspace-wide, deflake config tests (BUNYIP-36)' (#39) from chore/bunyip-36-rust-1.94-toolchain into main
75cf0f7fix(toolchain): address PR #39 review findings
ce68931chore(toolchain): pin rust 1.94.1, fix clippy/fmt workspace-wide, deflake config tests (BUNYIP-36)
bb21a68Merge pull request 'refactor(oci): consume dunite-oci shared limiter API and typed blob-cache errors (PSA-35)' (#38) from refactor/psa-35-dunite-oci-consumer into main
d8771c0refactor(oci): consume dunite-oci's shared limiter API and typed blob-cache errors (PSA-35)
498eaf1Merge pull request 'docs(dev-sso): distribution e2e smoke-test section (BUNYIP-35)' (#37) from docs/bunyip-35-e2e-smoke-tests into main
c94af88docs(dev-sso): rework smoke-test section per review; definitive cache proof
357f625docs(dev-sso): add distribution e2e smoke-test section from BUNYIP-35 run
b31736eMerge pull request 'feat(web): downloads page with OCI pull instructions and version listings (BUNYIP-34)' (#36) from feat/bunyip-34-downloads-oci-ux into main
9a13bcbMerge pull request 'fix(web-dev): web dev container crash-loops on bun permissions (BUNYIP-37)' (#35) from fix/bunyip-37-web-dev-bun into main
26fcec5fix(downloads): address PR #36 review findings
b69c8a4feat(web): downloads page with OCI pull instructions and version badges (BUNYIP-34)
b892859fix(web-dev): replace inaccessible bun symlink so dev container runs as host user (BUNYIP-37)
8a811baMerge pull request 'feat(catalog): seed Mokosh product catalog + one-call admin create + token audit (BUNYIP-33)' (#34) from feat/bunyip-33-catalog-entitlements into main
336a4dafix(catalog): address PR #34 review findings
eb96536feat(catalog): seed Mokosh product catalog + one-call admin create + token audit (BUNYIP-33)
5c43407Merge pull request 'feat(infra): distribution proxy in prod compose + dev-sso Traefik registry (BUNYIP-32)' (#33) from feat/bunyip-32-distribution-infra into main
a187680fix(infra): address code-review findings on the distribution infra PR
c11c4a7feat(infra): wire the distribution proxy into prod compose + dev-sso Traefik (BUNYIP-32)
18f6d64Merge pull request 'feat(oci): make registry verifiable against private Forgejo (BUNYIP-31)' (#27) from feat/bunyip-31-oci-private-forgejo into main
1de2587fix(oci): address code-review findings on the registry verification PR
824769bfix(oci): writable cache volumes + live verification results (BUNYIP-31 Phase B)
6ed7432Merge pull request 'revert(auth): restore Subscriber as default role on register' (#32) from revert/register-as-admin-staging into main
a7ccb73revert(auth): restore Subscriber as default role on register
59aee79Merge pull request 'fix(ci): pin Rust toolchain to 1.93.0' (#31) from fix/pin-rust-toolchain into main
1d78a84fix(ci): pin Rust toolchain to 1.93.0
234b6cfMerge pull request 'fix(web): silence dead_code + too_many_arguments lints' (#30) from fix/web-fmt into main
2c1912bfix(web): silence dead_code + too_many_arguments lints
43b5581Merge pull request 'style: cargo fmt --all (clears CI fmt-check failure)' (#29) from fix/web-fmt into main
a9d4117style: cargo fmt --all (clears CI fmt-check failure)
51bfdbeMerge pull request 'chore(auth): default new registrations to Admin role (staging only)' (#28) from chore/register-as-admin-staging into main
6a07c17chore(auth): default new registrations to Admin role (staging only)
9b2df2dfeat(oci): make registry verifiable against private Forgejo (BUNYIP-31)
403d9f8Merge pull request 'feat(download): consume dunite-download engine, drop hand-rolled code (BUNYIP-30)' (#26) from feat/bunyip-30-consume-dunite-download into main
2cc3fd7fix(download): address code-review findings on the dunite-download adoption
9b3cbe6chore: remove accidentally committed Claude session artifact, ignore .claude/
b85f53cfeat(download): consume dunite-download engine, drop hand-rolled code (BUNYIP-30)
97678a4Merge pull request 'docs(billing): sequenced M1 implementation plan on the locked decisions' (#25) from docs/billing-m1-plan into main
132ebfcdocs(billing): sequenced M1 implementation plan on the locked decisions
6cb33c7Merge pull request 'docs(billing): correct stale rebuild premise + add M1 billing gap matrix' (#24) from docs/billing-m1-audit into main
dd5accddocs(billing): correct stale rebuild premise + add M1 billing gap matrix
f33076fMerge pull request 'docs(dev-sso): add three-repo dev-sso runbook + design rationale' (#23) from docs/dev-sso-runbook into main
b31c85ddocs(dev-sso): add three-repo dev-sso runbook + design rationale
fde2743Merge pull request 'fix(ci): generate release notes from commits since previous tag' (#21) from fix/release-notes-since-prev-tag into main
4f863e1Merge branch 'main' into fix/release-notes-since-prev-tag
50131e9Merge pull request 'feat(dev): generate OIDC signing keys onjust devif missing' (#22) from feat/dev-ensure-oidc-keys into main
c7f6ae3fix(ci): generate release notes from commits since previous tag
7926e5bfeat(dev): generate OIDC signing keys onjust devif missing
87ffdcdMerge pull request 'fix(dev): export HOST_UID/HOST_GID (not UID/GID) for compose' (#20) from fix/dev-host-uid-mapping into main
ff6d817fix(dev): export HOST_UID/HOST_GID (not UID/GID) for compose
0244fddMerge pull request 'fix(dev-sso): mark the per-developer private network external' (#19) from fix/dev-sso-private-network-external into main
820516bfix(dev-sso): mark the per-developer private network external
0789192Merge pull request 'fix(dev-sso): route bunyip-web on nebula-secure via list-syntax labels' (#18) from fix/dev-sso-nebula-secure-list into main
61ebd28fix(dev-sso): route bunyip-web on nebula-secure via list-syntax labels
05df92bMerge pull request 'feat(dev-sso): make Traefik entrypoints overridable via TRAEFIK_ENTRYPOINTS' (#17) from feat/dev-sso-traefik-entrypoint-env into main
107f9acfeat(dev-sso): make Traefik entrypoints overridable via TRAEFIK_ENTRYPOINTS
c65075cMerge pull request 'feat: 100% a8n.tools parity - SSR frontend, dunite backend, governance conformance' (#16) from feat/bunyip-dunite-infra-boot into main
b51a15bfix(web): tolerate missing updated_at in API responses (register/login 'missing field')
4f5bfd3feat(web): restore the Bunyip mascot illustration in the hero
c1b6691feat(web): restore Bunyip styling + wording (reed/water theme, "Surfaces what matters")
7517a11fix(web): serve assets/styles.css (fix 404, broken styling)
c1e9a21chore: MIT license, secret-generating ensure-env, justfile groups, startup banners
2e5ee27feat: a8n.tools (menkent) parity - SSR frontend, governance conformance, domain rename
9ee7a3bfeat(infra): wire dev + prod stack for the actix backend on dunite
f09fa28fix(api): load .env at startup
26d07fdMerge pull request 'feat: scaffold bunyip-core/oci/oidc crates for the dunite rebuild' (#15) from feat/bunyip-api-on-dunite into main
a35b179chore(core): rebrand runtime config defaults from a8n to bunyip
2b69a97fix: drop bunyip-mocks workspace member and strip oidc client seeds
2aabd49chore: prune a8n migration seeds and retire the axum mock
6cd6d92feat(api): convert bunyip-api from axum mock to the actix binary on dunite
23fd194feat(oidc): port bunyip-oidc provider on dunite-oidc keys
ce60a06feat(oci): port bunyip-oci consuming the dunite-oci generic engine
d33be83build: consume dunite crates from the Forgejo git source
057ff50feat(core): fill bunyip-core domain layer on the dunite-core kernel
23ede7cfeat(scaffold): skeleton bunyip-core/oci/oidc crates for the dunite rebuild
0d7044cMerge pull request 'PSA audit (non-mock fixes) + prod mock-guard' (#14) from feat/m1-vas into main
dfa6fe8fix(web): derive_api_host returns same-origin host on apex topology
dc0e9d5feat(m1): Phase-5 audit fixes - OIDC nonce, log scrub, active-org, feedback routing, prod mock-guard
27f1987feat(m1): vas sprint - google oauth + wiring
bc9a734Merge pull request 'fix(login): omit client_id from password_login body when empty' (#13) from fix/login-skip-empty-client-id into main
ae197fbfix(login): omit client_id from password_login body when empty
1d9340cMerge pull request 'fix(release): publish binaries to psa-systems-private Generic Packages' (#12) from fix/release-binaries-to-generic-packages into main
637974efix(release): publish binaries to psa-systems-private Generic PackagesDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.1.1
StableSome checks failedreleased this
2026-05-28 20:38:32 +02:00 | 289 commits to main since this release