Quick chat FAB, active session indicators, memory tab counts, improved new session
This commit is contained in:
@@ -4,9 +4,11 @@ import { useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { ArrowLeft, Send, Loader2 } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { useToast } from "@/components/Toast";
|
||||
|
||||
export default function NewSessionPage() {
|
||||
const router = useRouter();
|
||||
const { toast } = useToast();
|
||||
const [message, setMessage] = useState("");
|
||||
const [sending, setSending] = useState(false);
|
||||
|
||||
@@ -14,7 +16,6 @@ export default function NewSessionPage() {
|
||||
if (!message.trim() || sending) return;
|
||||
setSending(true);
|
||||
try {
|
||||
// Create session
|
||||
const res = await fetch("/api/sessions", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
@@ -24,7 +25,6 @@ export default function NewSessionPage() {
|
||||
const sessionId = data.session?.id;
|
||||
if (!sessionId) throw new Error("No session ID");
|
||||
|
||||
// Send first message
|
||||
await fetch("/api/sessions/" + sessionId + "/chat", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
@@ -32,7 +32,8 @@ export default function NewSessionPage() {
|
||||
});
|
||||
|
||||
router.push("/history/" + sessionId);
|
||||
} catch {
|
||||
} catch (e) {
|
||||
toast("Failed to create session", "error");
|
||||
setSending(false);
|
||||
}
|
||||
};
|
||||
@@ -46,11 +47,15 @@ export default function NewSessionPage() {
|
||||
<h1 className="text-[15px] font-medium" style={{ color: "var(--text-1)" }}>New Session</h1>
|
||||
</div>
|
||||
|
||||
<p className="text-[12px]" style={{ color: "var(--text-3)" }}>
|
||||
Creates a new web session and sends your first message.
|
||||
</p>
|
||||
|
||||
<textarea
|
||||
value={message}
|
||||
onChange={(e) => setMessage(e.target.value)}
|
||||
placeholder="What do you need?"
|
||||
className="w-full min-h-[120px] p-4 rounded-2xl text-[14px] resize-none outline-none transition-colors"
|
||||
className="w-full min-h-[140px] p-4 rounded-2xl text-[14px] resize-none outline-none transition-colors leading-relaxed"
|
||||
style={{
|
||||
background: "var(--bg-raised)",
|
||||
border: "1px solid var(--border)",
|
||||
@@ -58,6 +63,7 @@ export default function NewSessionPage() {
|
||||
}}
|
||||
autoFocus
|
||||
disabled={sending}
|
||||
onKeyDown={(e) => { if (e.key === "Enter" && e.metaKey) create(); }}
|
||||
/>
|
||||
|
||||
<button
|
||||
@@ -71,6 +77,12 @@ export default function NewSessionPage() {
|
||||
<><Send size={16} /> Send</>
|
||||
)}
|
||||
</button>
|
||||
|
||||
{sending && (
|
||||
<p className="text-[12px] text-center" style={{ color: "var(--text-3)" }}>
|
||||
This may take a moment — Hermes is processing your message.
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user