Commit Graph

105 Commits

Author SHA1 Message Date
eb198e2d4d ship: project dashboard pages + sidebar/chat overhaul + log tooling
Ships accumulated WIP that was sitting uncommitted:
- New (home) dashboard route pages: overview, code, data/tables, hosting,
  infrastructure, services, domains, integrations, agents, analytics, api,
  automations, billing, logs, market, marketing(+seo/social), product, security,
  storage, users, settings(app/auth).
- dashboard-sidebar, project-icon-rail, chat-panel updates; mcp + anatomy route
  changes; package.json/lock dependency bumps.
- Coolify log tooling (scripts/fetch-app-logs.mjs + fetch-app-logs-ssh.mjs) and
  ai-new-thread.md "Fetching Production Logs" section.

Excludes throwaway debug scripts and telemetry audit dumps (the latter contain
live credentials and must not be committed).
2026-06-12 18:09:09 -07:00
0f212c750b fix(preview): stop refresh-flicker false-restarts + harden dev container & agent
- isDevServerListening: key off curl EXIT CODE not response time. The 2s
  max-time treated a busy/compiling-but-listening dev server as DEAD, so ensure
  restarted a healthy server on every refresh -> cold compile -> the
  502/no-CSS/broken-images/perfect flicker. Now dead only when BOTH localhost
  and 0.0.0.0 refuse the connection (curl exit 7).
- ensure route: liveness probe is fail-safe (try/catch) -> never 500s or
  needlessly restarts on a probe error; trusts the DB flag instead.
- dev container: reconcile dead orphan containers before resume/start so a
  leftover name no longer triggers 'container name already in use' -> Traefik
  gateway timeout.
- dev container: inject AUTH_SECRET / NEXTAUTH_SECRET / AUTH_TRUST_HOST so
  scaffolded NextAuth apps stop throwing [auth][error] MissingSecret in preview.
- chat prompt: don't bounce a healthy dev server; only claim actions a tool
  actually performed (no hallucinated DB deletes); NextAuth previews pre-wired.
- intent budgets: route 'not appearing/showing/missing' to diagnose; bump
  status_check 12->16, diagnose 15->22 so investigations don't hit the cap.
2026-06-12 18:05:16 -07:00
514f11e80d fix(preview): self-healing dev server so the preview always loads cleanly
The dominant production failure was a dead dev-server process behind a
'running' DB flag (idle-stop / OOM / crash / host restart), which the UI
trusted and embedded -> permanent 502 until a manual restart.

- dev-container.ts: add isDevServerListening() fast liveness probe; stop the
  container entrypoint from auto-running 'npx next dev --webpack' (it competed
  with the managed server, forced the wrong bundler/cwd, and doubled memory);
  drop the fake state='running' seed row; bump dev container memory 1g -> 2g.
- ensure route: verify a 'running' row is ACTUALLY listening and resurrect it
  if dead, instead of trusting the flag; never bounce a healthy server.
- preview page: call ensure on every mount and on refresh (verify + heal),
  force an immediate anatomy refetch on (re)start so a dead frame swaps to
  'warming up' without the 5s lag.

Backstopped by the partial unique index + startDevServer idempotency, so heals
can never duplicate or thrash a server.
2026-06-12 17:30:27 -07:00
0f90ef6f5c Fix preview pipeline: dedup duplicate previews, race-safe dev server start, honest readiness
- Add partial unique index on (project_id, port) for active dev servers so the
  SELECT-then-INSERT race can no longer create duplicate 'Port 3000' rows.
- Make startDevServer race-safe: on unique violation, adopt the winning row
  instead of duplicating.
- ensure route no longer marks a server 'running' before it binds the port;
  the readiness probe flips starting->running only after the port answers.
  Kills the '502 -> broken CSS -> works' refresh loop.
- Deduplicate previews per-port in sortDevPreviewsFrontendFirst as a defensive
  backstop for the dropdown.
- Revert iframe _refresh query-param hack (was forcing cold recompiles).
2026-06-12 16:57:06 -07:00
aa780492fd fix(preview): add 60-second grace period before marking freshly booted servers as zombies to prevent aggressive 502 teardowns 2026-06-12 16:49:31 -07:00
95253c7707 fix(preview): resolve ReferenceError on isForceStarting initialization order 2026-06-12 16:46:35 -07:00
76c0241bd1 Save frontend state (layout, sidebar, chat panel, preview refresh fix) before rollback 2026-06-12 16:35:45 -07:00
68c8d398e3 fix(preview): permanently restore resilient zombie-killer ping to auto-restart suspended containers 2026-06-12 16:03:00 -07:00
191fb10b4b fix(preview): remove zombie killer ping to allow container auto-wake via Traefik 2026-06-12 16:00:47 -07:00
28441e75f2 fix(overview): restore lost Dev Previews and Live endpoints lists that were accidentally overwritten during Dashboard migration 2026-06-12 15:57:14 -07:00
9b56cf362b fix(preview): remove brittle dev server readiness probes; trust that the server will eventually boot 2026-06-12 15:36:35 -07:00
c565a9f6ed fix(preview): properly restore zombie-killer ping with graceful fallback logic 2026-06-12 15:33:30 -07:00
4375fbcb22 fix(preview): resolve 'command not found' by prefixing next dev fallback and prompt recipes with npx 2026-06-12 15:29:01 -07:00
b2bb1bc1e9 fix(preview): remove zombie killer ping to allow container auto-wake via Traefik 2026-06-12 15:24:59 -07:00
07fb3377ad fix(preview): restore resilient zombie-killer logic to auto-restart suspended previews 2026-06-12 15:18:34 -07:00
c5454347f9 fix(preview): remove zombie killer ping to allow container auto-wake via Traefik 2026-06-12 15:12:14 -07:00
27a1f308d0 fix(preview): add 60-second grace period before zombie killer murders booting dev servers throwing 504s 2026-06-12 15:05:24 -07:00
3833ba5dd2 fix(preview): do not murder dev servers that take longer than 2 seconds to compile webpack 2026-06-12 11:36:34 -07:00
2e66ea087b fix(preview): resolve SQL column error on dev server force-start 2026-06-12 11:31:15 -07:00
9b13320253 design(chat): remove un-wired dictation and select-mode buttons from composer to match Base44 simplicity 2026-06-12 11:05:01 -07:00
2a7e87c790 fix(preview): resolve TypeError on forced dev server start when no history exists 2026-06-12 10:47:36 -07:00
08fbe8405b feat(preview): add 1-click start dev server button to empty state 2026-06-11 17:07:17 -07:00
2036df6c2b fix(preview): zombie process cleanup on anatomy load 2026-06-11 12:05:48 -07:00
bcf47b5c6c fix(ai): enforce port 3000 exclusively for visual previews to match UI constraints 2026-06-11 11:23:01 -07:00
ca0ae32a21 fix(preview): ignore stale ghost dev servers in auto-restarter; cap elapsed timer 2026-06-11 11:20:19 -07:00
d165ab9de1 feat(preview): auto-restart dev server on session open; WarmingUpState with elapsed timer
- New POST /api/projects/[id]/dev-server/ensure: checks if dev server is running,
  queries last known config from fs_dev_servers, fires startDevServer +
  probeDevServerReadiness in background, returns immediately
- Preview pane calls ensure on mount when anatomy is loaded but no server is running
- Distinguishes state='running' (show iframe) from state='starting' (show warming-up UI)
- WarmingUpState: indigo spinner, elapsed timer, 'View last deployed version' link if available
- ensureCalledRef prevents duplicate calls per mount
- The 5s anatomy poll handles the starting→running transition automatically
2026-06-11 11:05:58 -07:00
82a41f7e95 fix(stop+stability): stop button interrupts live generation; classifier, prompt + preview pane improvements
Stop button fix:
- Plumb AbortSignal end-to-end: callVibnChat → Gemini SDK (config.abortSignal) / OpenAI fetch → executeMcpTool (/api/mcp fetch)
- Treat abort as clean user stop (not fatal error); partial reply persisted with '(stopped by user)'

Classifier fix:
- Add timeout/gateway/5xx/connection-error vocabulary to diagnose intent
- Prevents 'I get a gateway timeout' from falling through to feature_build (40 rounds) and looping

Prompt / agent behaviour:
- Render verification is now scope-aware: small edits stop at green healthCheck; no browser_console/curl audit on healthy server
- Sanitize stale '### Phase Checkpoint' walls from loaded history so old threads stop biasing new turns
- Next.js dev command updated to --no-turbopack for container stability (per-route lazy compile caused cold-start 503s)
- New public page prompt: agent checks middleware allowlist in the same turn
- Scope discipline and QA-tool gating carried forward from prior session

Code cleanup:
- Remove duplicate AgentPhase declaration (TS2440)
- Remove dead checkpoint emit branch and orphan 'checkpoint' phase value
- Remove unused MAX_TOOL_ROUNDS constant

Preview pane (build status):
- 4-state machine: initial-load / building (with elapsed timer) / build-failed / not-running
- pollMs 0 → 5 000ms so dev-server recovery and build completion auto-update without refresh
- anatomy route + use-anatomy type: inFlightBuild gains createdAt for elapsed timer
2026-06-10 21:40:48 -07:00
39cb9194a5 feat(verification): acceptance-check layer + executor fix-loop; hide phase-checkpoint walls; guaranteed turn-end summary. Verification gated behind VIBN_VERIFICATION_ENABLED. 2026-06-10 19:43:36 -07:00
e9d597de03 fix(governor): classify multi-word greetings ('hey there!', 'good morning') and short verb-less messages as conversational so they don't trigger the agent loop 2026-06-10 17:50:31 -07:00
a87faa2353 ux(chat): clean tool-pill results (no raw JSON, Failed/exit verbs); structured build-health status instead of 'didn't reach a clean stopping point'; label active toolbar mode 2026-06-10 17:44:19 -07:00
6fe774719a fix(governor): stop misclassifying 'okay <request>' and investigative questions as conversational; raise status_check/diagnose tool budgets (fixes round_cap cut-offs) 2026-06-10 17:26:41 -07:00
a4fe96496a feat(telemetry): emit per-turn governor summary (stop_reason, rounds, tool_results) for orchestration diagnostics 2026-06-10 17:07:43 -07:00
ef539d34a7 chore(telemetry): correct Path Confusion loop breaker implementation 2026-06-10 12:16:42 -07:00
e6721a0b72 chore(telemetry): resolve loop crash caused by Temporal Dead Zone hoisting and fix conversational budget mapping 2026-06-10 12:04:13 -07:00
8eaa20106a feat(orchestration): implement state-based loop governor with forced checkpoints, phase events, and robust tool signatures 2026-06-10 11:55:17 -07:00
a01f3331df chore(telemetry): implement robust path-confusion stall guard, persist verify signatures correctly, and redact secrets from telemetry logs 2026-06-10 11:38:49 -07:00
019211ecce chore(telemetry): loosen error normalization to preserve status codes and line numbers for accurate verification signatures 2026-06-10 11:12:29 -07:00
d433da56f9 chore(telemetry): resolve universal path normalizer logic and path-confusion tracking 2026-06-10 11:08:42 -07:00
ca47d0643d feat(telemetry): implement phase-based execution loop and adaptive tool budgets 2026-06-09 18:58:12 -07:00
7ddcbfe32d chore(telemetry): add path-confusion loop breaker and strict blank-preview diagnostic protocol 2026-06-09 16:27:09 -07:00
472e30e9bc chore(telemetry): replace fragile regex path normalization with bulletproof path.posix.resolve 2026-06-09 16:25:51 -07:00
a2298be5ca chore(telemetry): remove hardcoded legacy getacquired slug from universal path normalizer 2026-06-09 16:21:12 -07:00
137d5975e1 chore(telemetry): implement universal path normalizer and omni-reaper to prevent preview sprawl 2026-06-09 16:11:31 -07:00
7a9c2575f0 chore(telemetry): add path-confusion loop breaker and strict blank-preview diagnostic protocol 2026-06-09 16:10:45 -07:00
dd510fe81f chore(telemetry): verify signature comment and cleanup 2026-06-09 15:35:46 -07:00
ef4a06a57c ux(chat): tune silent-loop status nudge threshold to 6 rounds and strip leaked tool trace payloads from UI 2026-06-09 15:02:34 -07:00
a036f2f28f chore(telemetry): align shell_exec and dev_server_start cwd to flattened workspace root 2026-06-09 14:59:42 -07:00
8c73f72680 chore(telemetry): jack up MAX_TOOL_ROUNDS to 150 for ultimate custom app-building runway 2026-06-09 14:30:36 -07:00
f1d0c9e0b5 chore(telemetry): jack up MAX_TOOL_ROUNDS to 150 for ultimate custom app-building runway 2026-06-09 14:18:44 -07:00
ad7d0face8 chore(telemetry): raise MAX_TOOL_ROUNDS to 60 for complete engineering runway 2026-06-09 14:16:31 -07:00