Repository navigation
Circle 1.9.1
Added
- Circle can work in your desktop terminal tabs. The
terminal_*tools also reach the shells you open as terminal tabs in the desktop application, listed aslocal:<id>beside the device consoles under their tab's name (terminal 1); background commands, services and closed shells are never listed. Reading a tab asks nothing. The first thing Circle types in a tab asks you, in every mode including auto, whatever a rule, anallowed_commandspattern or a hook allows; after that a line it runs there is approved as the sameexecutecommand would be, under the same rules, and plan mode refuses it before the tab sees it. A tab stays yours: typing in it while Circle uses it takes it over, ends Circle's read or wait at once and refuses its typing until you hand it back; stopping ends Circle's action without taking the tab; Circle never closes a tab, and closing one ends what Circle was doing in it. In the terminal drawer, the shell Circle works in has a blue dot and ring, or an orange one while Circle waits for your answer, with take over and stop at the end of the row, and give back once you hold it. The terminal interface has no terminal tabs. See Circle in your terminal tabs. - A desktop task that needs review can be sent back with a reason. The decision, with your reason and the attempt and patch you were shown, is recorded on that attempt, and the task runs again as a new attempt in a fresh worktree from the same commit. Its worker is told the reason after the task's own instruction and acceptance criteria, and so is the worker of every later attempt. The attempt sent back keeps its worktree and results; tasks waiting for it keep waiting. In the window, send back on the review card at the end of the task's own conversation does this.
- Circle ships with a skill of its own,
create-pr. Ask Circle to open a pull request, or load it with/skill create-pr: it checks the branch andgh auth statusfirst, and says to rungh auth loginwhen the GitHub CLI is missing or not logged in. It commits only the files that belong to the work, in the repository's own commit style, on a branch other than the default one, pushes it and opens a draft pull request, or updates the one already open. It never merges or force-pushes without asking, and ends with the pull request's number and URL. A skill of the same name in any skill folder replaces it./skillmarks it(Built-in)and the desktop's skills page marks it bundled. See Built-in skills. - An overview pinned beside the desktop conversation. One column of cards, 380 pixels wide, that only shows: the environment, the context (tokens, cost, cache and the instruction files, folded), what is in progress (the plan step, the subagents at work with what Circle sent each to do, the tasks), the files this session changed marked M, A or D, and the changes: the lines added and removed since the last commit, create pr or update pr (Circle does it with the built-in skill), and the repository's pull requests with their checks and a menu to open one, copy its link or copy the log of a failing run. A card with nothing in it is not drawn. A mode of the drawer opens beside it, and when the conversation would be squeezed the overview steps aside and comes back by itself when there is room.
- The browser and the terminal can leave the drawer for a window of their own. open in a window on either one's toolbar; its button in the top bar is underlined in blue and brings the window to the front, put back in the drawer closes it, and so does showing another conversation. The browser's page moves with its window and stays loaded.
- Screenshots Circle takes are small pictures in the conversation. A click opens one large, with copy image and save to file. A screenshot you take of the page from the browser's ⋮ menu goes into the message box as an attachment.
- The files mode lists every file, with changes marked. A changed name is coloured (orange changed, blue new) with its letter, a folder with a changed file under it carries a dot, and a deleted file is only in the changes mode. A file opens as itself beside the tree at 760 pixels, with a full view in its heading, and its editor marks beside the line numbers the lines that differ from the last commit: orange changed, blue new, a red triangle where lines were deleted.
Changed
- The desktop's right-hand side is a row of icons and a mode beside the overview. The top bar has the overview, then files, changes, browser, subagents and terminal; a mode has no title bar, and a click on its button or
esccloses it. The subagents button counts the subagents at work and the terminal button the background commands that run. The activity, tasks, devices, debug and context panels are gone; their work is in the overview and the modes. - The plan above the input box, the context ring and the lines for running subagents and background commands under it are gone. They moved to the overview and the top bar; above the box stays the count of requests waiting for you.
- Changes is one list. Files, each M, A or D with its lines, for this session or all uncommitted, with the difference of the one you choose and open file. The window no longer stages, commits or pushes; ask Circle for a pull request, or use the terminal.
- Subagents have a mode of their own. The list shows each with what Circle sent it to do; one opened widens the drawer, and what it asks to approve is a card in the main conversation with its name on it.
- The terminal is one row of tabs. Shells, commands Circle runs in the background and device consoles are tabs, each with a × (a background command that still runs has stop instead); + makes a shell, connects a saved device or a new one by address. A command that runs in the background has a tab with stop. The row's ⋮ menu has what the bar under the screen had.
- The browser shows its tab row only when there are several tabs. The ⋮ menu is new tab, zoom, find, take page screenshot, developer tools and close tab; take over is a button beside the address while Circle works, the ring is blue while Circle works and orange while an action waits for you, and the picture of the page is no longer shown under it.
- The desktop's light theme is white, and its text the system's own font. The conversation, the sidebar and the drawer share one white ground,
#FFFFFF, set apart by their borders, and the panels, borders and hover follow from it; the dark theme and the terminal's colours are unchanged. The window uses SF Pro on macOS and Segoe UI Variable on Windows 11 (Segoe UI before it), with PingFang or Microsoft YaHei for Chinese; an installed Inter no longer takes their place. - The desktop says less where it has nothing to add. The home and an empty conversation no longer carry a line under their question, the browser's empty page no longer repeats its address field, a file just opened does not say its changes are saved, and the settings page offers start queued tasks without a note repeating it. Interface words are lowercase, and English and Chinese use one word for one thing, as the design has them.
- A task that needs review is reviewed in its own conversation, not in a panel. The card shows what really ran and asks for each criterion and what you saw; send back takes a reason. Circle makes, starts and retries tasks; the sidebar and the overview show them.
Removed
- The desktop's tasks panel and its manual controls (new task, start, retry, cancel). Circle makes and runs tasks, and the card for a task that needs review is in its conversation. Operations an interrupted run left for you to settle, which that panel listed, are a card of the overview now.
- The developer extension is gone, with Node debugging and the desktop editor's TypeScript and JavaScript language service. The desktop application has no debug tab, no debug-file button and no breakpoints in the editor gutter, and its editor no longer offers go to definition, references, rename, formatting or code checks. The editor still opens files with syntax highlighting and saves with the version check. The desktop package no longer carries the js-debug adapter, TypeScript or a TypeScript language server. An
extensions.developerentry that an earlier version saved insettings.jsonis ignored and left there, and/extensions enable developersays there is no extension of that name. The agent'slsptool, Chromium's developer tools in the browser and the other extensions are unchanged. - Automatic delivery is gone from the desktop application. Circle no longer takes a request on its own from tasks to a draft pull request, follows its checks or schedules repairs; tasks themselves stay. The GitHub extension stays: with a connected account and an allowed repository, the model can still read the branch it would publish, publish it as a draft pull request, read its checks and failed logs and run failed jobs again. What earlier versions saved for automatic delivery stays in the data folder and is no longer read.
Fixed
- A program a Windows command started through another
cmdis ended. Withcmd /c start /b node …, the innercmdended at once and its program kept running out of reach oftaskkill: stopping the job, cancelling the command or leaving Circle left it running and its folder could not be removed. Circle now puts each command's shell in a Windows Job object and follows its whole tree, and stopping a job that is already marked done ends what its command left running instead of doing nothing. - Ctrl+K in a desktop terminal is the shell's on Windows and Linux. With the keyboard in the terminal panel or a device console, Ctrl+K opened search and also sent ^K to the shell; Ctrl+P and Ctrl+B opened quick open and hid the sidebar the same way. These keys now reach only the terminal, once. On macOS ⌘K, ⌘P and ⌘B still work from a terminal.
- A Chinese desktop window says the runtime's stop in Chinese. When the runtime exited while a command was under way, such as a
!shell command, the toast changed to the main process's EnglishCircle runtime exited (1), wrapped in Electron'sError invoking remote methodtext. The failed command now reads like the runtime notice,Circle 运行时已退出 (1) · 正在重启…, with the exit code. - Closing the browser on Windows no longer fails when taskkill finds nothing to stop. taskkill's exit 128 (process not found) for the browser or one of its child processes was taken as a failed close. Circle now stops the browser's own process handle and waits for it to exit, and reports a failure only when the browser is still running. A browser that taskkill has already begun to end gets the same wait, up to 20 seconds, since on a busy machine it can take several to go.
- A hub command in the desktop shows what it found.
/hub packs,/hub tasks,/hub skill listand the other hub commands ran but said nothing in the conversation, so it looked as if nothing had happened. Their results now show there, as every extension's do. Where you are signed in, from/hub,/hub loginand/hub logout, is a notice in passing and stays on the hub page. - The desktop quits when a signal reaches all of its processes at once.
pkill, or the end of a Linux session, stops the runtime just as the window asks it to close. Circle then showed Circle could not stop its runtime and stayed open; it now quits. - A desktop session whose deletion fails can be deleted again. When the cleanup before deleting a session failed, the session stayed on stopping work before deletion…, with delete session unavailable, until Circle restarted. It now says it could not be deleted and why, keeps its history, and delete session retries the cleanup.
- The desktop browser's ring no longer flashes when you send a message after a turn that used the browser. For a moment after sending, before the new turn began, the ring lit as if Circle were operating, with take over beside the address, because the last turn's browser tools were still the newest. The ring now waits for the turn to begin.
- A screenshot of a named Windows app is the whole window under display scaling. At 200% a window that is not DPI aware filled only the upper-left quarter of its picture and the rest was black. Circle now measures the window in its own DPI awareness, so the picture is the size the window draws itself at.
- Archiving a desktop session whose terminal tabs or tasks still run asks first. archive session and archive all sessions were offered while a session had a shell open in a terminal tab or a task running, and archiving was then refused. A dialog now says that archiving closes those terminal tabs and stops those tasks, and stop work and archive does that and archives. A turn, a question waiting for you or a background command still keeps a session from being archived, and then nothing is stopped.
- Saving a file in the desktop editor on Windows waits for a program that is reading it. When a virus scan or Git had the file open at the moment you saved, Windows refused to replace it and the editor said operation failed; inspect effects before retrying without saving. The save now waits up to two seconds for the file to be let go, checking each time that nothing else changed it.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/circle-platforms/circle/v1.9.1/install.sh | CIRCLE_VERSION=1.9.1 bashWindows, in PowerShell:
$env:CIRCLE_VERSION = '1.9.1'; irm https://raw.githubusercontent.com/circle-platforms/circle/v1.9.1/install.ps1 | iexAlready installed? Run circle update.
Desktop application
| System | File |
|---|---|
| macOS, Apple silicon | circle-desktop-1.9.1-darwin-arm64.dmg |
| macOS, Intel | circle-desktop-1.9.1-darwin-x64.dmg |
| Windows x64 | circle-desktop-1.9.1-windows-x64.msi |
| Linux x64 | circle-desktop-1.9.1-linux-x64.tar.gz |
It is not signed by Apple or Microsoft. On macOS, drag Circle to Applications; the first time, open System Settings → Privacy & Security and click Open Anyway. On Windows, open the .msi (if SmartScreen stops it, click More info, then Run anyway) and allow it to make changes: it installs Circle into C:\Program Files\Circle with a Start menu entry, and Settings → Apps → Installed apps removes it again. On Linux, quit Circle, delete the old Circle-linux-x64 folder, then unpack this archive (it always unpacks as that folder name, so unpacking beside an existing one collides, and unpacking onto the old files drops setuid). Then run sudo chown root:root Circle-linux-x64/chrome-sandbox && sudo chmod 4755 Circle-linux-x64/chrome-sandbox, or Circle will not start, and start Circle-linux-x64/Circle. The steps are in Installation. It keeps its own data folder, apart from ~/.circle. On macOS and Windows it updates itself: settings → about → check now, then update and restart to update. Versions up to 1.2.0 cannot: install this file over them once. Circle 1.6.0 and the published 1.7.4 need this manual Linux update once; after that, check now replaces a folder it can write, and stops before starting again until chrome-sandbox belongs to root. Otherwise it opens this page and shows those steps.