Releases: theboringhumane/theboringfloor
Release list
v0.3.24
v0.3.23
Changelog
Features
- 930107f feat(app): lease current backend at send and idle recap
- a963fec feat(brand): add CLI, display, env, and dotdir names
- e5ee1f0 feat(config): enhance theme directory migration and update tests
- 16aec84 feat(config): implement home directory migration from ~/.theboringoffice to ~/.theboringfloor
- bceb960 feat(config): store state in ~/.theboringfloor
- 043db0c feat(install): ship theboringfloor binary with tbo shims
- fb3143f feat(website): 302 /install.sh and /install.ps1 to GitHub main
Other
theboringoffice v0.3.22 — built-in browser first
Agents now get an explicit built-in-browser-first rule on both backends.
- Use the office browser for every URL, including localhost and external pages.
open-browsershows a page,browser-screenshotcaptures it for the member, andbrowser-snapshotreads text/links for the agent.browser-actionremains mutating and permission-gated.- Agents must not launch Chrome, Chromium, Playwright, Puppeteer, terminal-browser, or another browser process unless the member explicitly asks for an external browser or the built-in path fails and the failure is explained.
- The policy lives in both the first-turn runtime prompt and the canonical oikonomos charter, so it survives context compaction/reload.
Full Changelog: v0.3.21...v0.3.22
theboringoffice v0.3.21 — context recovery
The office can now give its boss recent chat context when compaction or a long session makes it lose the thread.
- Context recovery tool: agents on both backends can emit
⟦recent-messages⟧(default 20) or⟦recent-messages: N⟧(1..50). The marker is hidden, and the office sends a bounded synthetic transcript containing recent user, boss, and tool-output rows. Newest context is preserved; recovery-control noise cannot recursively reappear. - Post-bypass sends proven: successful ON/OFF/rapid transitions route ordinary text and attachments exactly once to the fresh backend. An unavailable generation now shows
send failed: active backend unavailableinstead of silently claiming success. OpenCode and real Claude candidate handoff tests both return replies after old-generation cleanup. - Changelog refresh: every static build fetches a fresh release list; the canonical changelog includes v0.3.20.
- Interaction polish: right-panel tabs are clickable and terminal mouse/focus/capture behavior is hardened.
Full Changelog: v0.3.20...v0.3.21
theboringoffice v0.3.20 — bypass works on both backends
Bypass permissions now works end-to-end on both backends.
- Reliable lifecycle:
/bypassbuilds and starts the replacement before switching. The current backend remains usable during restart, the indicator reflects the active mode, failures retain the old backend, rapid toggles coalesce, stale results are ignored, and discarded candidates are stopped asynchronously. - OpenCode: bypass is a process-scoped
OPENCODE_CONFIG_CONTENToverride on the office-owned child. OFF strips inherited overrides. Project config, parent environment, and brain.json remain untouched. The serve reaper is the soleWaitowner. - Claude:
--dangerously-skip-permissionspropagates through initial Start, death respawn, NewOffice, SwapPrimary, and ReconnectMCP. CLI rejection is actionable. - Real provider proof: OpenCode created a file under bypass with zero permission events. Claude ON executed Write with zero
EvPermission/can_use_tool; the OFF control prompted and completed after allow-once.
Full Changelog: v0.3.19...v0.3.20
v0.3.19
Changelog
Other
- 7706298 wave 103: fix typing animation hang after boss turn ends without text — tool-call-only turns (boss dispatches sub-agents with no plan text) left the boss-N typing placeholder Pending:true forever because maybeBossCompleted swallowed the completion and nothing else cleared it. OpenCode backend now emits a clearing EvChatBoss on session.idle for the primary (guarded against false mid-turn idles by checking textSess); Claude backend emits the same on the result event that pops the FIFO. The reducer's branch (c) learned to strip stale placeholders without appending an empty bubble when the clearing event arrives, making it a no-op on normal turns where streaming already stripped the placeholder.
v0.3.18
Fixes
-
Pasted images now survive for the assistant to read — the Claude backend wrote
[attached file: "path"]text references to temp files that were cleaned up before the assistant could read them. Paste attachments are now persisted to a stable directory so the path reference remains valid after the send pipeline's cleanup pass. -
Bypass permission mode no longer gets stuck on "restarting" — when a backend build result arrived with a stale transition ID, the bypass latch (
bypassRestarting) was never cleared, permanently wedging future/bypasstoggles. Both stale-transition guards now properly release the latch.
theboringoffice v0.3.17 — attachment routing after swaps
Fixes Markdown/code attachments after backend switches and bypass respawns.
- Ordinary Enter now resolves the current backend when the send command executes.
/backendand/bypasscan no longer leave chat pointing at a stopped backend. - Backend generations transition accepting → draining → retired: new sends switch immediately, preaccepted sends may finish, and old teardown happens asynchronously without freezing the UI.
- Claude stdin write failures return real errors instead of false success, so queued attachments remain retryable.
- End-to-end app-to-wire tests cover OpenCode immediate sends, queued/reset retries, and replaced native Claude. Markdown and Go files are always quoted absolute path references; zero text media parts are emitted.
Full Changelog: v0.3.16...v0.3.17
theboringoffice v0.3.16 — attachments, themes, Windows
Three rough edges closed in one release.
- Attachments no longer break Claude providers. OpenCode uploads only content-validated images and PDFs. Text, source, archives, and other files become safe absolute path references that the agent reads with its file tools. Spoofed media MIME falls back to a path reference. Native Claude now implements attachment sending instead of silently dropping files.
- Themes are coherent again. The sidebar wrapper and PanelBox own one continuous per-theme background; ordinary chat, tool, output, roster, board, and picker text inherits it instead of drawing black/white rectangles. Active selections, diff tints, and terminal ANSI backgrounds remain semantic. Theme identity now invalidates the frame cache, including automatic light/dark switches.
- Windows installer support. A PowerShell installer and Windows getting-started documentation are included.
Independent review caught and fixed a MIME-spoof bypass and missing-file transcript-count mismatch before release.
Full Changelog: v0.3.15...v0.3.16
v0.3.15
Changelog
Other
- a0da7fb wave 99: panel elements inherit PanelBg — every styled span inside the sidebar panel now carries the PanelBg background instead of defaulting to the terminal bg. New OnPanel/OnPanelBold helpers + 8 Panel* style variants (PanelDim, PanelHeader, PanelAccent, PanelErr, PanelOK, PanelInfo, PanelTool, PanelWarn) in chrome/styles.go mirror the OnBar pattern; all 14 panel files updated to use them. No more visible background holes between PanelBox fill and element text.