Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.1.46] - 2026-09-14

### Added

- **Agent orchestration v1** lets a lead agent coordinate up to four workers in the same checkout. Choose worker providers and models, review and edit the proposed assignments before starting, and let the lead manage dependencies, review results, request corrections, and redirect supported workers mid-turn. Overlapping write scopes are queued, and worker approvals and questions are routed through the lead. In #228.
- Orchestration workers are grouped under their lead in the sidebar, with status, model, and expandable details. **View agents** opens their transcripts beside the lead. Run history survives restarts, interrupted work pauses for review, and stopping the lead stops its workers too.
- Completed agent turns show provider-reported token usage, cache metrics, and output rate in a hover or keyboard-focus preview, with metrics retained in saved conversations.
- Web links in user messages show compact page-title and favicon previews while preserving the surrounding text. Preview requests validate public destinations and keep fetching outside the webview.
- Settings → Appearance includes a **Dark-mode lightness** slider and remembers its value independently of light mode.
- Chat backgrounds have separate opacity controls for empty and active sessions, including project-specific overrides. In #191 by @shxntanu.
- GitHub pull-request reviews in the Inbox can switch between changed hunks and full-file context. In #189 by @UtkarshRahim.
- **Close All Tabs** is available from the menu and Command/Ctrl+Shift+W. It closes the active tab's editor files first, then closes the workspace tabs on a subsequent invocation, retaining a blank session and confirming unsaved files and running terminals. In #215 by @kartava.
- Notes can be moved between projects without changing their order or losing edits during navigation. In #187 by @ognjeeen.

### Changed

- Closed conversations are prefetched on hover or press and retained in a bounded cache for faster reopening, with safeguards against stale loads and duplicate tabs.
- Inbox cards mount progressively to keep large lists responsive. In #209 by @notsapinho.
- Reordering tabs and projects uses shared motion settings, with smoother scrolling and consecutive drag gestures. In #206 by @ognjeeen.
- Sidebar session cards place linked work-item and archive controls together in the footer, show a single provider icon, and retain the default cursor on reorderable items.
- Linked work-item update notices now sit inside their session pane, make the agent action more prominent, and offer clearer open and dismiss controls.

### Fixed

- OpenCode falls back to readable local paths for unsupported attachment formats instead of sending provider-rejected file parts, and repairs sessions already stuck on an unsupported file turn. Fixes #211.
- **Supervised** access explicitly sets Claude Code's permission mode, preventing local default settings from silently switching the session to automatic approvals or bypassed permissions. In #203 by @prkl78.
- OMP advisor interjections no longer fold away complete answers or break assistant streams. Saved conversations recover interjection boundaries and status-split continuations, while long interjections collapse by default. In #156 by @elijah7x.
- Continuing a conversation dismisses its due reminder and linked-update notices while preserving future reminders. Linked-activity sounds no longer repeat when the same update remounts.
- Opening the sidebar project picker focuses its search field reliably. In #226 by @actuallyakshat.
- Background GitHub CLI and related helper commands no longer flash console windows on Windows. In #221 by @korefs.
- Nested transcript scrollers keep receiving wheel gestures when the outer transcript reaches an edge, including gestures over SVG icons and containers that scroll on only one axis.
- Orchestration cleanup releases checkout reservations when a window closes and removes stale run and worker ownership records when conversations are deleted. Worker tabs wait for their lead to open, sidebar controls remain independently keyboard accessible, and completed or stopped runs release the Undo lock.

## [0.1.45] - 2026-09-13

Expand All @@ -35,10 +64,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Claude Sonnet 5 appears only with Claude Code 2.1.197 or newer, preventing older CLI versions from receiving an unsupported model argument. In #199 by @nulljosh.
- Claude model choices resolve consistently between the CLI's short live aliases and MonoCode's full startup model IDs, so relaunching no longer switches a saved session to a different model family.

### Fixed

- **Supervised** access now reaches Claude Code as a permission flag. It was the one mode MonoCode sent nothing for, so the CLI fell back to `permissions.defaultMode` from your settings files, and a session the picker labelled Supervised could run as `auto` or `bypassPermissions` without asking.

## [0.1.44] - 2026-09-12

### Added
Expand Down Expand Up @@ -747,7 +772,8 @@ First public release. macOS (Apple Silicon) only.
- Updater endpoint and minisign public key are injected at release time rather than committed, so forks do not inherit the maintainer's update channel.
- macOS release builds sign with `APPLE_SIGNING_IDENTITY` via a config overlay; the committed default remains ad-hoc `-` for community builds.

[Unreleased]: https://github.com/hardbeat920/monocode/compare/v0.1.45...HEAD
[Unreleased]: https://github.com/hardbeat920/monocode/compare/v0.1.46...HEAD
[0.1.46]: https://github.com/hardbeat920/monocode/compare/v0.1.45...v0.1.46
[0.1.45]: https://github.com/hardbeat920/monocode/compare/v0.1.44...v0.1.45
[0.1.44]: https://github.com/hardbeat920/monocode/compare/v0.1.43...v0.1.44
[0.1.43]: https://github.com/hardbeat920/monocode/compare/v0.1.42...v0.1.43
Expand Down
4 changes: 3 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ members = ["src-tauri"]
exclude = ["vendor/portable-pty"]

[workspace.package]
version = "0.1.45"
version = "0.1.46"
edition = "2021"
license = "MIT"

Expand Down
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,16 @@ Small, focused pull requests are welcome. Anything large is worth an issue first

## Build from source

For the macOS fork, run `npm ci` followed by `npm run build:fork`. The app and
DMG are written under `target/release/bundle/`. This uses the existing
**MonoCode Fork** identity (`com.monocode.fork.worktrees`) and its session data,
with upstream automatic updates disabled.

When building from a session inside MonoCode Fork, leave the running app in
place. Quit it before replacing `~/Applications/MonoCode Fork.app` with the
new bundle, then reopen it. Build in this checkout's own `target` directory so
other running development builds are unaffected.

Supports macOS, Linux, and Windows.

Need Node.js 20+ and a current stable Rust toolchain. On Linux, ensure standard Tauri prerequisites are installed (e.g. `libwebkit2gtk-4.1-dev`, `libgtk-3-dev`, `libsoup-3.0-dev`, `libjavascriptcoregtk-4.1-dev`). On Windows, the installer bootstraps the [WebView2](https://developer.microsoft.com/microsoft-edge/webview2/) runtime when it is missing.
Expand Down
10 changes: 9 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
var root = document.documentElement;
var hue = localStorage.getItem("monocode.themeHue");
var sat = localStorage.getItem("monocode.themeSaturation");
var darkLightness = localStorage.getItem(
"monocode.themeDarkLightness",
);
var opacity = localStorage.getItem("monocode.sidebarOpacity");
if (hue != null) {
var h = Math.max(0, Math.min(360, Number(hue) || 0));
Expand All @@ -20,6 +23,10 @@
var s = Math.max(0, Math.min(100, Number(sat) || 0));
root.style.setProperty("--theme-saturation", s + "%");
}
if (darkLightness != null) {
var l = Math.max(0, Math.min(30, Number(darkLightness) || 0));
root.style.setProperty("--theme-dark-lightness", l + "%");
}
if (opacity != null) {
var o = Math.max(0.15, Math.min(1, Number(opacity) || 0.85));
root.style.setProperty("--sidebar-opacity", String(o));
Expand Down Expand Up @@ -50,8 +57,9 @@
:root {
--theme-hue: 240;
--theme-saturation: 0%;
--theme-dark-lightness: 9%;
--sidebar-opacity: 0.85;
--background-lightness: 9%;
--background-lightness: var(--theme-dark-lightness);
--color-background-base: hsl(
var(--theme-hue) var(--theme-saturation) var(--background-lightness)
);
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{
"name": "monocode-desktop",
"private": true,
"version": "0.1.45",
"version": "0.1.46",
"type": "module",
"scripts": {
"dev": "vite",
"dev:worktrees": "vite --host 127.0.0.1 --port 1422",
"dev:stable": "vite --mode stable",
"build": "tsc && vite build",
"build:fork": "tauri build --bundles app,dmg --config src-tauri/tauri.fork.conf.json",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest",
Expand Down
2 changes: 2 additions & 0 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@ tauri = { version = "2", features = ["protocol-asset", "macos-private-api"] }
tauri-plugin-opener = "2"
serde.workspace = true
serde_json.workspace = true
uuid = { version = "1", features = ["v4"] }
base64 = "0.22"
sha2 = "0.10.9"
tauri-plugin-dialog = "2"
rusqlite = { version = "0.40.2", features = ["bundled"], default-features = false }
ureq = { version = "2.12.1", default-features = false, features = ["tls", "gzip"] }
url = "2.5"
tauri-plugin-process = "2"

[target.'cfg(unix)'.dependencies]
Expand Down
Loading
Loading