Skip to content

Commit f72cdb6

Browse files
Update page.tsx
1 parent 8a15eec commit f72cdb6

1 file changed

Lines changed: 80 additions & 31 deletions

File tree

app/page.tsx

Lines changed: 80 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,98 @@
33
import { useEffect, useState } from "react";
44
import { kernel } from "@/core/kernel";
55

6-
export default function Home() {
7-
const [status, setStatus] = useState("booting...");
8-
const [aiResponse, setAiResponse] = useState<string>("");
6+
export default function Page() {
7+
const [systemStatus, setSystemStatus] = useState("booting...");
8+
const [logs, setLogs] = useState<string[]>([]);
99

1010
useEffect(() => {
11-
// listen to system events
11+
// SYSTEM EVENTS
12+
1213
kernel.on("system:ready", () => {
13-
setStatus("online");
14+
setSystemStatus("online");
15+
pushLog("System ready");
16+
});
17+
18+
kernel.on("plugin:loaded", (e: any) => {
19+
pushLog(`Plugin loaded: ${e.detail.name}`);
1420
});
1521

16-
kernel.on("ai:response", (e: any) => {
17-
setAiResponse(JSON.stringify(e.detail));
22+
kernel.on("ai:response", () => {
23+
pushLog("AI response received");
1824
});
1925

20-
kernel.on("news:update", (e: any) => {
21-
console.log("News updated:", e.detail);
26+
kernel.on("news:update", () => {
27+
pushLog("News feed updated");
2228
});
2329

24-
// trigger system-level events
30+
// BOOT SIGNAL (optional safety trigger)
2531
kernel.emit("system:check");
32+
33+
return () => {
34+
pushLog("UI mounted");
35+
};
2636
}, []);
2737

38+
const pushLog = (msg: string) => {
39+
setLogs((prev) => [msg, ...prev.slice(0, 10)]);
40+
};
41+
2842
return (
29-
<div className="web4-desktop">
30-
<h1>Web4 OS</h1>
31-
32-
<p>Status: {status}</p>
33-
34-
<button onClick={() => kernel.emit("news:fetch")}>
35-
Sync News Feed
36-
</button>
37-
38-
<button
39-
onClick={() =>
40-
kernel.emit("ai:query", "Explain Web4 system architecture")
41-
}
42-
>
43-
Ask AI Kernel
44-
</button>
45-
46-
<pre style={{ marginTop: 20 }}>
47-
{aiResponse}
48-
</pre>
49-
</div>
43+
<main className="web4-desktop">
44+
{/* HEADER / SYSTEM STATUS */}
45+
<header className="web4-header">
46+
<h1>WEB4 OS</h1>
47+
<span className={`status ${systemStatus}`}>
48+
{systemStatus.toUpperCase()}
49+
</span>
50+
</header>
51+
52+
{/* CONTROL PANEL */}
53+
<section className="web4-controls">
54+
<button onClick={() => kernel.emit("news:fetch")}>
55+
Sync News
56+
</button>
57+
58+
<button
59+
onClick={() =>
60+
kernel.emit("ai:query", "Explain Web4 OS architecture")
61+
}
62+
>
63+
Ask AI Kernel
64+
</button>
65+
66+
<button
67+
onClick={() =>
68+
kernel.emit("window:create", {
69+
content: "New Web4 Window Instance"
70+
})
71+
}
72+
>
73+
Open Window
74+
</button>
75+
</section>
76+
77+
{/* DASHBOARD */}
78+
<section className="web4-grid">
79+
<div className="panel">
80+
<h3>System Status</h3>
81+
<p>{systemStatus}</p>
82+
</div>
83+
84+
<div className="panel">
85+
<h3>Live Kernel Logs</h3>
86+
<ul>
87+
{logs.map((log, i) => (
88+
<li key={i}>{log}</li>
89+
))}
90+
</ul>
91+
</div>
92+
93+
<div className="panel">
94+
<h3>AI / News / Plugins</h3>
95+
<p>Event-driven modules active via kernel bus.</p>
96+
</div>
97+
</section>
98+
</main>
5099
);
51100
}

0 commit comments

Comments
 (0)