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

May 14, 2026

Commits

a016d06 — deploys: layer shared image bases + .dockerignore (Phase A + C)

Introduces shared Modal image bases (grizzlebearImage, aiImage) that downstream services extend, replacing per-service full image definitions. Adds dev/.dockerignore to exclude test fixtures, archives, and non-essential files from deploy images.

Added:

  • dev/.dockerignore — exclude heavy/test dirs from images (+26)

Changed:

  • dev/core/__init__.py — export shared bases (+8)
  • dev/core/core.py — refactor image definitions into layered bases (+240/-171)
  • dev/livekit_ts/livekit_server.py — use shared base (+40/-?)

4cecc74 — livekit_agent dockerfile: build go binary before broad COPY (Phase B)

Reorders the livekit-agent Dockerfile to compile the Go binary before the broad COPY step, improving cache hit rates on rebuilds.

Changed:

  • dev/livekit_ts/agents/dockerfile.livekit_agent (+8/-5)

cba0bbb — ci: cap modal deploy at 30 min + add GitLab pip cache (Phase E)

Adds a 30-minute timeout to modal deploy in .gitlab-ci.yml and enables GitLab's pip cache to speed up CI Python installs.

Changed:

  • .gitlab-ci.yml — deploy timeout + pip cache (+13)
  • dev/deploy.sh — timeout wrapper (+21/-3)

a54e645 — session_to_splat: extract heavy base to AWS ECR (Phase D)

Moves the heavy COLMAP/fastgs base image to AWS ECR so Modal only pulls a thin layer at deploy time. Adds a GitLab CI job to build the base image.

Added:

  • dev/queues/dockerfile.session_to_splat.base — ECR base definition (renamed from inline)

Changed:

  • .gitlab-ci.yml — build_splat_base job (+54)
  • dev/core/__init__.py — export splat base (+2)
  • dev/core/core.py — ECR base reference (+14)
  • dev/queues/session_to_splat.py — use ECR base (+18/-1)
  • dev/queues/session_to_splat.video_3d_reconstruction.py — use ECR base (+14/-1)
  • IMPROVE.md — document ECR approach (+18)

46e4e6d — admins: local .admins file + sync script for TradesparkAdmins secret

Adds a local .admins file (gitignored) and sync_admins.py to push admin email updates to the TradesparkAdmins Modal Secret, replacing manual dashboard edits.

Added:

  • dev/.admins.template — sample admin list (+5)
  • dev/sync_admins.py — sync local .admins → Modal Secret (+200)

Changed:

  • .gitignore — exclude .admins (+4)
  • dev/.justfiles/setup-worktree.sh — symlink .admins in worktrees (+2)
  • dev/CLAUDE.md — document admins sync (+1)

64ba9d8 — scripts: add audit_project_titles.py — Modal-run diagnostic for projects

New standalone diagnostic script that runs inside Modal to audit project titles from Supabase, useful for verifying scraper data.

Added:

  • dev/scripts/audit_project_titles.py — project title auditor (+123)

1b9b010 — traction: read actual DB column names in Plan view

Fixes the Traction admin's project detail drawer to use actual Supabase column names instead of assumed ones, preventing empty fields.

Changed:

  • dev/static_site/templates/demos/traction.html — column name fixes (+8/-3)
  • dev/tsweb/queries.py — query adjustments (+37/-10)

97c05ff — modal: default MODAL_PROFILE=silverbear-io + document workspace/secrets

Sets MODAL_PROFILE=silverbear-io as the default in deploy.sh and stop_app.sh so deploys work regardless of local profile. Documents the workspace/secrets layout in CLAUDE.md.

Changed:

  • CLAUDE.md — workspace/secrets documentation (+10)
  • dev/CLAUDE.md — cross-reference (+1)
  • dev/deploy.sh — default MODAL_PROFILE (+4)
  • dev/stop_app.sh — default MODAL_PROFILE (+4)
  • dev/ml/ml_endpoint.py — profile adjustments (+20/-10)

e4d3fa9 — gitignore: .claude/worktrees/ — keep main checkout's git status clean

Adds .claude/worktrees/ to .gitignore so worktree directories don't pollute the main checkout's git status.

Changed:

  • .gitignore (+3/-1)

e62dff7 — Add TradeSpark Design System zip snapshot

Adds a zip archive of the TradeSpark Design System for distribution outside the repo.

Added:

  • design/TradeSpark Design System.zip (582 KB binary)