diff --git a/scripts/ensure-ollama.mjs b/scripts/ensure-ollama.mjs index 9a299be..bcee6ef 100644 --- a/scripts/ensure-ollama.mjs +++ b/scripts/ensure-ollama.mjs @@ -50,7 +50,11 @@ if (!isRunning()) { spawn(bin, ["serve"], { stdio: "ignore", detached: true }).unref() } // Give it a moment to start listening - execSync("sleep 3", { stdio: "ignore", timeout: 5000 }) + if (platform() === "win32") { + execSync("timeout /t 3 /nobreak >nul", { stdio: "ignore", timeout: 10000, shell: true }) + } else { + execSync("sleep 3", { stdio: "ignore", timeout: 5000 }) + } } else { console.log("Ollama already running") } diff --git a/src/app/(dashboard)/projects/page.tsx b/src/app/(dashboard)/projects/page.tsx index 50fe795..081eb73 100644 --- a/src/app/(dashboard)/projects/page.tsx +++ b/src/app/(dashboard)/projects/page.tsx @@ -62,10 +62,11 @@ export default function ProjectsPage() { if (search) params.set("search", search) if (statusFilter !== "all") params.set("status", statusFilter) const res = await fetch(`/api/projects?${params}`) - const data = await res.json() + const data = res.ok ? await res.json() : [] setProjects(Array.isArray(data) ? data : []) } catch (e) { console.error("Failed to load projects", e) + setProjects([]) } finally { setLoading(false) } @@ -167,8 +168,8 @@ function NewProjectDialog({ statuses, onCreated }: { statuses: ProjectStatus[]; useEffect(() => { if (!open) return - fetch("/api/customers?limit=100").then(r => r.json()).then((d) => setCustomers(Array.isArray(d) ? d : (d.customers || d.rows || []))).catch(() => {}) - fetch("/api/users").then(r => r.json()).then((d) => setUsers(Array.isArray(d) ? d : (d.users || d.rows || []))).catch(() => {}) + fetch("/api/customers?limit=100").then(r => r.json()).then(d => setCustomers(Array.isArray(d) ? d : [])).catch(() => {}) + fetch("/api/users").then(r => r.json()).then(d => setUsers(d.users || [])).catch(() => {}) }, [open]) const handleSubmit = async () => { diff --git a/src/app/(dashboard)/proposals/new/page.tsx b/src/app/(dashboard)/proposals/new/page.tsx index 778d3ba..7f727c4 100644 --- a/src/app/(dashboard)/proposals/new/page.tsx +++ b/src/app/(dashboard)/proposals/new/page.tsx @@ -116,7 +116,7 @@ export default function NewProposalPage() { const formatCurrency = (n: number) => `R${n.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` return ( -