Added
- Monos and habit runs can create HTML visual artifacts with
app artifacts.writeusingkind: "html", alongside Markdown documents. Visuals run in a sandboxed frame, follow the app's theme, fit their content height, and refresh when revised. Scripts and public HTTPS assets are supported; access to the app, network requests through fetch, nested frames, and form submissions are blocked. Clicked web links open in the user's browser. - Mono replies display linked local images and videos inline, including workspace-relative media references. Images open in the file viewer when clicked, and videos have playback controls. Previews load as they approach the visible chat, reserve their space to avoid layout shifts, and fall back to the original link when a linked file cannot be displayed. Local videos stream without reading the whole file into memory; only the requested video file is added to the asset scope.
- The Mono composer has an emoji picker with search, categories, recent picks, and a saved skin-tone preference. Picks replace the selected text or insert at the caret and return focus to the composer. Its bundled catalog works offline across platforms and filters out emoji versions and country flags the system's font cannot draw.
- Model and effort controls sit beneath the Mono composer, alongside its context usage meter. Compact plan-usage chips show Claude Code, Codex, OpenCode, and Devin usage beside the attachment and emoji buttons when available.
- Sessions a Mono starts appear as status cards beneath its replies, showing their title, provider, project, and whether they are working, need input, are drafts, failed, stopped, or finished. Cards open the session inside the overview and remain visible when a later completion report continues the turn.
- The Mono overview's Sessions tab has search and filters for provider, status, time, archived sessions, and unavailable sessions. Search also matches project names. Sessions appear newest first and load another page as the list nears its end; changing the search or filters resets paging. Empty tabs and searches show guidance for the current state.
- MonoCode reopens the last open Mono on launch when it still exists and Monos are enabled. Closing the Mono clears that choice, and windows transferred from another window retain their own view.
Changed
- A unified Mono overview replaces the separate details, sessions, artifacts, and changes sidebars, with Sessions, Documents, Habits, and Changes tabs. It opens beside the chat by default and can be toggled from the title bar. The default width is 400 pixels, and resizing allows up to 960 pixels or 62% of the window. Tabs show item counts; the folded Changes icon has an accent dot when changes are present.
- Mono settings open in a dialog from the title bar, with General, Soul, and Memory sections. General brings together model settings, permissions, projects, sidebar preferences, and conversation reset. Clicking the mascot opens the mascot and color popover, and the name field sits directly beneath it.
- Mono-started sessions launch without creating workspace tabs by default and open over the overview's session list, with Back, Open in workspace, and Hide overview controls. New launches stay out of the project sidebar unless Show sessions in sidebar is enabled in that Mono's settings; optional folder grouping remains available.
- The overview's Changes tab groups repositories into project tabs with their logo or mascot and changed-file count. Worktrees share their project's tab and have a checkout picker. Attached Git projects appear even before they have changes, and repositories remain available after committing so their work can still be pushed. Each checkout retains its commit draft when switching projects or overview tabs.
- Mono commits now use the repository's real Git staging area, shared with the project's Changes panel. The view lists staged and unstaged files, supports staging or unstaging files, folders, or all changes, and offers discard, list/tree views, commit, push, sync, and pull request actions. Generated messages and commits use all staged changes in the active checkout. Fully committed Mono files leave its session review; partially staged files retain their remaining review.
- Clicking a changed file opens its inline diff editor over the Changes list, with Back navigation. Changed images and videos open in the media preview instead.
- Documents and visuals open inside the overview's Documents tab. Reply cards use compact title chips with document or chart icons, and the reader keeps its title in the navigation header without repeating the title and update timestamp above the content. Copy and delete controls remain available.
- Mono session cards show their project and place the model's provider mark beside the branch in the footer, revealing the model name on hover or focus so titles have more room.
- Habits in the overview are grouped into Up next today, Done today, and Later, with group counts and paused habits last. When nothing is scheduled today, the remaining group is labeled Scheduled.
- Streamed replies show text as it arrives, with word fades adapting to the stream's cadence between 120 and 400 milliseconds. The earlier paced reveal remains available through
localStorage["monocode.pacedReveal"] = "1". Transcript following glides with incoming content, bounds the speed of Mono reply reveals, and respects entrance-animation settings. - Mono turn actions appear on hover or keyboard focus in a reserved gap and stay visible while their panel is open. Reaction badges use translucent chips at the message corner, and the next user message stacks with a message answered only by a reaction. Handoff and second-opinion controls are hidden in the Mono view.
- New conversations show an empty context ring before usage is reported. A zero-usage ring no longer draws a progress dot.
- Regression coverage now includes Mono overview navigation, settings and popovers, memory editing, session search and paging, habit grouping, multi-repository staging and commits, HTML artifact persistence, local media references, session-state synchronization, Cursor catalog fallbacks, emoji data, and reply pacing. Chromium and WebKit tests cover the emoji picker, tab drags, Mono completion layout, and interrupted scroll glides; Linux drag fixtures mock native window controls, and wheel-interruption checks wait for scrolling to settle.
Fixed
- Cursor model discovery uses existing CLI credentials without starting the browser login flow. Missing credentials or ACP failures fall back to CLI discovery and then the bundled model catalog.
- Background agent updates preserve pending account changes, session titles, newly opened sessions, and streamed output when several updates arrive before React renders, including under Strict Mode.
- Switching Monos clears the previous Mono's open session, document, focus, search, and filters so its overview does not leak into another conversation.
- Saved Mono session summaries and habits are cached so returning to their lists avoids a blank reload. Session lookup also finds saved sessions moved to another project; loading cards reserve their space, and unavailable sessions can be inspected through the filter.
- Reused sessions are recovered from successful follow-up receipts as well as launch receipts, using saved metadata or session listings. Merely listing or reading a session does not create a chat card.
- Completion reports and session cards attach without shifting Mono transcript spacing or interrupting reply fades. Ready completion prompts stay hidden while being delivered; waiting or failed prompts remain visible, including failures that need a retry.
- Manual scrolling interrupts Mono reply glides, ambiguous wheel gestures pause following, and scrolling a nested code block keeps its own scroll behavior. Following offsets no longer enlarge the transcript's scroll range, and focusing a session during the overview's slide animation no longer scrolls the surrounding panel out of place.
- Session and artifact cards fit narrow panes, truncating long titles and project labels instead of overflowing their container. Popovers opened from dialogs stay above them, and Escape closes the popover before the dialog.
- Video previews defer releasing their source until the element is actually gone, preventing Linux WebKit from stalling without metadata when React replays effects during an in-progress load.
- Opening a particular file in a multi-file diff expands that file even when the other files start folded.
- Sideways tab drags require a deliberate pull below the tab bar before targeting a pane. Fast releases in WebKit keep their reorder even when queued pointer moves report no held buttons, while missed releases still cancel the drag.