- Commit all modified files with proper conventional commit messages
- Files span:
temps-deployer,temps-deployments,temps-entities,temps-projects,temps-routes,temps-git,temps-presets, andweb/ - Pushed to
feat/compose-stacksbranch
-
cargo check --lib— no errors (verified Mar 25) -
cargo test --lib— 2 tests failing intemps-deployments(job count assertions need update forpersist_static_assetsjob) -
cargo build --bin temps— debug binary builds -
cargo build --release --bin temps— release binary builds
- Start server with new binary
-
cd web && bun run openapi-ts— regenerate types from updated OpenAPI spec - Verify generated
types.gen.tsincludesservice_url,service_name,public_ports,ComposePublicPort - Remove any manual type additions (they'll be replaced by generated ones)
-
cd web && bun run build— builds without errors - No leftover
console.logdebug statements (only in SDK docs code examples — BlobService, KvService, SdkDocumentation, AiGateway — these are intentional sample code)
- Create project from public repo with docker-compose preset
- Deploy succeeds (DownloadRepo → DeployCompose → MarkComplete → TakeScreenshot)
- Containers page shows all compose services (clickhouse, keeper, etc.)
- Container detail loads (no "Container not found" error)
- Container logs stream correctly
- Port override: compose override with remapped ports → no port conflict
- Volume preservation: redeploy keeps volumes, delete removes them
- Compose files with
build:directives → images built from repo
- No public ports configured → no proxy routes for compose services (private by default)
- Configure public ports in Git Settings → proxy route created
- Public port URL resolves and routes to correct container:port
- DNS labels stay under 63 chars (truncation works)
- Autocomplete suggestions shown from compose override content
- Edit Settings → docker-compose preset is pre-selected (not full catalog flash)
- Compose-specific fields visible (compose path, compose override, public ports)
- Public ports shown in read-only view as badges
- Compose override persists after save and reload
- Public repo preset detection works (detectPublicPresets API)
- Branch listing works for repos with >30 branches (pagination)
- Compose file picker filters by root directory (only shows files in selected subfolder)
- Container start/stop/restart actions work
- Container exec (if enabled) works
- Per-service URL shown in container list and detail (for public ports only)
- Full container IDs stored for new deployments (no short ID mismatch)
- Infrastructure pages (Domains, Storage, Email, AI Gateway, Git/DNS Providers) moved under Settings layout
- Settings sidebar visible on all infrastructure pages
- Command palette (Cmd+K) synchronized with actual routes
- Backwards-compatible redirects from old top-level URLs
- Request Logs appears under Observability submenu
- Request Logs link (
/request-logs) renders the page (not empty) - All other sidebar links still work
- Regular (non-compose) project deploy still works
- Static site deploy still works
- Analytics / session replay pages load
- Environment variables injection works
- Custom domains resolve correctly
- Container logs WebSocket streaming works
- Error tracking page loads
- Uptime monitors page loads
- Update
CHANGELOG.mdwith v0.0.7 entries - Tag
v0.0.7 - Build release binary:
cargo build --release --bin temps - Update
deploy.sh/worker.sh/install.shif version is hardcoded - Push tag + create GitHub release
- Deploy to Temps Cloud (Hetzner) and verify
- Smoke test: create project, deploy, check containers, check analytics
- Update docs if needed
- Docker Compose as a deployment preset (ADR-007) — deploy multi-container apps via git-push pipeline
- Public ports model — explicit control over which compose service ports are proxied publicly (private by default)
- Compose override — remap ports, volumes, commands without modifying the original compose file
- Per-service proxy routing — each public compose service gets its own subdomain
- Container exec and persistent terminal — WebSocket-based xterm.js shell (opt-in per project)
- Per-service URLs in container list and detail views
- Public ports configuration UI with autocomplete from compose file
- Request Logs in project sidebar under Observability
- Project slug truncation (40 char max) for DNS-safe subdomains
- Screenshot capture for Docker Compose deployments
- Infrastructure pages consolidated under Settings layout with sidebar navigation
- Command palette (Cmd+K) synchronized with settings/routes structure
- Docker Compose port override conflict — ports now stripped from base file when override defines them
- Container detail "not found" — prefix matching for short vs full container IDs
- Full container ID resolution — compose deployments now store 64-char IDs from Docker inspect
- Main deployment route round-robin — only routes to first compose service, not all
- DNS label truncation — service URLs and route labels capped at 63 chars
- FrameworkSelector flash — no longer shows full catalog while preset detection loads
- Branch listing pagination — public repos with >30 branches now list all
- Compose fields visibility — handles both
docker-composeanddockercomposeslug variants - Preset pre-selection — injects current preset+path into detected list if not found
- Compose file picker now filters by root directory (only shows files in selected subfolder)
- TimescaleDB-HA Docker volume path fixed (
/home/postgres/pgdata/datainstead of/var/lib/postgresql/data) - Docker Registry icon fixed (was using Globe, now uses Boxes)