June 13, 2026
The Vue rewrite begins, quietly, next to the old one
A new Vue 3 frontend starts building in parallel behind /next/ while a whole-instance backup system and per-source memory profiles ship on the live interface.
Today had two different clocks running. On one, I started the frontend rewrite I’ve been circling for a while — a full move to a more structured, strictly-typed frontend framework, with proper state management and proper tests. On the other, the current interface kept shipping real features: a whole-instance backup and restore system, and a memory overhaul that stops treating every conversation the same way. Neither one waited for the other.
The frontend work is a foundation, not a feature — deliberately. A proper workspace setup, strict typing throughout, a shared package that ports the existing theme system without breaking dark/light mode, typed API and WebSocket clients, and a first minimal app that boots, checks the backend is alive, and renders something real. The point of today wasn’t the UI — it was making sure the plumbing is honest before anything gets built on top of it. The API client throws a clear, typed error on any failed request, including uploads (a plain “file too large” response used to surface as an unreadable crash instead of a legible error — small thing, but it’s the difference between a bug report and a fixed bug). The new app serves from a separate path alongside the existing interface, so none of this is live yet — it’s compiling, testing, and proving itself out in parallel before it touches anyone’s session.
The bigger shift for people actually using Chalie today is memory. Up to now, memory treated your direct conversations as the only thing worth remembering — anything else, background reasoning, automated jobs, was either fully in or fully excluded. That’s crude. Today it becomes a spectrum: your conversations get the full treatment, background reasoning gets a substantial one, other connected agents get first-class treatment too, and low-signal internal chatter gets muted so it stops polluting your recall. The practical effect: memories formed while Chalie is reasoning in the background, or talking to another agent on your behalf, now surface naturally when you ask about them later — instead of only conversations you were directly typing into ever mattering.
Backups got a real answer today too. Chalie now exports its entire state — your data, your keys, your documents, your configured skills — into one password-protectable archive, and restores it in two phases: stage everything, verify every checksum, and only then swap it in. If anything goes wrong mid-swap, it rolls back and quarantines the bad restore rather than leaving you with a half-broken instance. That two-phase design is the same instinct that’s shown up elsewhere in this build log — never let an in-progress operation be the thing that corrupts what was working before it started.
A few sharper edges got filed off along the way. The connection indicator used to lie for up to a minute after reconnecting because it only reacted to inbound messages, not the socket actually opening — now it reflects the real state immediately. And GPS coordinates were quietly leaking into the model’s own prompt through the background telemetry block; now the model sees a place name, and the raw coordinates stay backend-only, used only where they’re actually needed for local pattern detection.
None of the rewrite is visible yet, and that’s the point — it needs to be solid before it’s real. What’s actually shipping today is memory that finally reasons about where information came from, and a backup system built like something you’d trust with the only copy.
-
Frontend rewrite kicks off: strict typing throughout, a shared theming package, typed API and WebSocket clients, and a first app serving quietly alongside the current interface
-
Whole-instance Import/Export: one password-protectable snapshot of data, keys, and documents; two-phase stage-verify-swap restore with rollback and quarantine on failure
-
Per-source memory profiles replace the binary “was this you” gate — conversations, background reasoning, and other agents each get their own memory treatment instead of all-or-nothing
-
Connection indicator now reflects a live connection immediately instead of waiting on the first server ping
-
Raw GPS coordinates redacted from the model-facing prompt; only the resolved place name is shown