Skip to content

construct

v0.12.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ade agent agentic-development-environment cmux coding-agent harness
+2 more
opensource-agents tmux

Summary

AI summary

Refresh to program module renaming, canvas-to-program migration, daemon archive improvements, CLI harness addition, and multiple tui/program UI enhancements.

Full changelog

What's Changed

  • Resize passive split panes on size divergence, not just the active pane by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/485
  • Add session canvas MVP by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/482
  • Hydrate each split pane at its own width, not the active pane's by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/486
  • fix(daemon): submit canvas Run to external agent PTYs as a bracketed paste by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/487
  • fix(tui): canvas closes only via toggle / C-x Space, not Esc or list click by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/488
  • fix(tui): account for preceding wrapped lines in canvas cursor position by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/489
  • test(tui): guard list-click session switch with canvas open via full mouse path by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/492
  • fix(tui): de-quadratic the hovered-URL hit test that runs every frame by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/490
  • feat(canvas): conflict-free editing via anchored edits + 3-way merge by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/494
  • fix(tui): add close button and widget icons to canvas title bar by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/491
  • perf(tui): skip full-frame repaint for off-screen sessions' PTY chunks by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/495
  • feat(tui): canvas editor selection cancel + copy keybindings by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/496
  • fix(tui): route keys to palette/operator over a focused canvas by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/497
  • Group archived subagents in session list by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/498
  • feat(tui): nest/un-nest canvas markdown list items via Tab/Shift-Tab by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/499
  • fix(tui): word-wrap canvas cursor to match the renderer's Wrap{trim:false} by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/500
  • fix(tui): match canvas title button order to chat view by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/501
  • fix(tui): dim inactive canvas border without hue shift by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/503
  • fix(daemon): make session archive survive the adapter-close race by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/505
  • feat(tui): vertical scroll for the canvas editor by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/502
  • fix(tui): move canvas cursor through visual rows on wrapped lines by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/506
  • feat(tui): canvas session clip — cleaner label, hover preview, click-to-focus by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/507
  • Shimmer canvas Markdown while a Run is executing by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/504
  • fix(canvas): make execution prompt autonomous by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/508
  • fix(canvas): register smart clip prompt reference by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/509
  • Canvas run spinner stops on first canvas output by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/511
  • fix(canvas): load run content from context tool by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/512
  • Share canvas run shimmer state by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/513
  • fix(tui): share the session-view right cluster with the canvas title bar by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/510
  • Keep canvas shimmer through prompt echo by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/514
  • Ignore PTY noise for canvas shimmer stop by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/516
  • Add canvas run and hover affordances by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/515
  • mcp: reconnect client if disconnected before handling requests by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/517
  • Stop only run button spinner on first output, keeping shimmer animation active until idle by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/519
  • Add Grok CLI harness support by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/518
  • daemon: make session archive/delete return immediately (non-blocking for TUI) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/521
  • protocol: add codex-oauth:gpt-5.3-codex-spark to /model completions by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/520
  • cli: add TDD test for orchestrator canvas run / submit shimmer interaction (no panic, no cross-clear) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/522
  • cli: C-l centers current cursor row in canvas popup (emacs-like) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/524
  • smith: auto-approve routine dev shell commands (git/cargo/rg etc) via deterministic pre-review rules + TDD by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/526
  • Encourage canvas agents to delegate independent tasks to subagents by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/525
  • Add canvas planning-pass instruction to clear shimmer early by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/527
  • smith: add antigravity-oauth provider (Google agy subscription path) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/523
  • canvas: let agents add shimmer to blocks via canvas_edit shimmer flag by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/528
  • canvas: instruct agents not to add unsolicited notes or sections by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/532
  • cli: refresh app and keymap command wiring by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/531
  • Add canvas incremental search mode and replay keybindings by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/530
  • cli: wire canvas Ctrl-A and Ctrl-F controls by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/529
  • canvas: submit Run prompt to smith sessions with CR, not LF by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/534
  • Add session title actions menu by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/533
  • canvas: clarify shimmer semantics and tighten planning-pass instruction by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/535
  • Fix canvas search paste routing by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/540
  • Fix canvas cursor movement around list markers by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/542
  • Show actionable smith model startup errors by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/543
  • smith: repair orphaned tool-call pairing on resume by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/544
  • Keep session-title menu clickable over mouse-grabbing children by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/545
  • cli: fix canvas widget icon border color and reveal by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/537
  • cli: hover shimmering canvas text shows session output; landscape hover card by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/539
  • Fix URL click in full-screen / mouse-grabbing sessions by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/547
  • Make C-s canvas search find and highlight smart clips by label by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/548
  • Fix canvas cursor off-by-one after wide Unicode chars (⏳ emoji) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/546
  • canvas: skip over clip when Down/C-n lands on @ start-of-clip by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/550
  • Show only session tail in canvas hover by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/552
  • cli: dim session-actions menu icon when pane unfocused by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/551
  • daemon/claude: lock in the create-starts-the-turn contract for seed prompts by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/549
  • cli: refresh canvas search after clean updates by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/553
  • Fix canvas cursor movement across wrapped spaces by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/554
  • Tune canvas session hover tooltip by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/555
  • fix(tui): canvas session-clip click switches sessions persistently by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/536
  • cli: match canvas titlebar ☰ menu icon to canvas border color by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/556
  • mcp/cli: add soft archive for sessions and subagents by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/557
  • fix(canvas): advance cursor when space typed at end of list item by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/558
  • cli: fix stale canvas ☰ color test broken by #556 (unblock red main) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/561
  • canvas: define shimmer as pending-vs-settled and force the planning pass first by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/559
  • tui(canvas): onboarding placeholder with clickable templates by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/560
  • rename canvas → program by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/562
  • fix(program): keep widget popover below the title bar by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/564
  • fix(tui): align title-bar widget-icon hitbox with the visible square by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/565
  • fix(program): advance cursor when space typed at end of heading by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/566
  • program: custom templates in the empty-state placeholder by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/563
  • feat(daemon): cascade archive/delete onto subagents by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/568
  • program: keep run shimmer alive past owning-session idle (clear on settle / terminal / inactivity) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/569
  • program: declare per-block shimmer by stable content-id (spec 0053 + implementation) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/567
  • chore(cli): remove accidentally committed editor backup files by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/573
  • refactor: deduplicate adapter headless helpers by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/570
  • Refactor server dispatch into macro-driven routing by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/572
  • refactor(cli): dedupe tooltip rendering helpers by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/571
  • fix(program): keep shimmer alive across transient-empty + add keep_pending by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/576
  • feat(tui): cascade-delete on the archived disclosure row (C-x k) by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/574
  • fix(tui): route navigation keys to the session list when the Program view is open by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/575
  • refactor(cli): extract text wrapping utilities by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/579
  • refactor(smith): dedup tool run pre/post hooks by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/580
  • feat(program): finer block granularity — split shimmer blocks on heading & list-item boundaries by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/577
  • feat: per-session "needs you" marker + non-running detection by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/578
  • feat(program): add C-x C-r to run program from the keyboard by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/583
  • refactor(cli): extract matrix click helpers from app by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/581
  • refactor: extract program run methods from session.rs by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/582
  • fix: don't flag a session for your own typing; quiescence 10s→2s by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/587
  • fix(program): keep_pending keeps every block its new_string introduces by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/586
  • Copy Program when forking sessions by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/589
  • feat: add program shimmer tooltips and hover display by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/588
  • Render harness clips with status icons by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/590
  • Fix TUI navigation past top-level archive row by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/591
  • Fix Program selection Run shimmer by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/593
  • Fix Program clip hover hitboxes by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/592
  • fix(program): preserve shimmer across smart clip id normalization by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/594
  • fix(daemon,cli): filter out empty/ignorable PTY events from activity checks by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/597
  • fix(program): show shimmer tooltip for unfocused programs by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/598
  • fix(daemon,cli): make unblock marker (needs_attention) split-view focus aware by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/599
  • Release v0.12.0 by @edwin-zvs in https://github.com/zarvis-ai/construct/pull/601

Full Changelog: https://github.com/zarvis-ai/construct/compare/v0.11.5...v0.12.0

Breaking Changes

  • canvas renamed to program across codebase, APIs, and documentation

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track construct

Get notified when new releases ship.

Sign up free

About construct

Terminal-native agentic development environment: fleet TUI for coding agent CLIs (Codex, Claude Code, Antigravity, Grok) with fork/merge, collaborative Program Markdown orchestration, generative widgets, agent-to-agent orchestration. Single Rust binary.

All releases →

Related context

Beta — feedback welcome: [email protected]