Repository navigation
Releases
iCode v0.9.0
Changed
- The workbench now uses one persistent sidebar for projects, direct sessions
and the cross-project task queue. Pinned projects, sessions and tasks are
shortcuts and no longer hide the project tree. - Direct sessions are organized as tabs with browser-style context menus and
drag reordering, a resizable split view, and a persistent Changes/Files
inspector. Focus mode leaves only the terminal. - Mira, Settings and Schedules open as auxiliary tabs; task work opens as its
own main surface rather than a page or app tab. - The session status strip keeps branch, ahead/behind and blame context beside
the terminal, while host, task slots and live counts stay in the sidebar
footer.
Removed
- Removed the primary activity rail, global top bar, project wall and global
status bar.
Fixed
- The session inspector gets more room at common window sizes, and split-pane
headers keep the session title readable.
iCode v0.8.2
Fixed
- The Windows installer now recognizes a partial install by its Chromium
resource files (chrome_100_percent.pakandchrome_200_percent.pak), so a
cancelled first install whose executable is already gone is still cleaned
up. This is the residue an interrupted install leaves when it stops after
unpacking the framework assets.
iCode v0.8.1
Fixed
- The Windows installer now removes files left in the default per-user install
directory by an interrupted install or by a previous install at another
location; the uninstaller cleans the same orphaned directory. Only a
directory that still carries iCode's own files is touched. - Claude activity hooks no longer wait indefinitely when the ingress accepts
a connection and then stalls; the hook exits after at most one second. - Zero-byte connections to the activity ingress and the supervisor control
plane are ignored instead of logged as errors. Windows named pipes are
world-open, so security software and stray probes can open one and close it
without sending a request; the shipped clients never do. - Documented the
ELECTRON_RUN_AS_NODEstartup trap and the WAL caveat when
checkinguser_versionwith an external tool.
iCode v0.8.0
Added
- New sessions and tasks can start from a chosen local branch and use an
optional branch name. Session creation resolves the exact branch tip, and a
duplicate or invalid name is refused before a worktree exists. - Sessions and tasks can now Merge… into a target branch chosen at finish
time. The session branch is updated from the target first, conflicts are
resolved in the existing merge editor, and the target is fast-forwarded with
a compare-and-swap. Merge records are durable, survive a restart, and expose
Continue/Abort; accepting a task still does not merge it by itself. - Dependency chains now share one chain branch. Each task keeps its own
short-lived worktree, but a dependent starts only after every blocker has
been merged into the chain branch; fan-in works when the blockers share the
chain, and legacy chains retain their pre-merge behavior. SQLite migration
v16 adds the chain fields andmerge_records. - Push… sends the session branch to an explicitly chosen remote and branch,
setting upstream without merging. Push never satisfies a task dependency;
only a local merge into the chain branch does. - Repository settings (project menu → Repository settings…) lists the
remotes Git stores for a checkout, recognizes GitHub and GitLab URLs, redacts
embedded credentials, and offers Fetch, Edit, and Remove. Push to… now
offers Add remote… and Manage remotes… when a repository has no
remote. Git remains the source of truth; no remote is stored in SQLite. - Add project can Clone from URL into a local or WSL target with
streamed progress and cancellation. An interrupted or failed clone removes
only the destination it created, a distinct fetch/push URL is shown
read-only, and an empty remote continues through the existing unborn-repository
setup so the first commit is still an explicit step. - Clone, fetch, push, and pull authentication failures name the environment to
fix (the system Git credential helper/SSH agent, or the selected WSL distro),
and credential-bearing URLs are redacted from every Git error detail. - Instant project removal. Removing a project unregisters it immediately
and runs the remaining cleanup as a durable background job. The job stops
sessions, aborts active merges, saves uncommitted worktree changes to
recovery refs, removes iCode-created worktrees, retains branches, and deletes
the project's tasks, schedules, supervisor bindings, and assistant audit
rows. A status-bar cleanup indicator shows progress, retries failures, and
offers Discard snapshots; the primary checkout and remote repository are
never touched.
Changed
- Merge and Push now live in Source Control. A contextual
Merge into<target>primary action and anchored Merge into branch…
/ Push to… pickers replace the session/task header buttons and their full-screen
modals. Push to… also absorbs the separate Push and Publish menu entries and
defaults to the configured upstream, or origin plus the local branch when
unpublished. Merge still requires a clean worktree.
Fixed
- Opening a project now follows its contents: when a project has both direct
sessions and tasks it opens Sessions, a task-only project opens Tasks, and a
project with neither opens Sessions instead of an empty Tasks view. - Terminal host startup failures, such as an unusable host directory, are
reported as an unreachable host rather than an internal session error, so
project cleanup waits and retries instead of failing. - Continuing or aborting a merge from the Source Control operation banner now
uses the merge service, so the target fast-forwards, the merge record lands
in the correct state, and dependent tasks unblock. - Stale conflicted merge records left by the old generic continue/abort path
are reconciled at boot and can be aborted without a restart.
iCode v0.7.0
Added
-
Mira now keeps a native harness conversation instead of replaying a
truncated transcript. Claude, Codex and OpenCode are resumed by the
harness's own session id; a changed harness or target starts a bridged
conversation with a visible boundary, New conversation starts a clean
one, and a failed resume falls back to reconstructed replay once. SQLite
migration v11 addsassistant_conversations; retired rows keep the reason
Mira started over. -
Mira's thread is now split into selectable conversation segments. The header
chooses the current or an earlier conversation, each segment pages 50
messages at a time with Load earlier messages, and New conversation
starts a new visible segment. Proactive notifications are hidden from the
transcript and stay in the notifications drawer, fed by a dedicated recent
notifications query. A resumed turn's## Since your last turndigest now
includes action results, failures and notifications, so write outcomes are
not lost. SQLite migration v12 adds segment ranges (start_seq/end_seq);
pre-v12 conversation rows are shown as one legacy segment. -
Failed or cancelled tasks can now be continued in their existing
session and worktree: the same harness conversation where the harness
supports resume, and the same uncommitted changes. Retry still starts a
fresh attempt in a new worktree. SQLite migration v13 records each attempt's
mode (freshorresume). -
Tasks can now depend on one or more other tasks. A dependent starts only
after every blocker reachescompleted, a blocker can hold its dependents
until its result is accepted, and the task detail shows blockers and
dependents with a read-only chain graph tab. Dependencies can be changed
while the dependent is queued and follow the newest attempt on retry or
continue. SQLite migration v14 addstask_dependencies, the
hold_dependentsgate and a per-project concurrency limit. An edge orders
starts; it does not transfer uncommitted work between worktrees. -
Full app-chrome localization for English, Simplified Chinese, Japanese,
Korean, Spanish, Brazilian Portuguese, German and French: renderer UI,
native menus, dialogs, folder pickers, OS notifications and user-facing
application errors. A Language card in Settings offers System or a pinned
language and applies changes without restarting. English is authoritative
and the fallback; the other catalogs are AI-assisted and marked for native
review insrc/shared/i18n/README.md. Terminal, harness, Git and model output
and user content are never translated. Persisted task, schedule and assistant
text keeps the language it was written in. -
Agent providers: configure an API provider per harness (Claude Code, Codex,
OpenCode) in Settings → Agent providers. iCode injects the endpoint, key,
and model into the launched session's environment instead of writing the
tool's global config, so plugins, hooks, and user settings stay untouched.
Includes curated presets, encrypted key storage via ElectronsafeStorage,
a real Test connection request, and a Settings preview of the exact
launch inputs. SQLite migration v14 addsprovidersand
harness_provider_selection; terminal-host protocol v2 adds per-session
environment so Codex and OpenCode receive credentials without exposing them
in argv or on disk.
Changed
- Task admission is now bounded per project: by default at most one task per
project runs at a time, in addition to the global limit. Raising the global
limit lets different projects run in parallel; raising Tasks per project
in Settings also lets one project run several. The lower of the two limits
applies. - The installer, executable and desktop icons now use the transparent green
brand mark from the README instead of the retired black tile. - Codex runs for Mira no longer use
--ephemeralwhen resume is available, so
the harness persists a resumable thread. Mira conversations now live in each
harness's default state directory (~/.claude,~/.codex, OpenCode's data
directory). - iCode Workbench is now licensed under the GNU Affero General Public License
v3.0 only (AGPL-3.0-only). A modified version made available to users over a
network must offer them the corresponding source under section 13. - Starting a new session no longer blocks on the whole WSL pipeline. The New
Session dialog closes immediately and shows a pending surface while the main
process works; the create path now caches the guest home and Harness
discovery, batches the workspace/repository read and the worktree
create+verify into one guest script each, prewarms the WSL host/relay, and
reuses the create-time checkout proof on the first attach. On a warm WSL
repository this cuts session creation from roughly 34wsl.exespawns to
about 5; the first attach still verifies that the checkout exists.
Fixed
- A WSL shell session no longer reports its worktree as inconsistent after
reconciliation. The desktop host runswsl.exefrom a Windows pty directory
because a ConPTY cannot start in a Linux path; that cwd was being compared
with the guest worktree, which blocked the terminal. The cwd comparison is
now local-only, and guest checkouts keep the distro-side Git inspection. - Detect again in the New Session dialog now re-detects the selected
repository's execution target, including a WSL distro, instead of this
machine. - The Sessions workspace keeps its viewport height when the pending-session
surface is visible, so the Files tree virtualizes instead of mounting every
row.
Security
- Updated the transitive
dompurifydependency used by Monaco to 3.4.17,
fixing the advisory inherited throughmonaco-editor@0.57.0.