<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu/makima/src/daemon/ws, branch makima/auto-merge-local</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Fauto-merge-local</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Fauto-merge-local'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-01-30T03:28:40+00:00</updated>
<entry>
<title>Add auto_merge_local option for local-only contracts</title>
<updated>2026-01-30T03:28:40+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-30T03:28:40+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=4c09aa13a50064a4145ef53021490d303e46bc5e'/>
<id>urn:sha1:4c09aa13a50064a4145ef53021490d303e46bc5e</id>
<content type='text'>
When local_only=true on a contract, all completion actions are skipped.
This adds a new option auto_merge_local that, when enabled along with
local_only, will automatically merge completed task changes to the
master/main branch locally (without pushing or creating PRs).

Changes:
- Add auto_merge_local column to contracts table (migration)
- Add auto_merge_local field to Contract model and summary
- Update CreateContractRequest and UpdateContractRequest structs
- Update contract repository create/update functions
- Add auto_merge_local to WebSocket protocol StartTask command
- Pass auto_merge_local through spawn_task and run_task functions
- Modify task manager completion logic: if local_only=true AND
  auto_merge_local=true, execute 'merge' completion action locally
- Update all server handlers to retrieve and pass auto_merge_local
- Add TypeScript types to frontend components

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add autodetection of master for PR creation</title>
<updated>2026-01-29T17:23:03+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-29T16:43:07+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=4f1d67797dd56046665b772702b6b38fda9aa039'/>
<id>urn:sha1:4f1d67797dd56046665b772702b6b38fda9aa039</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix makima supervisor pr CLI command</title>
<updated>2026-01-29T01:14:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-29T01:14:17+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=f6a40e2304585f140ed5766b25fe71a6958f4425'/>
<id>urn:sha1:f6a40e2304585f140ed5766b25fe71a6958f4425</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add patch merging and fix task healthcheck failing due to worktrees</title>
<updated>2026-01-27T11:03:58+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-27T11:03:45+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=b6f239c19f0d3130515f3745f842e17a69212295'/>
<id>urn:sha1:b6f239c19f0d3130515f3745f842e17a69212295</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Default to shared worktree and add worktree endpoint</title>
<updated>2026-01-27T01:25:40+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-27T01:25:29+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=b0d0b4848b2fc8a44c2575e09a08b34aaf6e1484'/>
<id>urn:sha1:b0d0b4848b2fc8a44c2575e09a08b34aaf6e1484</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add local-only mode for contracts with patch export support (#34)</title>
<updated>2026-01-26T22:12:57+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T22:12:57+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=d1f5dadb549d499c5aeee9cacf6c9aa0a233c198'/>
<id>urn:sha1:d1f5dadb549d499c5aeee9cacf6c9aa0a233c198</id>
<content type='text'>
* Add local_only flag to contracts database and models

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

* Task completion checkpoint

* Skip automatic completion actions in local_only mode

Add `local_only` flag to contracts that prevents automatic completion
actions (branch, merge, pr) from executing when tasks complete. This
allows users to manually handle code changes via patch files or other
means when operating in local-only mode.

Changes:
- Add `local_only` field to Contract model and request types
- Add database migration for the new column
- Add `local_only` parameter to SpawnTask command in both state.rs and
  daemon protocol.rs
- Modify task manager to skip completion action execution when
  `local_only` is true, with appropriate logging
- Pass `local_only` flag through all task spawning paths:
  - mesh_supervisor.rs (task spawn, retry, resume)
  - mesh.rs (task start, reassign, continue)
  - mesh_chat.rs (run task)
  - contract_chat.rs (run task)
- Update repository create/update functions to handle `local_only`

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

* Task completion checkpoint

* Implement core patch export system

Add functionality to create uncompressed, human-readable git patches
for export. This enables users to generate patches that can be manually
applied or shared, without the compression used for internal checkpoints.

Changes:
- Add ExportPatchResult struct with patch content, file count, and line stats
- Add create_export_patch() function that generates diffs against a base SHA
- Add get_head_sha() utility function
- Add parse_diff_stat() helper to extract line counts from git output
- Add CreateExportPatch command to daemon protocol
- Add ExportPatchCreated response message to protocol
- Add handler in task manager to process export patch requests
- Add server-side handling to broadcast patch results to UI

The export patch system automatically finds the merge-base when no base
SHA is provided, trying upstream tracking branch first, then common
default branches (origin/main, origin/master, main, master).

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;

* Task completion checkpoint

* Add GitActionsPanel frontend component

* Add WorktreeFilesPanel and PatchesListPanel components

* Add local-only mode toggle to contract creation

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Add resume to daemon tasks</title>
<updated>2026-01-23T23:52:35+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-23T23:52:35+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=579c983d3efb8f1414ffb45b9e031f741cce5f76'/>
<id>urn:sha1:579c983d3efb8f1414ffb45b9e031f741cce5f76</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add patch checkpointing</title>
<updated>2026-01-23T01:03:04+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T22:32:46+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=1ed362424dafec690f919154f5116471951cda9c'/>
<id>urn:sha1:1ed362424dafec690f919154f5116471951cda9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add daemon restart feature from settings (#18)</title>
<updated>2026-01-22T01:26:53+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T01:26:53+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=b61a907bac09a7649ca3f6d850e771b3b75c7015'/>
<id>urn:sha1:b61a907bac09a7649ca3f6d850e771b3b75c7015</id>
<content type='text'>
* Add daemon restart feature from settings

This adds the ability to restart a connected daemon from the settings page.
The feature includes:

- Backend: RestartDaemon command added to DaemonCommand enum
- Backend: New POST /api/v1/mesh/daemons/{id}/restart endpoint
- Backend: Daemon gracefully shuts down tasks and exits with code 42
  (can be used by process managers like systemd to detect restart requests)
- Frontend: restartDaemon() API function
- Frontend: Restart button in Connected Daemons section of settings
- Frontend: Confirmation dialog before restart to prevent accidental restarts

When a daemon receives the restart command, it:
1. Gracefully shuts down all running Claude processes (5s timeout)
2. Exits with code 42 to signal restart requested
3. The daemon can be restarted by a process manager or manually

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Make sure tasks can continue</title>
<updated>2026-01-19T02:26:09+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-19T02:26:09+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=786510379bed060db2b3742b7dfca671552d2c34'/>
<id>urn:sha1:786510379bed060db2b3742b7dfca671552d2c34</id>
<content type='text'>
</content>
</entry>
</feed>
