Skip to content

Commit 1c3f6df

Browse files
committed
fix(chat,db,sidebar): fix chat compatibility routing, neon timeouts, sidebar hydration mismatch, and refine copy/styles
1 parent e5c5834 commit 1c3f6df

7 files changed

Lines changed: 47 additions & 9 deletions

File tree

apps/landing-page/src/components/landing/FounderNote.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ export function FounderNote() {
1818
<section className="py-24 md:py-32 px-6 bg-landing-bg border-t border-landing-border-light">
1919
<div className="mx-auto max-w-3xl">
2020
<h2 className="font-heading text-landing-2xl md:text-landing-3xl font-semibold tracking-tight text-landing-text-primary mb-8">
21-
Why I&apos;m building Debo
21+
The memory substrate for human agency
2222
</h2>
2323
<div className="space-y-6">
2424
<p className="text-landing-base md:text-landing-lg font-medium leading-relaxed text-landing-text-secondary">
25-
I kept losing useful context — voice notes, project ideas, saved links, meeting promises, and thoughts from different apps. AI chats were helpful, but every conversation started from zero.
25+
Every day, we leak intelligence. We lose context—fleeting thoughts, raw voice transcripts, meeting promises, decisions, and files—scattered across a dozen disjointed applications. AI models are getting smarter, but they still treat you like a stranger. Every conversation starts from absolute zero.
2626
</p>
2727
<p className="text-landing-base md:text-landing-lg font-medium leading-relaxed text-landing-text-secondary">
28-
Debo is my attempt to build a private memory system that actually remembers the things I choose to save.
28+
Without permanent memory, personal agency is crippled. We are building Debo as a private Memory OS—a secure, source-backed context engine that turns your history into active intelligence. It connects your past to your present, ensuring that every answer links back to the exact truth of what you did and said.
29+
</p>
30+
<p className="text-landing-base md:text-landing-lg font-medium leading-relaxed text-landing-text-secondary">
31+
The future of AI isn't just about general knowledge; it's about deeply personalized context. Debo is our contribution to making that memory layer open, secure, and permanently yours.
2932
</p>
3033

3134
<div className="pt-8">

apps/landing-page/src/components/landing/Hero.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ export function Hero() {
2121
</div>
2222

2323
<h1 className="font-heading text-5xl font-semibold tracking-tight text-landing-text-primary md:text-landing-4xl lg:text-landing-hero max-w-4xl leading-[1.05]">
24-
The memory layer for your life.
24+
Capture anything.<br />Ask your past.<br />Trust every answer.
2525
</h1>
2626

2727
<p className="mx-auto max-w-2xl text-landing-base md:text-landing-lg font-medium leading-relaxed text-landing-text-secondary">
28-
Debo is foundational infrastructure for personal context. Capture your history, index your decisions, and build the memory substrate for your future AI.
28+
Debo is the private Memory OS for personal intelligence. We ingest your voice, documents, mails, and connector activity into a unified, source-backed memory graph, giving your personal AI permanent recall.
2929
</p>
3030

3131
<div className="flex flex-col sm:flex-row items-center gap-4 pt-6">

apps/website/src/app/api/chat/route.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export async function POST(req: Request) {
2727
let body: { messages?: any[]; threadId?: string };
2828
try {
2929
body = await req.json();
30+
console.log("ROUTE API BODY:", JSON.stringify(body, null, 2));
3031
} catch {
3132
return apiError("invalid_json", 400);
3233
}
@@ -102,6 +103,7 @@ export async function POST(req: Request) {
102103
const customOpenAI = createOpenAI({
103104
baseURL: cfg.baseURL,
104105
apiKey: cfg.apiKey,
106+
compatibility: "compatible",
105107
});
106108
const model = customOpenAI.chat(cfg.chatModel);
107109

apps/website/src/app/globals.css

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,4 +417,27 @@
417417

418418
.bn-editor {
419419
background-color: transparent;
420+
}
421+
422+
/* Codex-style premium interactive utilities */
423+
.codex-glow-hover {
424+
transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
425+
}
426+
.codex-glow-hover:hover {
427+
border-color: rgba(88, 204, 2, 0.3);
428+
box-shadow: 0 0 20px rgba(88, 204, 2, 0.06);
429+
transform: translateY(-1px);
430+
}
431+
.codex-focus-ring {
432+
transition: all 0.2s ease;
433+
}
434+
.codex-focus-ring:focus-within {
435+
border-color: var(--primary);
436+
box-shadow: 0 0 0 2px rgba(88, 204, 2, 0.15);
437+
}
438+
.codex-mono-tag {
439+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
440+
font-size: 0.7rem;
441+
letter-spacing: 0.05em;
442+
text-transform: uppercase;
420443
}

apps/website/src/components/app-shell/sidebar.tsx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { Suspense } from "react";
3+
import { Suspense, useState, useEffect } from "react";
44
import Link from "next/link";
55
import { usePathname, useRouter } from "next/navigation";
66
import { useUser } from "@stackframe/stack";
@@ -271,10 +271,19 @@ export function Sidebar({ collapsed, onToggle }: SidebarProps) {
271271
function SidebarUser({ collapsed }: { collapsed: boolean }) {
272272
const router = useRouter();
273273
const user = useUser();
274+
const [mounted, setMounted] = useState(false);
275+
276+
useEffect(() => {
277+
setMounted(true);
278+
}, []);
279+
280+
if (!mounted || !user) {
281+
return <SidebarUserFallback collapsed={collapsed} />;
282+
}
274283

275284
const handleLogout = async () => {
276285
try {
277-
await user?.signOut();
286+
await user.signOut();
278287
router.push("/");
279288
} catch {
280289
// Force redirect even if signOut fails
@@ -283,7 +292,7 @@ function SidebarUser({ collapsed }: { collapsed: boolean }) {
283292
};
284293

285294
// User display info
286-
const displayName = user?.displayName || user?.primaryEmail?.split("@")[0] || "User";
295+
const displayName = user.displayName || user.primaryEmail?.split("@")[0] || "User";
287296
const initials = displayName.slice(0, 2).toUpperCase();
288297

289298
return (

packages/ai/src/openai.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ if (typeof window === 'undefined') {
2424
export const aiProvider = createOpenAI({
2525
apiKey: NVIDIA_KEY,
2626
baseURL: NVIDIA_BASE_URL,
27+
compatibility: "compatible",
2728
});
2829

2930
export function getChatModel() {

packages/db/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as schema from './schema';
44
export * from './schema';
55

66
const databaseUrl = process.env.DATABASE_URL;
7-
const defaultTimeout = process.env.NODE_ENV === "development" ? 3000 : 2500;
7+
const defaultTimeout = process.env.NODE_ENV === "development" ? 15000 : 10000;
88
const neonFetchTimeoutMs = Number(process.env.NEON_FETCH_TIMEOUT_MS || defaultTimeout);
99

1010
neonConfig.fetchFunction = async (input: string | URL | Request, init?: RequestInit) => {

0 commit comments

Comments
 (0)