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.adminsin 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)