Repository navigation
Releases: bwalia/ring-promoter
Release list
Happy Friday — Ring Promoter v1.0.2
Happy Friday — Ring Promoter v1.0.2
25 September 2026
Two views of the same promotion truth: where versions sit across int → test → acc → prod, and how far the newest build has earned.
Landing: ring-promoter-pages.fictionally.org/#releases
All releases: https://github.com/bwalia/ring-promoter/releases
Orbit Deployer Board
Earth sits at the centre as live users. Promotion rings are orbits — PROD closest in, then ACC, TEST, INT as outer spokes. Newest versions light solid; older versions stay hollow. Gates and the app roster ride alongside so you can see how far each release got.
Orbit — Earth is live users; spokes show how far each app’s newest version climbed toward prod.
NEW: Lanes — multi-environment matrix
A deployment matrix of APP × INT / TEST / ACC / PROD. When the same version spans rings, one version pill stretches across those columns. When prod lags, the break is obvious — no hunting through per-app pages.
Lanes — the same truth as a grid. Spanning pills mean parity; a split at PROD means it still has to earn the hop.
Also in this cut (since v1.0.1)
- Descent — promotion rings as orbits, with Lanes as the fallback (web + iOS)
- Cinematic Earth rings stage — more sky, quieter labels, collision-aware leaders
- In-place ring restart API and deployer wiring
- External QA agent scaffolding
- Multi-arch images, longer helm waits for cold pulls, clearer workstation prod-password secrets
Pause on Orbit for the fleet. Flip to Lanes when you need the matrix.
Ring Promoter v1.0.1
What's Changed
- feat: promotion gates — maintenance windows, QA/release sign-off, change-request code by @bwalia in #36
- Repoint this repo at the new workstation Ring Promoter instance by @bwalia in #35
- Kubernetes Jobs as an execution backend (pluggable Executor abstraction) by @SukhvirKooner in #34
- Training academy: 7 sample apps demonstrating every Ring Promoter feature + fictionally.org instance by @bwalia in #37
- fix(ci): macOS-compatible training-config validation by @bwalia in #38
- ci(training): public health check is a soft warning by @bwalia in #39
- ci(training): correct wslproxy vhost spec for auto-registration on push to main by @bwalia in #40
- Seed all training demo apps via Docker Hub + one-shot GHA workflow by @bwalia in #41
- fix(training): cross-compile sample-app images (fix QEMU crash on arm64 runner) by @bwalia in #42
- fix(training): harden demo app charts (numeric UID, kuard, bank-api migrate) by @bwalia in #43
- fix(training): shopping-cart config -> real backend names by @bwalia in #44
- fix(training): make image-proc deployable in Ring Promoter (health target + runnable k8sjob) by @bwalia in #46
- feat(edge): register-edge-vhost workflow + workstation instance (rp.workstation.co.uk) by @bwalia in #47
- fix(training): install operator Greeting CRD from crds/ to end ring ownership conflict by @bwalia in #45
- fix(metrics): make internal/metrics compile so main builds again by @bwalia in #48
- fix(ci): export TAG so Deploy to k3s1 health check stops failing on success by @bwalia in #49
- feat(metrics): wire /metrics endpoint + HTTP and promotion instrumentation by @bwalia in #50
- feat(training): Core Platform demo group — 5 inert dummy apps on fictionally.org by @SukhvirKooner in #51
- fix(ci): resolve helm ConfigMap field-manager conflict in training deploy by @SukhvirKooner in #52
- chore(ring-system): pin core instance to sha-dad89a8 in a source manifest by @bwalia in #53
- ci: auto-trigger ring-system deploy after each image build by @bwalia in #54
- chore: remove duplicate ring-system manifest (revert #53) by @bwalia in #55
- test(metrics): add unit coverage for the observability package by @bwalia in #56
- ci: gate PRs on go build, vet, and test by @bwalia in #57
- feat(training): expose kuard + shopping-cart web UIs (edge wiring + ingress separator fix) by @bwalia in #58
- style(config): prefix the local-dev OpsAPI display name with diytaxreturn by @bwalia in #59
- Register jobshout as a k8sjob DTAP app by @bwalia in #60
- Register jobshout as a k8sjob DTAP app by @bwalia in #61
- jobshout k8sjob: externalSecret off + registry creds (fix ESO deploy) by @bwalia in #62
- fix(web): auto-promote switch on the first ring, and ship the embedded UI by @bwalia in #63
- fix(deploy): RollingUpdate so a dead node can't wedge every future deploy by @bwalia in #64
- feat(ios): native iOS client for Ring Promoter by @SukhvirKooner in #65
- fix(promoter): recover operations lost when the service restarts mid-deploy by @bwalia in #66
- Add solar-system fleet dashboard by @bwalia in #68
- Speed up CI/CD on the mac-studio runner by @bwalia in #69
- Solar System: groups as planets + clear nav by @bwalia in #70
- Fix bare URL auto-redirect to last group by @bwalia in #71
- Solar System: All apps view (no grouping required) by @bwalia in #72
- Classic solar system: all apps as orbiting planets by @bwalia in #73
- Fix ?group= redirect: ship rebuilt embedded UI by @bwalia in #74
- Rename Solar System → Rings of Applications by @bwalia in #75
- Group URLs show only that group's apps by @bwalia in #76
- Restore spinning ring style on group pages by @bwalia in #77
- Rename sun/planets → core business / services by @bwalia in #78
- Rename center label to The Core by @bwalia in #79
- Rename center label to Business by @bwalia in #80
- feat(web): publish the landing page to GitHub Pages by @bwalia in #81
- Serve landing page from custom domain ring-promoter-pages.fictionally.org by @bwalia in #82
- Resolve Pages custom domain at build time (vantiq pattern) by @bwalia in #83
- Rename the center label from Business to Rings by @bwalia in #84
- iOS: replicate the web Rings of Applications screen by @bwalia in #85
- iOS TestFlight release pipeline (fastlane + Vault) by @bwalia in #86
- Add iOS app icon by @bwalia in #87
- Let the jobshout deploy job manage CronJobs by @bwalia in #88
- Fix TestFlight launch crash on Mac (Live Activities) by @bwalia in #89
- Stop ActivityKit at launch (TestFlight Mac crash) by @bwalia in #90
- Bump iOS app to 1.1 for TestFlight by @bwalia in #91
- fix(fictionally): raise ring-promoter memory limit to stop OOM crashloop by @bwalia in #92
- docs(fictionally): record fictionally.org host restoration results by @bwalia in #93
- Fix iPhone TestFlight crash: disable Live Activities + App Group profiles by @bwalia in #94
- Fix iPhone TaskGroup::offer crash + sigh force/readonly by @bwalia in #95
- feat(web): rebuild the solar-system stage — motion, typography, legibility by @bwalia in #96
- feat(web): redesign Rings of Apps as an orrery instrument by @bwalia in #97
- Improve iOS Rings solar-system animations (v1.2) by @bwalia in #98
- feat(workstation): register wslproxy on rp.workstation.co.uk by @bwalia in #99
- Revert wslproxy registration — RP_GITHUB_TOKEN missing on the workstation instance by @bwalia in #100
- feat(gates): Grafana go/no-go gate between rings by @SukhvirKooner in #101
- feat(training): add Platform Services demo group to ring-promoter.fictionally.org by @bwalia in #103
- feat(rings): Google Earth globe with app locations and TTFB by @bwalia in #104
- feat(rings): pin every app to London for the globe view by @bwalia in #105
- feat(ios): Google Earth spinning globe on Rings tab by @bwalia in #106
- feat(rings): orbital rings around Earth for each app by @bwalia in #107
- Isolate each app on a uniquely sized Earth ring by @bwalia in #108
- Fill the Rings stage across the full viewport by @bwalia in #109
- Brand the Rings Sun as Ring Promoter by @bwalia in #110
- Make Sun Ring Promoter label black by @bwalia in #111
- Lift Rings solar stage above roster overlays by @bwalia in #112
Full Changelog: v1.0.0...v1.0.1
Ring Promoter v1.0.0
What's Changed
- Add Ring Promoter control-plane service by @SukhvirKooner in #1
- Harden concurrency & context handling; fix retry config; add UI login gate by @SukhvirKooner in #2
- docs: handoff prompt for onboarding OpenResty/Lua VM apps by @SukhvirKooner in #3
- feat: onboard VM/CI apps via per-app GitHub Actions deployer (wslproxy) by @bwalia in #4
- refactor(rings): rename rings to int/test/acc/prod (+ transient-retry hardening) by @bwalia in #5
- Revamp UI: deployment pipeline + live progress (async jobs) by @SukhvirKooner in #6
- feat(ingress): public traefik ingress for ring-promoter on k3s1 by @bwalia in #7
- fix(ui): calmer progress, single spinner, persist job on refresh; drop dummy apps by @bwalia in #8
- feat(ui): footer with version, build time & last-deployed by @bwalia in #9
- feat: onboard DIY Tax Return + per-ring ref pin (Promote→acc ships release) by @bwalia in #10
- fix(ui): minimalist non-blinking loading bar by @bwalia in #11
- fix(ui): stop progress bar blinking (no rebuild each poll) by @bwalia in #12
- fix(wslproxy): use working pop1 health endpoint for prod ring by @bwalia in #13
- docs: UI/UX modernization design (kubepilot-referenced) by @bwalia in #14
- ci: GitOps deploy Ring Promoter to k3s1 on merge to main by @bwalia in #15
- fix(k3s1): numeric runAsUser + follow http->https in deploy health check by @bwalia in #16
- Next.js dashboard: group ring pages, auto-promote, production password by @SukhvirKooner in #18
- Store application groups server-side (shared across users) by @SukhvirKooner in #19
- config: raise production operation_timeout to 60m by @SukhvirKooner in #20
- ui: show the full group name in the ring center by @SukhvirKooner in #21
- AI diagnosis for failed seed/promote/rollback jobs by @SukhvirKooner in #22
- Onboard spectoncr registry as a ring-promoter app by @bwalia in #23
- Persist failure step logs + recover shared job cards & history diagnosis by @SukhvirKooner in #24
- Feat/landing page by @SukhvirKooner in #25
- Dashboard footer: build version, commit, build time and last deploy by @SukhvirKooner in #26
- Health checks that know which version answered by @SukhvirKooner in #27
- App display names: diytaxreturn web / proxy / registry by @SukhvirKooner in #28
- Redesign console + landing onto one "promotion control plane" design system by @bwalia in #29
- Show diytaxreturn as "diytaxreturn web" by @SukhvirKooner in #30
- diytaxreturn iOS: TestFlight internal releases from the dashboard by @SukhvirKooner in #31
- Dashboard UX refresh: scannable ring cards with a details side panel by @SukhvirKooner in #33
New Contributors
- @SukhvirKooner made their first contribution in #1
- @bwalia made their first contribution in #4
Full Changelog: https://github.com/bwalia/ring-promoter/commits/v1.0.0

