Bumps every hardcoded 0.9.79 → 0.9.8 across backend, frontend,
desktop-shell, helm, lockfiles, test fixtures. Refreshes the in-app
ChangelogModal HEADLINE_FEATURES, NEW_FEATURES, and BUG_FIXES with the
v0.9.8 highlights.
Release artifacts built locally and hashed into release_digests.json:
ShadowBroker_v0.9.8.zip 6.06 MB
d506f6b8462ccb12096f0cd9462233be58928094240416b65fb3127bdd1f3820
ShadowBroker_0.9.8_x64_en-US.msi 122.4 MB
d4be4cb68c3e6409fff54c225acdcdd08e27d5d6d2b31616d78d2a4f6812991d
ShadowBroker_0.9.8_x64-setup.exe 76.5 MB
1115d1f5cf37edd03ea2c21d821c7626e1bf3319c990402aaa0293bca46fea67
Sizes match the v0.9.79 reference shape (5.76 MB / 117 MB / 72.9 MB)
within expected drift for new code. The .zip is a `git archive` of the
v0.9.8 source tree (matching v0.9.79's approach).
Audit confirms no .env, .key, .venv-dir, or cache files leaked into the
backend-runtime bundle. Python 3.11.9 + 199 site-packages + privacy_core
all staged correctly.
Headline changes since v0.9.79:
* Cumulative fuel/CO2 per flight (#317) — running totals since first
observation, not just per-hour rate.
* AIS maritime resilience (#314, #316) — outage banner + AISHub REST
fallback when AISStream WebSocket primary is offline.
* Data-layer repair (#311, #312) — UAP fallback respects the 60-day
cutoff; GPS jamming threshold tuning + nac_p=0 inclusion so the layer
actually fires.
* Per-flight source attribution (#313) — source field on every record.
* Cross-node DM mailbox replication (#309).
* Infonet sync HTTP 429 honored (#310).
Test fixtures updated:
* test_per_operator_outbound_attribution.py — added v0.9.8 UA strings
to the banned-aggregate-literals list (alongside v0.9.79).
* updateRuntime.test.ts — bumped asset filename fixtures to v0.9.8.
release_digests.json keeps the v0.9.79 block alongside v0.9.8 so
operators still on 0.9.79 validate cleanly during the rollout.
The accent narrowing fix in ChangelogModal (one feature uses 'purple',
two use 'cyan' so the renderer's `accent === 'purple'` comparison
still type-checks) is included.
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
ShadowBroker Helm Chart
A Helm chart for deploying ShadowBroker services (backend and frontend).
Prerequisites
- Helm >= 3.0
- Kubernetes cluster with access to the
bjw-s-labsHelm repository - Your OWN ingress controller, Gateway API, etc
ingress-nginx has been deprecated and as of writing this we do not feel comfortable hard-coding in an ingress implementation!
Consider using ingress controllers like Traefik and Cert-Manager for automatic SSL/TLS termination and dynamic route management.
Installation
Add the Helm repository
helm repo add bjw-s-labs https://bjw-s-labs.github.io/helm-charts/
helm repo update
Install the chart
helm install shadowbroker ./chart --create-namespace
Or use the repository:
helm install shadowbroker bjw-s-labs/app-template \
--namespace shadowbroker \
-f values.yaml
Configuration
Backend Service
The backend deployment runs with the following settings by default:
| Parameter | Description | Default |
|---|---|---|
controllers.backend.type |
Controller type | deployment |
controllers.backend.strategy |
Update strategy | RollingUpdate |
controllers.backend.rollingUpdate.unavailable |
Max unavailable during update | 1 |
controllers.backend.containers.main.runAsUser |
Security context user | 1001 |
controllers.backend.containers.main.runAsGroup |
Security context group | 1001 |
controllers.backend.containers.main.image.repository |
Container image | registry.gitlab.com/bigbodycobain/shadowbroker/backend (or ghcr.io/bigbodycobain/shadowbroker-backend) |
controllers.backend.containers.main.image.tag |
Container tag | latest |
controllers.backend.service.type |
Service type | ClusterIP |
controllers.backend.service.ports.http.port |
HTTP port | 8000 |
Backend Environment Variables
The following environment variables are configured via secrets:
AIS_API_KEY- API key for AIS serviceOPENSKY_CLIENT_ID- OpenSky client IDOPENSKY_CLIENT_SECRET- OpenSky client secret
These can be injected using a Secret resource or Kubernetes ConfigMap.
Frontend Service
The frontend deployment configuration:
| Parameter | Description | Default |
|---|---|---|
controllers.frontend.type |
Controller type | deployment |
controllers.frontend.strategy |
Update strategy | RollingUpdate |
controllers.frontend.rollingUpdate.unavailable |
Max unavailable during update | 1 |
controllers.frontend.containers.main.runAsUser |
Security context user | 1001 |
controllers.frontend.containers.main.runAsGroup |
Security context group | 1001 |
controllers.frontend.containers.main.image.repository |
Container image | registry.gitlab.com/bigbodycobain/shadowbroker/frontend (or ghcr.io/bigbodycobain/shadowbroker-frontend) |
controllers.frontend.containers.main.image.tag |
Container tag | latest |
Frontend Environment Variables
BACKEND_URL- Backend API URL (defaults to Kubernetes service discovery)
Service Configuration
| Parameter | Description | Default |
|---|---|---|
service.backend.type |
Service type | ClusterIP |
service.backend.ports.http.port |
Backend HTTP port | 8000 |
service.frontend.type |
Service type | ClusterIP |
service.frontend.ports.http.port |
Frontend HTTP port | 3000 |
Uninstall
helm uninstall shadowbroker -n shadowbroker
Development
For development with local images, modify the image paths and tags:
controllers:
backend:
containers:
main:
image:
repository: localhost/my-backend-image
tag: dev-latest
frontend:
containers:
main:
image:
repository: localhost/my-frontend-image
tag: dev-latest
Values Schema
This chart uses the app-template Helm chart as a base. Refer to the app-template documentation for additional customization options.