Feat default surface routing + fix startup hang (#4)
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 4s
CI/CD / test-go-pg (pull_request) Failing after 2m18s
CI/CD / test-sqlite (pull_request) Successful in 2m40s
CI/CD / build-and-deploy (pull_request) Has been skipped
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 4s
CI/CD / test-go-pg (pull_request) Failing after 2m18s
CI/CD / test-sqlite (pull_request) Successful in 2m40s
CI/CD / build-and-deploy (pull_request) Has been skipped
Default surface routing (v0.2.1): - `/` redirects to configurable default surface with fallback chain: configured → first enabled extension surface → /admin - Auto-sets default_surface on first extension surface install - Admin settings UI: Default Surface dropdown - disabledRedirect() and extension surface disabled redirect now go to /admin instead of / to prevent redirect loops Fix Gin route param conflict causing backend startup hang: - Team package settings routes used `:pkgId` while sibling routes used `:id` — Gin's radix tree entered infinite loop on conflicting param names. Unified to `:id`. Docker entrypoint hardening: - Health check timeout 10s → 60s - Stale backend process cleanup on restart - Crash detection (exit early if backend dies) Roadmap direction updates: - v0.3.0: Notes surface (Obsidian-style) replaces Editor surface - v0.4.0: MVP (was v0.5.0) — chat moved to post-MVP - No built-in auto-install — explicit install only Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,19 +22,29 @@ fi
|
||||
|
||||
echo "🔀 Starting Switchboard Core backend..."
|
||||
|
||||
# Kill any stale backend from a previous entrypoint run
|
||||
pkill -f /usr/local/bin/switchboard 2>/dev/null || true
|
||||
sleep 0.2
|
||||
|
||||
# Launch Go backend in background (from /app so migrations are found)
|
||||
cd /app
|
||||
/usr/local/bin/switchboard &
|
||||
BACKEND_PID=$!
|
||||
|
||||
# Wait for backend to be ready (max 10s)
|
||||
for i in $(seq 1 20); do
|
||||
# Wait for backend to be ready (max 60s)
|
||||
for i in $(seq 1 120); do
|
||||
if wget -q --spider http://localhost:${PORT:-8080}${BASE_PATH}/health 2>/dev/null; then
|
||||
echo "✅ Backend ready (PID ${BACKEND_PID})"
|
||||
exit 0
|
||||
fi
|
||||
# Check backend didn't crash
|
||||
if ! kill -0 ${BACKEND_PID} 2>/dev/null; then
|
||||
echo "❌ Backend process died"
|
||||
exit 1
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
echo "❌ Backend failed to start within 10s"
|
||||
echo "❌ Backend failed to start within 60s"
|
||||
kill ${BACKEND_PID} 2>/dev/null || true
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user