Skip to content

Releases: bwalia/ring-promoter

Happy Friday — Ring Promoter v1.0.2

Choose a tag to compare

@bwalia bwalia released this 25 Sep 09:59
b20c322

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 Deployer Board

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 deployment matrix

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

Choose a tag to compare

@bwalia bwalia released this 15 Aug 12:55
2960f83

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

Choose a tag to compare

@SukhvirKooner SukhvirKooner released this 17 Jul 07:04
777d769

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

Full Changelog: https://github.com/bwalia/ring-promoter/commits/v1.0.0