← All docs changelog/2026-05-22.md

May 22, 2026

Commits

2ab08e4 — user_data_app: replace HTTP self-calls with in-process dispatch (Phase 4-fix)

Fixes a regression from the user_data_app consolidation: sync.py and auth.py were making HTTP round-trips to endpoints now in the same process. Replaces these with direct function calls, eliminating unnecessary network hops and the self-referential URL construction.

Changed:

  • dev/data/data_endpoint.py — expose internal helpers (+35/-10)
  • dev/data/sync.py — direct calls instead of HTTP (+39/-25)
  • dev/users/auth.py — direct calls instead of HTTP (+53/-25)

0fcfc05 — bruno tests: move credentials out of git into dev/.env (Phase A)

Removes hardcoded test credentials (email/password) from per-environment Bruno .bru files and sources them from dev/.env at runtime via test_app.sh. The .env.template documents the required variables.

Changed:

  • bruno/.../environments/*.bru — remove credentials (7 files, -2 each)
  • dev/.env.template — add test credential vars (+11/-1)
  • dev/test_app.sh — inject credentials from env (+32/-2)

c69113c — test_app.sh: parallel tier-aware runner + pool warming (Phase B)

Rewrites test_app.sh to run Bruno test folders in parallel with tier-awareness: tier-1 (critical path) tests run first, tier-2 (secondary) in parallel after. Adds worker pool warming to reduce cold-start latency.

Changed:

  • dev/test_app.sh — parallel tier-aware execution (+278/-116)

c12eb70 — ci/bruno_in_modal.py: parallel tier-aware runner + Modal Secret creds (Phase C)

Mirrors the local test_app.sh tier-aware parallel runner inside Modal. Test credentials are now sourced from Modal Secrets instead of environment files.

Changed:

  • ci/bruno_in_modal.py — parallel tiers + Modal Secret creds (+284/-52)

cb63ae9 — ci: fix just promote when destination branch shares name with a path

Fixes an ambiguity where git checkout beta fails because beta matches both a branch and a directory path. Uses git checkout -B with explicit ref to resolve.

Changed:

  • ci/_git_in_modal.py — unambiguous branch checkout (+9/-2)

a940d95 — ci/bruno_in_modal.py: split clone (proxied) from tests (no proxy)

Splits the Bruno-in-Modal flow into two phases: the git clone runs through the GitLab proxy (for auth), while the actual test execution runs without the proxy (for direct API access to the test target).

Changed:

  • ci/bruno_in_modal.py — two-phase clone/test (+62/-16)

8486f21 — ci/bruno_in_modal: handle main's bare hostnames in _hostname helper (Phase G)

Fixes the hostname helper to handle production's bare hostnames (no -env suffix). Adds a diagnose_tls_in_modal.py diagnostic script for debugging TLS issues from inside Modal containers.

Added:

  • ci/diagnose_tls_in_modal.py — TLS diagnostic tool (+457)

Changed:

  • Justfilediagnose-tls recipe (+7)
  • ci/bruno_in_modal.py — bare hostname handling (+6)

efcaea3 — ci: split dev_push into dev_test + dev_to_beta + add dashboard helpers (Dashboard 2.0 Phase 1+3)

Splits the monolithic dev_push webhook handler into dispatch_dev_test (deploy + test dev) and dispatch_dev_to_beta (merge dev→beta + deploy + test beta). Adds dashboard-facing helpers for test results, deploy states, and branch comparisons.

Changed:

  • .gitlab-ci.yml — webhook trigger updates (+16/-1)
  • ci/_git_in_modal.py — branch comparison, test results, deploy state helpers (+184)
  • ci/bruno_in_modal.py — result persistence + dashboard queries (+99)
  • ci/scheduled_cleanup.py — result persistence (+80)
  • ci/webhook.py — split handlers + dashboard API (+165/-35)

ee5fa2f — deploy-dashboard: per-card chips, promote/test buttons, gated approve-prod, failed-test drill-down (Dashboard 2.0 Phase 2+4)

Major dashboard overhaul: each env card shows status chips (last deploy SHA, last test pass/fail, commit delta), action buttons (promote, run tests), and a gated approve-prod button (only enabled when beta tests pass on the current tip). Failed-test drill-down shows per-test-folder results.

Changed:

  • CLAUDE.md — document dashboard workflow (+19/-1)
  • Justfileapprove-prod recipe (+21)
  • dev/static_site/deploy_dashboard.py — expanded API surface (+148/-1)
  • dev/static_site/templates/deploy-dashboard/index.html — full dashboard redesign (+578/-1)
  • dev/test_app.md — document test runner options (+16/-1)