May 26, 2026
Commits
74a5ec9 — deploy-dashboard: drop confirm() popups — buttons act on click
Removes browser confirm() dialogs from dashboard action buttons so promote/test/approve actions fire immediately on click, matching the intended "instant feedback" UX.
Changed:
dev/static_site/templates/deploy-dashboard/index.html— remove confirm() guards (-19)
6c900fa — deploy-dashboard: instant click feedback + adaptive polling
Buttons now show immediate visual feedback (spinner + disabled state) on click. The polling interval adapts: faster when an action is in flight, slower when idle.
Changed:
dev/static_site/templates/deploy-dashboard/index.html— feedback + adaptive poll (+233/-113)
f8f4ee2 — deploy-dashboard: faster first paint + persistent action outcomes
Skeleton cards render immediately while /api/envs loads in the background. Action outcomes (success/failure) persist in the toast until dismissed or superseded.
Changed:
ci/_git_in_modal.py— optimized env state queries (+43/-3)ci/webhook.py— action outcome persistence (+48)dev/static_site/deploy_dashboard.py— skeleton support (-19/+?)dev/static_site/templates/deploy-dashboard/index.html— skeleton + persistent outcomes (+155/-1)
bafee62 — deploy-dashboard: anchor action toasts above the target env card
Toast notifications for promote/test/approve actions now visually anchor above the env card that triggered them, instead of floating at the top.
Changed:
dev/static_site/templates/deploy-dashboard/index.html— card-anchored toasts (+111/-18)
487b6b8 — deploy-dashboard: parallelize /api/envs + add first-paint debug timer
The /api/envs backend now fetches Modal app states, GitLab branch tips, and test results in parallel (was sequential). Adds a debug timer showing first-paint latency.
Changed:
dev/static_site/deploy_dashboard.py— parallel data fetching (+65/-26)dev/static_site/templates/deploy-dashboard/index.html— debug timer (+41)
a9f4819 — ci/_git_in_modal: parallelize dashboard GitLab calls
get_branch_tips and get_last_test_results now run their per-branch GitLab API calls in parallel using asyncio.gather.
Changed:
ci/_git_in_modal.py— parallel GitLab calls (+55/-46)
af4b7da — ci/_git_in_modal: bump get_env_states to cpu=8 for parallel app-list
Increases the CPU allocation for get_env_states to 8 cores to handle parallel Modal AppList RPC calls without contention.
Changed:
ci/_git_in_modal.py— cpu=8 (+6/-2)
8d577bf — ci/_git_in_modal: get_env_states via Modal AppList RPC, not CLI subprocess
Replaces modal app list CLI subprocess calls with direct Modal Python SDK AppList RPC, eliminating subprocess overhead and parse fragility.
Changed:
ci/_git_in_modal.py— AppList RPC (+56/-40)
bbcebb5 — ci/_git_in_modal: cache the GitLab round-trips behind the dashboard
Adds a TTL cache (60s) to get_branch_tips and get_last_test_results so rapid dashboard polls don't hammer GitLab's API.
Changed:
ci/_git_in_modal.py— TTL caching (+107/-12)
2224358 — ci/_git_in_modal: cache "no test" sentinel in last_test_results
When no test results exist for a branch, caches a sentinel value so subsequent polls skip the GitLab API call entirely.
Changed:
ci/_git_in_modal.py— sentinel caching (+17/-2)
f82ba46 — low_priority_app: min_containers=1 to keep the deploy-dashboard warm
Sets min_containers=1 on the low_priority_app (which hosts the deploy dashboard) to eliminate cold-start latency for dashboard access.
Changed:
dev/low_priority_app/__init__.py— min_containers=1 (+6/-2)
100fbfe — ci/webhook: dispatch_dev_test self-heals on uncertain dev state
When dispatch_dev_test finds the dev environment in an uncertain state (e.g., a previous deploy crashed), it now self-heals by redeploying before running tests.
Changed:
ci/webhook.py— self-heal logic (+7/-3)
136ac76 — deploy-dashboard: stale-artifact guard + live X/Y test progress in toast
Adds a guard against rendering stale deploy-state artifacts. The action toast now shows live test progress (e.g., "3/12 folders passed") by polling the Bruno test runner's output.
Changed:
ci/_git_in_modal.py— stale-artifact detection (+25/-1)ci/bruno_in_modal.py— live progress reporting (+85)dev/static_site/templates/deploy-dashboard/index.html— progress in toast (+87/-17)