ReUI
CLAUDE.md4 starsChanged 13 days agoApache-2.0View on GitHub
ReUI is a dynamic island for Windows (later, a Windows shell), written in Rust. Read ARCHITECTURE.md for where things live, PLAN.md for why, DESIGN.md for the look, and docs/PRD-*.md for each feature. docs/guide.md is the user-facing guide to every feature and shortcut; README.md is the product page; docs/development.md covers building, flags, files on disk and the coding-agent hooks. Separate processes talking over one per-user named pipe (postcard frames, types in reui-protocol):
In this repositoryOne other file it gives its agents.
- site/AGENTS.mdAGENTS.md
The file
We split this CLAUDE.md into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 45
No filler text in the UI (no "click to…", counts, hotkey hints).
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
ReUI is a dynamic island for Windows (later, a Windows shell), written in Rust. Read ARCHITECTURE.md for where things live, PLAN.md for why, DESIGN.md for the look, and docs/PRD-*.md for each feature. docs/guide.md is the user-facing guide to every feature and shortcut; README.md is the product page; docs/development.md covers building, flags, files on disk and the coding-agent hooks.
Commands
cargo build --release # all programs into target\release
cargo test --workspace # what CI runs (ci.yml on push/PR, release.yml before packaging)
cargo test -p reui-hub timers # one crate, tests whose path matches "timers"
cargo test -p reui-hub -- --exact <module::path::tests::name> # a single test
target\release\reui-hub.exe --demo # hub + island with demo activities
pwsh scripts/package.ps1 -OutDir dist # setup exe + zip, as .github/workflows/release.yml does on a v* tag- Windows only (MSVC toolchain). Debug builds of the hub keep a console for logs; release builds have none.
- Run test instances sandboxed:
REUI_CONFIG_DIR=<dir>gives the hub, island and Settings their own files, named pipe and single-instance lock, so they run beside the user's installed ReUI without touching its data. - Hub flags:
--demo(--demo-music: only its music),--no-island(startreui-island.exeyourself, e.g. under a debugger),--no-agents|--no-media|--no-clipboard|--no-osd|--no-devices|--no-timers|--no-privacy|--no-stats|--no-calendar|--no-shelf|--no-downloads|--no-screenshots|--no-activities|--no-commands,--notifications(opt-in module),--no-updates,--no-update-restart,--no-onboarding,--first-run. Full list in the doc comment at the top ofcrates/reui-hub/src/main.rs. - Settings window:
reui-settings.exe --page <name>,--shots <dir>(every page as PNG, no window;--backdrop-color #RRGGBBinstead of the wallpaper,--stagesonly the island stages),--perf.tools/readme-images.ps1renders the app's own stages with them (to compare against); the README's pictures indocs/imagescome from the website's island:npm run readme-imagesinsite/with its dev server running; the clipboard's comes from the app's own renderer:cargo test -p reui-island clipboard_panel_sheet -- --ignored, thennpm run clipboard-imageinsite/. The site's guide and changelog pages show the same pictures (site/src/lib/pictures.ts). Perf harnesses:crates/reui-settings/perf/harness.ps1,live.ps1. node tools/opencode-plugin-test.mjsruns the OpenCode plugin against a fake OpenCode and bridge (no OpenCode needed).tools/claude-states.ps1drives a fake Claude Code session through every state viareui-bridgeand captures the island into one review sheet (needs the hub running).- The website is
site/(Astro;npm run devthere, PRD indocs/PRD-site.md);node scripts/shoot.mjsscreenshots it for review. - A tagged release needs a
## <version>entry inCHANGELOG.mdand the tag must match thereui-hubcrate version.
Architecture
Separate processes talking over one per-user named pipe (postcard frames, types in reui-protocol):
reui-hubowns all state. Each feature is aModule(crates/reui-hub/src/modules/<feature>/, registered inmain.rs) that publishes activities withctx.publish(key, priority, View { accent, compact, minimal, expanded }), retracts them, and handles inputs fromctx.next(). The hub orders activities by priority (decision > alert > ongoing > passive) and serves snapshots. Modules are supervised (restarted on error/panic).reui-islandis a surface: it renders whatever the hub puts in front (Windows.UI.Composition + Direct2D/DirectWrite) and sends actions back. The hub launches and supervises it.reui-settingsis the Settings window. It writes the same JSON files the modules read (%APPDATA%\ReUI\*.json), then connects as aSettingssurface and tells the module toreload. The island watches its ownsettings.jsoninstead.reui-bridgeis run by coding agents' hooks (Claude Code, Codex, OpenCode); forwards events to the hub and waits only on permission requests. Every failure must mean "no decision" (fail open), it prints nothing but a decision and always exits 0. It also installs/uninstalls hooks; the hub keeps%LOCALAPPDATA%\ReUI\bin\reui-bridge.exein step with its own build (bridge_sync.rs).reui-setupis the per-user installer;build.rsembeds the programs fromREUI_PAYLOAD_DIR(set bypackage.ps1).reui-designcompilesdesign/tokens.jsoninto constants at build time (tokens::color::label::PRIMARY).
Rules that span files
- Modules describe meaning, never appearance. The protocol carries priority, regions, element kinds, tones, button roles and an accent colour. Sizes, fonts and theme colours live only in
design/tokens.json, the island's geometry inreui-design/src/layout/(shared with Settings' previews), and the drawing in the island'srender/. A redesign should touch tokens and render code, never a module or the protocol. - Idle costs nothing. Event-driven adapters only (polling only where no OS event exists). No compositor animation loops: motion runs on short timers that stop once settled; progress (timelines, clocks) is interpolated in the surface from a start time, not pushed every tick.
- Blocking calls (COM, SQLite, WMI) never run on the hub thread; OS adapters get their own threads. The hub runs a single-threaded tokio runtime.
- Pure logic goes in small files with unit tests beside it (state machines use fake clocks). One job per file, about 500 lines at most. Doc comments say why.
- The island never takes focus and is click-through outside the pill.
- No filler text in the UI (no "click to…", counts, hotkey hints).
- New features get a PRD in
docs/first, then milestones, then a folder inmodules/. KeepARCHITECTURE.md's file map,docs/development.md(flags, files on disk),docs/guide.mdand the README's feature list current when adding modules, flags or files on disk.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

