<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu/makima/src/server/handlers, branch makima/task-task-e397cd28-e397cd28</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-e397cd28-e397cd28</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-e397cd28-e397cd28'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-01-26T22:12:57+00:00</updated>
<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>Make merges synchronous</title>
<updated>2026-01-26T21:24:04+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T21:24:04+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=bc1ce8013bc36a1585be05b928f2386ab56529c2'/>
<id>urn:sha1:bc1ce8013bc36a1585be05b928f2386ab56529c2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add completion phases</title>
<updated>2026-01-26T20:19:30+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T20:19:30+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=04e1e8f0dd85d19917ac5ba0b73cba65ebac8976'/>
<id>urn:sha1:04e1e8f0dd85d19917ac5ba0b73cba65ebac8976</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update supervisor tasks page when supervisor spawns a new task</title>
<updated>2026-01-26T15:21:10+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T15:21:10+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=1d83595f81fbfcc034c37c2260d695f094f5776e'/>
<id>urn:sha1:1d83595f81fbfcc034c37c2260d695f094f5776e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix branching to restore from checkpoint</title>
<updated>2026-01-26T14:26:06+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T14:26:06+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=d569985bbf8dbe07f05a76a198a6dd76ef3304e2'/>
<id>urn:sha1:d569985bbf8dbe07f05a76a198a6dd76ef3304e2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add automatic phase transitions and fix PR creation</title>
<updated>2026-01-25T04:39:37+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T04:39:37+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=cb4f2fc40dbabb40de948512eee74c7e46264665'/>
<id>urn:sha1:cb4f2fc40dbabb40de948512eee74c7e46264665</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update create contract page to use dynamic templates (#29)</title>
<updated>2026-01-25T03:53:55+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T03:53:55+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=c908854e7e3571c99cce9f46497ce5337ea0aed1'/>
<id>urn:sha1:c908854e7e3571c99cce9f46497ce5337ea0aed1</id>
<content type='text'>
* feat: Add contract type templates API endpoint

Add a new API endpoint to provide contract type templates (workflow
definitions) separate from file templates. This enables the create
contract page to dynamically show available contract types.

Changes:
- Add ContractTypeTemplate struct in templates.rs with id, name,
  description, phases, default_phase, and is_builtin fields
- Add built-in contract types: 'simple' (plan/execute) and
  'specification' (research/specify/plan/execute/review)
- Add GET /api/v1/contract-types endpoint returning all contract types
- Add frontend ContractTypeTemplate interface and listContractTypes()
  API function

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

* feat: Update create contract modal to use dynamic templates

- Add ContractTypeTemplate interface and listContractTypes API function
  to frontend api.ts
- Add GET /api/v1/contract-types backend endpoint that returns built-in
  contract types (simple, specification) with their phases and defaults
- Update create contract modal to fetch contract types dynamically when
  opened, with loading state and fallback to hardcoded types on error
- Dynamically render contract type selection buttons from fetched types
- Update phase dropdown to use phases from selected contract type
- Replace static getValidPhases/getDefaultPhase calls with dynamic data

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

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>feat: Simplify contract deliverables and add Templates UI</title>
<updated>2026-01-24T20:06:28+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T20:06:28+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=6364363d1418728351f252b799d397b756e1f985'/>
<id>urn:sha1:6364363d1418728351f252b799d397b756e1f985</id>
<content type='text'>
## Backend Changes

### Phase Deliverables Simplified
- **Simple contract type**:
  - Plan phase: Only 'Plan' deliverable (required)
  - Execute phase: Only 'PR' deliverable (required)

- **Specification contract type**:
  - Research phase: Only 'Research Notes' deliverable (required)
  - Specify phase: Only 'Requirements Document' deliverable (required)
  - Plan phase: Only 'Plan' deliverable (required)
  - Execute phase: Only 'PR' deliverable (required)
  - Review phase: Only 'Release Notes' deliverable (required)

### New 'execute' Contract Type
- Only has 'execute' phase (no plan or review phases)
- NO deliverables at all - executes tasks directly
- Added to ContractType enum with proper Display/FromStr implementations
- Added helper methods: `initial_phase()`, `terminal_phase()`

### API Updates
- Added `get_phase_deliverables_for_type()` for contract-type-aware deliverables
- Added `get_phase_checklist_for_type()` for contract-type-aware checklists
- Added `check_phase_completion_for_type()` for contract-type-aware completion checks
- Added `check_deliverables_met()` function for deliverable validation
- Added `should_auto_progress()` for autonomous contract progression
- Added new ContractToolRequest::CheckDeliverablesMet tool

## Frontend Changes (makima/frontend)

### Templates Page
- Add TemplateEditor component for editing phase deliverables
- Create Templates page with template card grid layout
- Add navigation link in NavStrip
- Implement three built-in templates: Simple, Specification, Execute
- Support for creating custom templates with configurable phases/deliverables
- Templates are persisted to localStorage

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Clean up questions after removing tasks or contracts</title>
<updated>2026-01-24T14:54:21+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-24T14:54:21+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=9b028d8085d308e43239972348ab117d473caf73'/>
<id>urn:sha1:9b028d8085d308e43239972348ab117d473caf73</id>
<content type='text'>
</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>
</feed>
