Skip to content

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 25 Aug 07:39
· 8 commits to main since this release
f3b93c4

Code, Work, Chat.

Every space in Mains used to answer one question: which agent runs underneath it. 0.9 adds a second one — what you're here to do. A space now has a mode, and the mode reshapes both the app around the agent and the rules the agent works under.

📖 Full write-up: Mains 0.9: Code, Work, Chat

Three modes, one picker

  • Code, Work, Chat — at the top of the sidebar. Code is everything Mains has been: repos, branches, diffs, terminal. Work is the same agents pointed at documents, reports, and digests, with the git machinery gone. Chat is a conversation that cannot modify anything.
  • Mode belongs to the space, not the app. A Code space and a Chat space sit side by side in the sidebar and behave completely differently. ⌘1, ⌘2, ⌘3 switch between them.
  • Claude and Codex offer all three. Copilot and Cursor stay on Code for now — their harnesses don't yet give us the levers the other two modes need.

The app changes shape

  • Work drops the developer ceremony — no git actions, no terminal, no Changes tab, no permission dropdown. Files and Activity stay, because in Work the deliverables are files.
  • Chat goes further and removes every write-adjacent control, keeping Files for reading.
  • The sidebar follows. Code lists workspaces under Add Project; Work and Chat list chats under New chat, grouped into collections. Model, effort, thinking, and fast mode stay in all three — those are about the engine, not the experience.

So does the agent

  • Each mode carries a harness — a prompt delta, a tool policy, and provider settings — resolved once, when a run starts. Code is untouched; until a space opts into Work or Chat, the harness isn't there.
  • Work takes Bash away and accepts edits by default. Its prompt asks for plain language over tool names — "scanning the folder for documents", not "running grep" — and for finished files rather than fragments in chat. On Codex, the tone comes from Codex's own friendly personality, applied natively.
  • Work's accept-edits is a default — a choice you make in the composer still wins. Chat's read-only is an override — nothing a client asks for can turn a Chat space into a writing one.

Collections

  • What projects are to Code, for Work and Chat — a name, an icon, a set of chats, and a set of sources: files you add or text you paste. No git repository required.
  • Sources travel with the run. When a chat in a collection starts, resumes, or forks, the current sources are copied into that run's own working tree and recorded with their content hash. Move a chat to another collection and its next turn sees the new sources; nothing that already happened is rewritten.
  • Created and edited right from the sidebar, with an icon picker that takes an emoji or any of the built-in icons in any tint. Chats can be renamed inline from the same menu.

Documents open inside Mains

  • Word, Excel, and PowerPoint files render in-app. Markdown renders with Mains' own typography, with working section links and task-list checkboxes.
  • Save a copy… opens a native save dialog and puts the document wherever you actually want it. Files the agent writes live in the run's directory until then.

Pulses for Work and Chat

  • Pulses carry a mode, and templates declare which modes they belong to. The original, git-centric templates stay in Code. Work gets a set built around documents — Daily document digest, Weekly report draft, Meeting notes cleanup, Executive one-pager. Chat gets read-only briefings — Daily briefing, Weekly recap, Devil's advocate pass, Plain-language explainer.
  • Neither needs a workspace. They run on their own, and can point at a collection, whose sources travel with them.

Git stays in your hands

  • The agent's own commit and pull-request tools are gone. Commits and PRs go through the git actions panel — yours to trigger, with the diff in front of you — or through the shell, if you explicitly ask the agent to. What's left of Mains' own tools is reviews and package checks, and those exist only in Code.
  • Worktrees are off by default on fresh installs. New workspaces work directly in the repository unless you turn worktrees on in Settings → Git. If you'd already made the choice, nothing changes.

Smaller things

  • Every workspace now belongs to exactly one project, enforced at the database level. Older installs are backfilled by the migration.
  • Removing a project runs the full cleanup — provider sessions and worktrees included — instead of a cascade that left them behind.
  • Sidebar icons are mode-aware, and a space's mode can be switched from the sidebar directly.
  • A much larger icon set for spaces and collections, with the same picker everywhere an icon is chosen.
  • Onboarding gains a tour of the core features, and Linear issues open with their full detail in the tasks inbox.
  • Archived runs show the project or collection they belong to, can be searched, and can be deleted for good.
  • Codex's personality is now a setting. Work and Chat set it to friendly for you.
  • Markdown in replies got stricter: inline code and code blocks render distinctly, task lists render as checkboxes, and #section links scroll to the section.
  • Codex runs no longer send a model when you haven't chosen one, so the CLI's own default applies.
  • Untracked binary files no longer trip the git snapshot.
  • The composer hint says plugins, matching what the command actually lists.
  • Under the hood: Electron 41.10, Vite 8, updated Claude and Copilot SDKs, and a renderer startup budget — onboarding and the terminal now load lazily.

Platform: macOS only (Apple Silicon and Intel).

Full changelog: v0.8.1...v0.9.0