"use client"; import { useState, useEffect } from "react"; import { Save, RotateCcw } from "lucide-react"; export default function SoulPage() { const [content, setContent] = useState(""); const [original, setOriginal] = useState(""); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [saved, setSaved] = useState(false); useEffect(() => { fetch("/soul/api") .then((r) => r.json()) .then((d) => { setContent(d.content || ""); setOriginal(d.content || ""); }) .catch(() => {}) .finally(() => setLoading(false)); }, []); const dirty = content !== original; const save = async () => { setSaving(true); await fetch("/soul/api", { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ content }), }); setOriginal(content); setSaving(false); setSaved(true); setTimeout(() => setSaved(false), 2000); }; return (
Persona file. Loaded fresh each message.
{loading ? (