Phase 1: user picks which surfaces their product needs (Web App,
Marketing Site, Admin, Mobile, Email, Docs). Phase 2: per-surface
horizontal card gallery with mini visual previews of each UI library.
Lock in confirms the choice; locked themes are saved to DB and shown
to the AI coder. Surfaces and themes stored in fs_projects.data.
Made-with: Cursor
Replaces the old design page with a per-app package selector. Fetches
real apps/ from the project's Gitea repo and lets users assign a UI
library (shadcn, DaisyUI, HeroUI, Mantine, Headless UI, or Tailwind
only) independently per app. Selections saved to fs_projects.data.designPackages.
Made-with: Cursor
agent-chat/route.ts:
- Loads conversation history from chat_conversations before each turn
- Passes history + knowledge context to agent runner
- Saves returned history back to chat_conversations after each turn
- Saves AI-generated memory updates to fs_knowledge_items
knowledge/route.ts (new):
- GET /api/projects/[id]/knowledge — list all knowledge items
- POST /api/projects/[id]/knowledge — add/update item by key
- DELETE /api/projects/[id]/knowledge?id=xxx — remove item
OrchestratorChat.tsx:
- Added "Saved to memory" label for save_memory tool calls
Made-with: Cursor
- Tool call names now show human-readable labels ("Dispatched agent"
instead of "spawn_agent"), deduped if called multiple times
- Model label only shown when a real value is returned; "unknown"
and null are suppressed; model names shortened (GLM-5, Gemini)
Made-with: Cursor
Was importing from @/lib/auth (which doesn't exist); correct path
is @/lib/auth/authOptions — this caused the Turbopack build to fail.
Made-with: Cursor
- POST /api/projects/[id]/workspace: provisions a Cloud Run Theia service
on demand and saves the URL to the project record
- overview/page.tsx: shows 'Provision IDE' button when theiaWorkspaceUrl
is null, 'Open IDE' link once provisioned
- Also fixes log spam: retired Firebase session tracking endpoint (410 Gone)
Co-authored-by: Cursor <cursoragent@cursor.com>