1.3.0 is a surface release. The teaching engine is the same Socratic loop, but the way you meet it - on the landing page and inside the chat - got a lot more deliberate. The headline is a hero you can actually touch, and a transcript you can actually read.
An Interactive Hero
The front page now renders a 3D CRT monitor in WebGL. It is not a screenshot - the screen boots a live keating terminal sequence, the power LED and buttons respond to hover, and the mascot peeks over the top of the machine. The bezel carries the real brand lockup, and the green key on the right is a branded K that launches a session when you press it. On devices without WebGL the hero gracefully falls back to the existing 2D terminal demo, so nothing is lost on lower-end hardware.
The goal is honest: the home page should feel like the tool. A retro machine that responds to you is a better promise than a static banner claiming the same thing.
Readable Chat
Keating's replies render on a retro panel, but that panel is now theme-aware instead of forced dark. In light mode it is a readable cream panel with dark ink and a barely-there scanline; in dark mode it becomes a phosphor CRT with the scanline turned up. The hard offset shadow that gives the brand its retro feel stays in both. The conversation column is also wider, so longer explanations get more comfortable line lengths instead of fighting a narrow box.
Retro and Mobile Polish
A broad pass tightened the rest of the interface, with particular attention to mobile. The landing page, navigation, footer, session cards, session sidebar, and session manager were all reworked, and the settings surface now shares reusable SettingRow and Toggle components with their own Storybook stories. Copy buttons were reworked so copying a command or block gives clear feedback. The shared component stories make these pieces easier to review in isolation rather than only inside a running session.
Usage and Browser Runtime
The usage page and its charts were overhauled, backed by a dedicated chart-data pipeline and topic grouping so your learning history is easier to read at a glance. Under the hood, the in-browser runtime gained portable session data, a snapshot database, and sandbox export, so a session's state can travel with you. NodePod boot-file generation was reworked to stay aligned with the checked-in generator, keeping the browser sandbox bundle reproducible from the same source tree as the release build. New tests cover the portable data, usage charts, topic grouping, and snapshot paths.
One Version, Everywhere
Version numbers used to drift between the CLI, the package shim, the web app, the Pi extension, and the page metadata. Now a single scripts/sync-version.ts reads the canonical version from the root package.json and writes it everywhere it appears, with the then-current just check-version task as a read-only CI guard. The CLI reports it directly with keating version. It is a small thing that quietly removes a whole class of "which version am I actually running" confusion.