← Changelog
Daily2026-05-21

A refreshed interface + an embeddable workbench

This day the interface got a system-level refresh: a unified design system, a full icon set, smooth motion, a new preview shell. The workbench grew a "split-surface plugin" architecture, hosting a full embedded tool window for the first time; the dashboard was rewritten session-centric and chat stopped crossing streams; the engine added 2D sprite layers and a full set of lighting examples, and start/stop was simplified to one command.

From prototype feel to product feel

For a while, most energy had gone into "can it run at all"; by this day the product reached the point of "growing up" in both visuals and structure. The through-line was systematically pushing the interface from a prototype assembled from features toward something that looks — and feels — like a finished product: a unified design language, consistent icons, smooth motion, and a clearer overall layout. At the same time, the workbench, dashboard and engine each advanced. Together they signal that this thing is no longer content with "can demo" but starts taking seriously the look and order of "being opened and used every day, long-term." Pushing both — good-looking and usable — at once is the key leap from usable to pleasant.

A refreshed interface: unified design system, icons, motion

The interface got a system-level refresh this day. Underneath went a three-layer design-token structure — unifying base visual variables like color, border and spacing under one management rather than hardcoded styles scattered everywhere; this makes the whole app visually consistent by nature, so changing a theme in one place takes effect everywhere and maintenance cost drops sharply. A clean set of line icons was wired into the workbench and toolbars, making places that had made do with emoji or text professional and uniform. A motion layer was added: sidebar content and panels transition smoothly instead of snapping instantly, and the visual continuity makes interaction feel less jarring. The top structure was upgraded too. None of these is a "feature" on its own, but together they decide whether, on first opening it, you think it's a toy or a tool.

The workbench can host a full embedded tool window

The workbench upgraded to a "split-surface plugin" architecture this day: a tool can put its controls in the sidebar and also take over the entire main area to lay out a full working surface. This solves a real cramping — a tool needing a big canvas, like "character generation," used to be squeezed into a small panel with no room to work; now it can live in the workbench as an embedded tool window filling the main area, working like professional software. The first tool migrated onto this architecture was the character-generation workbench, which now runs as its own embedded page. Chat also gained a /tool command to invoke a tool's capability directly, rather than describing it in natural language each time. The architecture's significance goes well beyond "bigger windows": it defines "how a third-party tool plugs into the workbench as a first-class citizen," a key step toward a platform extensible without limit by plugins.

A cleaner dashboard, chat that doesn't cross streams

The dashboard got a session-centric rewrite this day, narrowed to three clear views — overview, sessions, analytics — and retired some duplicate, outdated old pages. The most direct benefit: opening it no longer throws a pile of red errors but presents the current state cleanly and trustworthily. Chat also fixed an old annoyance — each conversation tab is now strictly bound to its own session, so switching sessions or jumping back from the dashboard won't bleed into the previous conversation's still-flowing output stream; the stop button is aligned with the backend's real run state, so clicking it actually stops. The version number is always visible and refreshes on returning to the window. These are the basics of "not getting in your way day to day," filled in one by one this day.

Engine: 2D sprite layers + a full set of lighting examples

The engine advanced on both 2D and lighting this day. On 2D, a sprite layer was added: sprites can be layered and stacked in the correct order, finally giving 2D content (the front-to-back relationship of backgrounds, characters and UI elements) a proper foundation, no longer relying on manual hacks to control what sits on top of what. On lighting, a full progressive set of lighting examples was completed — from basic shading and materials to textured lighting, light casters and multiple lights in one scene, a series of chapters all made into runnable engine demos. These examples are both living documentation of the engine's lighting and ready teaching material for anyone (including AI) to learn "how to light a scene with this engine." Advancing 2D and 3D together means the engine isn't lopsided — it can do flat as well as dimensional.

Simpler install and start/stop

This day thoroughly simplified install and start/stop. Now one command brings up the whole set of services, and one command stops it cleanly; the background runs a single long-running core service, no longer depending on a container environment or requiring a pile of installs first as before. A pitfall that once stalled newcomers on certain systems due to a failed container install was sidestepped along the way. For anyone getting started, the road "from clone to running" is squeezed to its shortest — the most concrete part of lowering the bar to use. However strong a platform, if the very first install step turns away half the people, its capability never gets through; paving the entrance flat is itself part of product strength.

What this day means

This was a day of upgrading the product's "looks" and "skeleton" at once. The visual refresh makes it look like a finished product, the split-surface workbench lets third-party tools genuinely move in, the clean dashboard and non-crossing chat keep daily use unobstructed, the engine's 2D layers and lighting examples make capability more complete, and the simplified install lets more people through the door. These changes span four different dimensions — good-looking, usable, extensible, approachable — yet point at one thing: making the platform worthy of being used long-term as a proper tool. Between "a runnable prototype" and "a tool you're glad to open every day" lies, often, not some killer feature but exactly this kind of full day of polishing roughness into refinement across many dimensions at once.

← All daily updates