Shirei v0.9
Native windows, document editing, furigana
2026.11.14
Shirei is Go based cross platform GUI framework. Version v0.9.0 was released on 2026-11-12.
Auxiliary windows, decorationless windows, transparent background
Shirei applications can now have more than just one window, and they have more freedom with how windows are created and handled.
Each auxiliary window is a native window with its own widget state, keyboard focus, text input, and rendering, while sharing application data with the rest of the application.
Both main and auxiliary windows can be:
- created without OS decoration (the title bar)
- made to have transparent background
- be made to float on top without stealing focus
With decorations optional and transparency optional, a Shirei application can take shapes that were not possible before:
- A floating tool panel: undecorated, positioned next to or over the main window, moved by dragging a custom title area
- A launcher-style window: undecorated and semi-transparent, centered on the screen, dismissed when it loses focus
- Notification-like windows that appear near a screen corner and close themselves after a delay
- A desktop overlay: a transparent, undecorated main window drawn directly over the desktop
Document editing
We've long had building blocks for large text viewing, but the text editor was limited to short plain text blurbs. Until now..!
We finally have the building block for a text editor that works with large text content and is suitable for text editors, and we ship it with the Haystack example app.
Rendering is virtualized. The editor supports line numbers, horizontal and vertical
scrolling, selection, clipboard support, undo and redo, and IME composition. Custom
gutters, line decorations, and navigation hooks support editor- and debugger-style
interfaces. The shared editorfile package adds file loading, conflict checks, and saves
through a temporary file.
Furigana
Shirei has long been proud of shipping with robust text display and editing capabilities.
With this release, we add builtin support for rendering Furigana, also known as "ruby text".
The representation uses three Unicode characters set aside for interlinear annotation: U+FFF9 (anchor), U+FFFA (separator), and U+FFFB (terminator). A base and its reading are wrapped in these characters, so the reading lives inside the string itself:
"\uFFF9日本\uFFFAにほん\uFFFB語"
The anchor starts the base, the separator starts the reading, the terminator closes the
group. Both parts must be nonempty. Adjacent groups express per-character readings; a
single group expresses a whole-word reading. The markers can be written directly, or
produced by a small helper, Ruby(base, reading), which returns the same string.
Because the reading is part of the string, marked text works anywhere text works: labels, text inputs, text areas: they can be selected, copied, deleted, etc. Although we don't have specific editing facilities to edit text inside ruby spans: the complete group is a single caret step.
Agent-first
The project began in the summer of 2025 as a hand-written one. At the time, I did not trust AI for programming, and wrote nearly everything by hand; AI appeared only as an occasional helper, but never as a coding agent.
That changed in the summer of 2026, when coding agents began doing most of the implementation work. Since then they have been used extensively, to the point where I no longer write the code and no longer read it either. Given how the project is built, it makes sense for the framework to be designed for agents first.
With this release, we move one step toward that, by shipping an agent-oriented manual: agents.md, written for coding agents to read. It covers the framework's APIs with self-contained topic pages and examples, so an agent can learn the framework and build applications with it.
We also upated our landing page to now recommend asking your AI agent to build something in Shirei by reading the manual as the easiest way to get started.
The example applications
The example applications were updated with the release:
- Process Monitor has a Hot Processes dashboard, smoothed CPU readings, and high-CPU alert popups.
- Haystack has tabbed editing, conflict checks against disk changes, and draft recovery after a normal exit.
- Dir Weight supports subtree rescans and a reviewed deletion queue; removals update measured sizes across overlapping tabs without a full rescan.
The Hot Processes dashboard can be run directly:
go run go.hasen.dev/shirei/examples/process_monitor@v0.9.0 -hot
Platform notes
The window features are implemented on macOS, Windows, and Linux Wayland.
X11 supports auxiliary windows and geometry, but not the complete background and always-on-top overlay behavior. X11 is effectively a second tier platform, and features only land there on a best-effort basis.

GitHub