Watch
1
0
Fork
You've already forked souveraine
0

the avatar draws: serve the rig over loopback, not the opaque scheme

This commit is contained in:
casey 2026-08-05 22:14:07 -04:00
commit 3d3eb2cc8e
4 changed files with 144 additions and 42 deletions

View file

@ -50,25 +50,18 @@ Singleton {
+ "These are the postures the presence system already uses. "
+ "Use them sparingly, where the shift is real."
// The rig is not in the repo and never will be it is licensed assets on
// Casey's own device (TASK-59). So its absence is the ordinary state of any
// machine that has not staged it, and it must read as "not set up here"
// rather than as a broken face.
property bool rigPresent: rigProbe.exists
FileView {
id: rigProbe
path: root.rigDir + "/index.html"
preload: true
}
// No pre-flight check on the rig.
//
// There was one, reading `FileView.exists`, and it reported false for a
// directory that was plainly there so the guard meant to explain a
// missing rig became the thing preventing a present one from loading. The
// host already fails loudly and specifically when the directory is wrong,
// and `onExited` puts `joined` back, so the honest answer is to let it try
// and report what actually happened. A guard that can be wrong about the
// world is worse than no guard.
function join() {
if (root.joined)
return;
if (!root.rigPresent) {
console.log("[face] no rig at " + root.rigDir
+ " — stage it with tools/stage-face.sh; not joining");
return;
}
host.running = true;
root.joined = true;
}
@ -114,6 +107,33 @@ Singleton {
signal tapped(string area)
// Reachable by name, so the dial, a launcher and the agent all summon her
// the same way rather than each growing a copy (TASK-30/31). `status`
// answers rather than assumes an agent that cannot ask whether she is up
// has to guess, and guessing is what a verb table exists to stop.
IpcHandler {
target: "face"
function toggle(): void {
root.toggle();
}
function join(): void {
root.join();
}
function leave(): void {
root.leave();
}
function status(): string {
return JSON.stringify({
joined: root.joined,
rig: root.rigDir
});
}
}
Socket {
id: sock
path: root.socketPath