Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
2b39815
Fix native clipboard editing in fields and plugin pages
BIackFIame Oct 5, 2026
22620f3
Preserve edit chords in shortcut recorders
BIackFIame Oct 5, 2026
4480245
Coordinate subagents with task graphs, reviews, budgets and retry
BIackFIame Oct 5, 2026
b30bc3a
Align launcher and tool regressions with the orchestration slice
BIackFIame Oct 5, 2026
46f95ac
Make signal-exit readiness checks portable across POSIX hosts
BIackFIame Oct 5, 2026
ad851ca
Confirm prompt delivery after CLI readiness and bound agent waits
BIackFIame Oct 5, 2026
7d12e88
Recognize the first OpenCode prompt before its conversation exists
BIackFIame Oct 5, 2026
ceed3bc
Return OpenCode agent waits before its sixty-second MCP deadline
BIackFIame Oct 5, 2026
5c0f3ba
Avoid rescanning unchanged prompt acknowledgement output
BIackFIame Oct 5, 2026
72accd2
Return pending reviews without blocking result requests
BIackFIame Oct 5, 2026
31dd501
Isolate subagent work and review changes with rollback points
BIackFIame Oct 5, 2026
98e65cd
Expose session history, reports, usage and attention signals
BIackFIame Oct 5, 2026
2b98821
Accept the action set required by worktree review
BIackFIame Oct 5, 2026
21d5c99
Align lifecycle and redaction tests with observability
BIackFIame Oct 5, 2026
f9298fe
Constrain network access and approve temporary secret requests
BIackFIame Oct 5, 2026
83102ba
Cover temporary secret tools in delegation invariants
BIackFIame Oct 5, 2026
ea3a6ad
Gate experimental routing, handoff and remote controls
BIackFIame Oct 5, 2026
f6ba991
Route inherited accounts among delegable models without duplicate mod…
BIackFIame Oct 5, 2026
d281696
Keep human question deadlines independent of agent wait limits
BIackFIame Oct 5, 2026
f56b255
Verify deferred reviews through repeated bounded waits
BIackFIame Oct 5, 2026
9eb1109
Isolate synthetic HTTPS certificate extensions from host OpenSSL defa…
BIackFIame Oct 5, 2026
e2c0b76
Reuse project context and organize workspace sessions
BIackFIame Oct 5, 2026
a5ce2c2
Apply task execution goals to routing, worker limits and reviews
BIackFIame Oct 6, 2026
f843405
Keep strategy launches usable in small windows and avoid redundant wr…
BIackFIame Oct 6, 2026
90aebcf
Preserve root privacy and revoke strategy-only reviews on opt-out
BIackFIame Oct 6, 2026
c3c4751
Show actionable questions for newly discovered models (U2)
BIackFIame Oct 6, 2026
60a7e81
fix: preserve trusted task context and route to ready accounts
BIackFIame Oct 6, 2026
75d6520
fix: report applied isolation to action reviewers
BIackFIame Oct 6, 2026
11f09af
fix: enforce approved execution targets and preserve task privacy
BIackFIame Oct 6, 2026
65b7bf5
test: scope Seatbelt evidence fixture to POSIX paths
BIackFIame Oct 6, 2026
b691ed7
fix: preserve edit menus in plugin windows and whitespace selections
BIackFIame Oct 7, 2026
a884b2b
Merge remote-tracking branch 'fork/fix/macos-field-clipboard' into ba…
BIackFIame Oct 7, 2026
a94be6b
fix: supply workflow tasks and attribute worker reviews
BIackFIame Oct 7, 2026
bc72abd
Merge upstream main into orchestration review branch
BIackFIame Oct 7, 2026
b09cfca
test: cover workflow task and endpoint launch guards
BIackFIame Oct 7, 2026
b8d9edb
fix: invalidate reviews when worker input changes
BIackFIame Oct 7, 2026
44d4519
test: wait for clicked document navigation
BIackFIame Oct 7, 2026
d93a42e
fix: preserve review ownership across input delivery
BIackFIame Oct 7, 2026
3f67c37
fix: bind review invalidation to all terminal input
BIackFIame Oct 7, 2026
c486cd9
fix: correlate worker answers with submitted turns
BIackFIame Oct 7, 2026
fd39534
test: verify disabled lifecycle status behavior
BIackFIame Oct 7, 2026
de0b5a9
fix: complete reviewer result transport independently of status UI
BIackFIame Oct 7, 2026
5fabc32
Serialize launch cleanup before removing session directories
BIackFIame Oct 7, 2026
d3a6cff
Drain pending launches before deleting owned run directories
BIackFIame Oct 8, 2026
e35a552
Merge reviewed orchestration fixes into worktree integration
BIackFIame Oct 8, 2026
321df1f
Fix provider-aware worktree routing and pre-turn checkpoint ordering
BIackFIame Oct 8, 2026
d1fdef1
Preserve turn checkpoints and restore review tracking on worktree retry
BIackFIame Oct 8, 2026
69ff25b
Serialize checkpoint restoration and retain failed turn snapshots
BIackFIame Oct 8, 2026
dbb7414
Refuse checkpoint restoration across isolated environment boundaries
BIackFIame Oct 8, 2026
e312192
Persist restore isolation evidence and handle large reviews
BIackFIame Oct 8, 2026
b94ac81
Test conservative isolation migration for saved environments
BIackFIame Oct 8, 2026
189be67
Restore tracked additions before replacing checkpoint index
BIackFIame Oct 8, 2026
8d496bb
Refuse checkpoint restores with uncaptured submodule state
BIackFIame Oct 8, 2026
3f25388
Merge verified worktree fixes and correct observability state
BIackFIame Oct 8, 2026
ea765f9
Deduplicate shared usage and clear answered glasses notices
BIackFIame Oct 8, 2026
69dad37
Keep companion attention tied to actionable conditions
BIackFIame Oct 8, 2026
1da0f6e
Restrict activity telemetry and correlate OpenCode tool outcomes
BIackFIame Oct 8, 2026
7eb562b
Report Kimi and Hermes core tool outcomes
BIackFIame Oct 8, 2026
5899829
fix(ci): preserve generated hook command quoting on Windows
BIackFIame Oct 8, 2026
3ecc36a
Merge reviewed observability fixes into protection
BIackFIame Oct 8, 2026
e62f856
Bind turn secret grants to observed launches and honor subdomain rules
BIackFIame Oct 8, 2026
3aa14ce
Keep secret approval requests available after turn completion
BIackFIame Oct 8, 2026
977b313
Enforce secret grant deadlines and isolate task approval state
BIackFIame Oct 8, 2026
54a703b
Cancel secret API workers with orchestration requests
BIackFIame Oct 8, 2026
4414da8
Bound proxy connection attempts and preserve UTF-8 response limits
BIackFIame Oct 8, 2026
d5e1b36
Preserve masked response boundaries and compact worker test fixtures
BIackFIame Oct 8, 2026
ab13292
Merge verified protection fixes into workspace improvements
BIackFIame Oct 8, 2026
84f4b17
Preserve portable workspace data and selected user actions
BIackFIame Oct 8, 2026
0df5f9c
fix: align workspace fixtures with integrated session contracts
BIackFIame Oct 8, 2026
e01c02a
fix: validate workspace imports and apply restored canvas state
BIackFIame Oct 8, 2026
6ced4b0
fix: preserve canvas boot prop ordering
BIackFIame Oct 8, 2026
957a11e
fix: prevent duplicate imports and retain overlapping terminal input
BIackFIame Oct 8, 2026
da8a0ca
Protect portable workspace data and preflight bypass imports
BIackFIame Oct 8, 2026
9ffb641
Preserve negotiated clipboard paste during terminal loading
BIackFIame Oct 8, 2026
3633848
Export live workspace cards and align context delivery limits
BIackFIame Oct 8, 2026
c37b63f
Merge verified workspace fixes into experimental backlog
BIackFIame Oct 8, 2026
38e6ad2
Fix experimental environment, handoff and companion boundaries
BIackFIame Oct 8, 2026
6473dd8
test: verify attention metadata across encrypted phone transport
BIackFIame Oct 8, 2026
15d49e8
Fix strategy review capture and transactional worktree handoff
BIackFIame Oct 8, 2026
e8316ad
Fix retry capacity by replacing the launch in its existing card
BIackFIame Oct 8, 2026
e584c5a
Test fresh retry processes while retaining their card identity
BIackFIame Oct 8, 2026
d926c52
Merge retry replacement fixes while preserving worktree safeguards
BIackFIame Oct 8, 2026
7e1adea
Merge retry fixes and clear stale loop warnings after replacement
BIackFIame Oct 8, 2026
245f13d
Merge verified retry replacement into protection backlog
BIackFIame Oct 8, 2026
3b151b2
Merge verified retry replacement into workspace backlog
BIackFIame Oct 8, 2026
49749b1
Merge verified retry replacement into experimental backlog
BIackFIame Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

[English](CHANGELOG.md) · [Русский](CHANGELOG.ru.md) · [简体中文](CHANGELOG.zh-CN.md)

## Unreleased

Agent teams, task budgets and per-card history. The accounts, assistant, context and environments plugins ship their parts separately.

- **Flows.** Four built-in orchestration flows (split and synthesize, executor and reviewer, three options and a judge, find and verify bugs) and project flows in `.canvastty/flows/*.yaml`. A project flow is used only after the person approves its current instructions. The launcher offers flows and can save a running task tree as one.
- **Task trees on the canvas.** Parent and subagent cards are linked, the orchestrator card summarizes its subagents, **Gather task** brings them together, and the canvas can be arranged by tree, status, project or grid, with undo.
- **Task board.** `list_tasks`, `claim_task` (atomic, dependencies first), `update_task` and `complete_task` for agents; the person adds, assigns and closes tasks in the card's details.
- **Review, worktrees and retry.** `spawn_agent` takes `review: true` (a separate reviewer in Plan whose verdict is added to the result) and `isolate: "worktree"`. `retry_agent` restarts a failed or quiet subagent with its original request and a masked failure tail, at most twice.
- **Budgets.** Time, token and cost limits per task tree with a warning at 80 %. At the limit the tree gets no new input or subagents and its processes are paused until the person changes the limit. Usage a CLI does not report is shown as no data.
- **Model routing.** A trusted plugin with `model:route` can choose the model and effort of a subagent started without an explicit model, only among those `list_providers` lists; the card shows the choice and its reason.
- **Card details.** A masked timeline of hook events with filters and a Markdown report; usage by model, account and task with periods, CSV export and manual prices; git checkpoints before each turn with a diff preview and confirmed restore; notifications on macOS, the phone and the glasses with a quiet mode.
- **Secrets on request.** `request_secret` asks the person for one configured provider key for 10 minutes, one turn or the session; `run_secret_request` then sends typed HTTPS API requests with it, so the key itself never reaches the agent. Grants can be revoked.
- **Network policy.** Per project: open, allowed domains or offline, applied when an agent starts. macOS uses its sandbox profile; Linux uses bubblewrap with a local proxy and, for strict modes, Landlock (ABI 9 or newer). A host that cannot enforce a strict mode refuses the launch.
- **Workspace.** Command palette with output search, an explicit broadcast mode for typing into several agents, a preview before dropped files, links or text reach an agent (paths outside the project need consent), and versioned workspace snapshots and presets without secrets; importing a Bypass card needs confirmation.
- **Questions.** `ask_user` shows an agent's bounded question; eligible questions also reach the paired phone.
- **Faster first frame.** Terminal code loads right after the first frame. Keys typed meanwhile reach the shell in order, and a failed load affects only terminal cards, which offer **Retry**.

What automated checks do not cover is listed in [verification](docs/post-1.7-verification.md#not-covered-by-automated-checks).

## 1.7.1

- Added built-in stable-release updates with explicit download and installation, active-session shutdown confirmation, and signed Sparkle updates on macOS. Install this first updater-enabled release manually; later compatible releases can be installed from the app.
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

[English](CHANGELOG.md) · [Русский](CHANGELOG.ru.md) · [简体中文](CHANGELOG.zh-CN.md)

## Не выпущено

Команды агентов, бюджеты задач и история каждой карточки. Плагины accounts, assistant, context и environments выпускают свои части отдельно.

- **Сценарии.** Четыре встроенных сценария оркестрации (разбить и собрать, исполнитель и ревьюер, три варианта и судья, найти и подтвердить ошибки) и проектные сценарии в `.canvastty/flows/*.yaml`. Проектный сценарий используется только после того, как человек одобрит его текущие инструкции. Лаунчер предлагает сценарии и может сохранить работающее дерево задачи как сценарий.
- **Дерево задачи на холсте.** Карточки оркестратора и подагентов связаны, карточка оркестратора показывает сводку, **Собрать задачу** сводит их вместе, холст раскладывается по дереву, статусу, проекту или сеткой, с отменой.
- **Доска задач.** `list_tasks`, `claim_task` (атомарно, сначала зависимости), `update_task` и `complete_task` для агентов; человек добавляет, назначает и закрывает задачи в подробностях карточки.
- **Ревью, worktree и повтор.** `spawn_agent` принимает `review: true` (отдельный ревьюер в режиме Plan, его вердикт добавляется к результату) и `isolate: "worktree"`. `retry_agent` перезапускает упавшего или замолчавшего подагента с исходным запросом и маскированным хвостом ошибки, не больше двух раз.
- **Бюджеты.** Лимиты времени, токенов и денег на дерево задачи с предупреждением на 80 %. При достижении лимита дерево не получает новый ввод и подагентов, его процессы приостанавливаются, пока человек не изменит лимит. Расход, о котором CLI не сообщает, показывается как отсутствие данных.
- **Выбор модели.** Доверенный плагин с `model:route` может выбрать модель и усилие подагента, запущенного без явной модели, только из списка `list_providers`; карточка показывает выбор и причину.
- **Подробности карточки.** Маскированный журнал событий хуков с фильтрами и отчётом в Markdown; расход по модели, аккаунту и задаче с периодами, выгрузкой CSV и ручными ценами; git-точки перед каждым ходом с просмотром диффа и подтверждённым откатом; уведомления в macOS, на телефоне и в очках с режимом тишины.
- **Секреты по запросу.** `request_secret` просит у человека один настроенный ключ провайдера на 10 минут, один ход или сессию; `run_secret_request` отправляет с ним типизированные HTTPS-запросы к API, сам ключ агенту не передаётся. Разрешения можно отозвать.
- **Сетевая политика.** Для проекта: открыта, только разрешённые домены или без сети; применяется при запуске агента. На macOS — профиль песочницы, на Linux — bubblewrap с локальным прокси и, для строгих режимов, Landlock (ABI 9 и новее). Если система не может обеспечить строгий режим, запуск отклоняется.
- **Рабочее пространство.** Палитра команд с поиском по выводу, явный режим группового ввода в нескольких агентов, предпросмотр перед передачей файлов, ссылок или текста агенту (пути вне проекта требуют согласия), версионированные снимки и пресеты рабочего пространства без секретов; импорт карточки в режиме Bypass требует подтверждения.
- **Вопросы.** `ask_user` показывает ограниченный вопрос агента; подходящие вопросы приходят и на сопряжённый телефон.
- **Быстрее первый кадр.** Код терминала загружается сразу после первого кадра. Набранное в это время доходит до оболочки по порядку, а ошибка загрузки затрагивает только карточки терминалов, в которых есть **Повторить**.

Что не покрыто автоматическими проверками, перечислено в [проверке](docs/post-1.7-verification.md#not-covered-by-automated-checks) (на английском).

## 1.7.1

- Добавлены обновления стабильных версий из приложения: загрузка и установка по запросу, подтверждение остановки активных сессий и подписанные обновления Sparkle на macOS. Первую версию с этой функцией нужно установить вручную; последующие совместимые версии можно устанавливать из приложения.
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

[English](CHANGELOG.md) · [Русский](CHANGELOG.ru.md) · [简体中文](CHANGELOG.zh-CN.md)

## 未发布

智能体团队、任务预算和每张卡片的历史。accounts、assistant、context 和 environments 插件分别发布各自的部分。

- **流程。** 四个内置编排流程(拆分并汇总、执行者与审查者、三个方案与评判、查找并验证缺陷),以及 `.canvastty/flows/*.yaml` 中的项目流程。项目流程只有在用户批准其当前指令后才会使用。启动器提供这些流程,也可以把正在运行的任务树保存为流程。
- **画布上的任务树。** 编排者与子智能体卡片相互关联,编排者卡片显示汇总,**Gather task** 把它们集中到一起;画布可按树、状态、项目或网格排列,并可撤销。
- **任务看板。** 智能体使用 `list_tasks`、`claim_task`(原子操作,先满足依赖)、`update_task` 和 `complete_task`;用户在卡片详情中添加、分配和关闭任务。
- **审查、worktree 与重试。** `spawn_agent` 支持 `review: true`(在 Plan 模式下的独立审查者,其结论附加到结果中)和 `isolate: "worktree"`。`retry_agent` 用原始请求和经过遮蔽的失败输出末尾重新启动失败或无响应的子智能体,最多两次。
- **预算。** 每个任务树的时间、token 和费用上限,达到 80% 时提醒。达到上限后,该任务树不再接收新输入或新子智能体,其进程会暂停,直到用户修改上限。CLI 未报告的用量显示为无数据。
- **模型路由。** 拥有 `model:route` 的受信任插件可以为未指定模型的子智能体选择模型和推理强度,但只能从 `list_providers` 列出的选项中选择;卡片会显示选择及原因。
- **卡片详情。** 带筛选的遮蔽钩子事件时间线和 Markdown 报告;按模型、账户和任务统计的用量,支持时间段、CSV 导出和手动价格;每轮之前的 git 检查点,可预览差异并经确认后恢复;macOS、手机和眼镜通知,支持免打扰。
- **按需使用密钥。** `request_secret` 请用户为一个已配置的提供方密钥授权 10 分钟、一轮或整个会话;随后 `run_secret_request` 用它发送类型化的 HTTPS API 请求,密钥本身不会交给智能体。授权可以撤销。
- **网络策略。** 按项目设置:开放、仅允许的域名或离线,在智能体启动时生效。macOS 使用沙箱配置文件;Linux 使用带本地代理的 bubblewrap,严格模式另用 Landlock(ABI 9 或更新)。无法执行严格模式的系统会拒绝启动。
- **工作区。** 带输出搜索的命令面板、向多个智能体同时输入的显式广播模式、文件/链接/文本交给智能体前的预览(项目外路径需要同意),以及不含密钥的版本化工作区快照和预设;导入 Bypass 卡片需要确认。
- **提问。** `ask_user` 显示智能体的有界问题;符合条件的问题也会发送到已配对的手机。
- **更快的首帧。** 终端代码在首帧之后立即加载。期间输入的按键按顺序到达 shell;加载失败只影响终端卡片,卡片上提供 **重试**。

自动检查未覆盖的内容列在[验证说明](docs/post-1.7-verification.md#not-covered-by-automated-checks)中(英文)。

## 1.7.1

- 新增应用内稳定版本更新:由用户下载和安装,停止活动会话前确认,macOS 使用 Sparkle 签名更新。首个支持更新的版本需要手动安装;后续兼容版本可在应用内安装。
Expand Down
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ Launch a shell or agent in a project directory, move and resize its live termina

Agents start in **Auto** by default: the CLI's own auto mode (Claude Code, Codex, Grok), CanvasTTY's per-run rules for OpenCode, or, for a CLI without one, its approval bypass only inside agent isolation. Manual, Accept edits, Plan and Bypass are offered only where the CLI has them; Bypass is acknowledged once per CLI and never handed to a subagent. Around every mode sit layers the person controls in Settings → Agents: base protection (hooks that refuse elevation, `curl | sh`, disk commands and writes outside the project before the tool call runs), delegation rules (a subagent never gets more than its orchestrator and stays in its project; 2 levels and 8 live subagents by default), and an OS isolation layer (macOS `sandbox-exec`, Linux bubblewrap; none on Windows yet, where subagents run in Manual). When an isolated session ends, CanvasTTY checks the repositories it touched for git settings that would run programs outside isolation and offers to neutralize them.

An **Orchestrator** session gets the `canvastty_agents` tools: `list_providers` (installed agents, sign-in state, models, efforts, profiles), `spawn_agent` with optional `model`, `effort` and `profile`, `wait_for_agent` (up to 600 s) and `get_agent_result`, which returns a Codex or OpenCode subagent's final reply as `answer` (up to 4,096 characters, masked). See [agent orchestration and isolation](docs/agent-orchestration.md) and [protection layers](docs/installing-and-security.md#agent-protection-layers).
An **Orchestrator** session gets the `canvastty_agents` tools: `list_providers` (installed agents, sign-in state, models, efforts, profiles), `spawn_agent` with optional `model`, `effort` and `profile`, `wait_for_agent` (up to 100 s per call, capped at 50 s for OpenCode) and `get_agent_result`, which returns a Codex or OpenCode subagent's final reply as `answer` (up to 4,096 characters, masked). See [agent orchestration and isolation](docs/agent-orchestration.md) and [protection layers](docs/installing-and-security.md#agent-protection-layers).

Beyond single subagents, an orchestrator can follow a built-in or person-approved project flow, share a task board with its subagents (`list_tasks`, `claim_task`, `update_task`, `complete_task`), ask for a reviewer or a separate git worktree, retry a failed subagent (`retry_agent`), ask the person a question (`ask_user`) and, with the person's approval, use a provider key for typed API requests without seeing it (`request_secret`). The person sets time, token and cost budgets per task tree and a network policy per project; each card's details hold its timeline, usage, report and git checkpoints.

## Windows shells and provider CLIs

Expand Down
2 changes: 2 additions & 0 deletions README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ https://github.com/user-attachments/assets/444612f7-cda1-4fd6-8514-2f4fac9cc520

Сессия с ролью **Оркестратор** получает инструменты `canvastty_agents`: `list_providers` (установленные агенты, состояние входа, модели, effort, профили), `spawn_agent` с необязательными `model`, `effort` и `profile`, `wait_for_agent` (до 600 с) и `get_agent_result`, который возвращает финальный ответ субагента Codex или OpenCode в `answer` (до 4 096 символов, с маскировкой). Подробнее: [оркестрация и изоляция агентов](docs/agent-orchestration.md) (англ.) и [слои защиты](docs/installing-and-security.ru.md#слои-защиты-агентов).

Кроме отдельных подагентов, оркестратор может следовать встроенному или одобренному человеком проектному сценарию, вести общую доску задач с подагентами (`list_tasks`, `claim_task`, `update_task`, `complete_task`), запросить ревьюера или отдельный git worktree, повторить упавшего подагента (`retry_agent`), задать человеку вопрос (`ask_user`) и с одобрения человека использовать ключ провайдера для типизированных запросов к API, не видя его (`request_secret`). Человек задаёт бюджеты времени, токенов и денег на дерево задачи и сетевую политику проекта; в подробностях каждой карточки есть журнал, расход, отчёт и git-точки.

## Терминалы и CLI-провайдеры в Windows

В Windows кнопка Terminal запускает встроенный Windows PowerShell в чистой сессии `-NoLogo -NoProfile`, а при его недоступности использует `pwsh` или `cmd.exe`. Перед передачей в `node-pty`/ConPTY CanvasTTY находит для Codex, Claude, Kimi, OpenCode, Hermes и Grok Build конкретный файл `.exe`, `.com`, `.cmd` или `.bat`: сначала в пользовательском `PATH`, затем в стандартных каталогах CLI.
Expand Down
Loading
Loading