<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu/makima/frontend, branch makima/task-task-531bc953-531bc953</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-531bc953-531bc953</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Ftask-task-531bc953-531bc953'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-01-25T01:33:20+00:00</updated>
<entry>
<title>Task completion checkpoint</title>
<updated>2026-01-25T01:33:20+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T01:33:20+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=5b9bb41fed02f7702c90ed8ae01589e67e3c490a'/>
<id>urn:sha1:5b9bb41fed02f7702c90ed8ae01589e67e3c490a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: Add contract-scoped file route /contracts/:id/files/:fileId</title>
<updated>2026-01-25T01:32:39+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T01:32:39+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=9b47b7273bb2f0124fa08fece39057000b58cf98'/>
<id>urn:sha1:9b47b7273bb2f0124fa08fece39057000b58cf98</id>
<content type='text'>
- Create ContractFilePage component for viewing files within contract context
- Add route for /contracts/:id/files/:fileId in main.tsx
- Update handleFileSelect in contracts.tsx to navigate to contract-scoped file URL
- File viewer now has "Back to Contract" navigation instead of standalone /files

This allows files accessed from a contract to maintain context and return
to the contract page when going back.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix completion actions: default to PR and support remote repos (#21)</title>
<updated>2026-01-22T13:17:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T13:17:17+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=265f8cf14fec9d7116d09af49e4b48b357faceda'/>
<id>urn:sha1:265f8cf14fec9d7116d09af49e4b48b357faceda</id>
<content type='text'>
* Fix completion actions: default to PR and support remote repos

- Change default completion action from 'branch' to 'pr' for tasks
  using daemon working directory
- Allow PR completion action to work without target_repo_path if the
  worktree already has an origin remote configured (e.g., when cloned
  from a remote URL)
- Update create_pull_request to accept optional target_repo parameter

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

* Add dismiss functionality for completed standalone tasks

## Changes

### Backend
- Add 'hidden' field to Task model (models.rs)
- Add database migration for hidden column (20250122000000_add_task_hidden.sql)
- Update task listing queries to include hidden field and filter out hidden tasks
- Update update_task_for_owner to handle hidden field

### Frontend
- Add hidden field to TaskSummary interface (api.ts)
- Add dismissTask API function (api.ts)
- Add hideTask function to useTasks hook
- Add Dismiss button to TaskList for completed standalone tasks
- Wire up onDismiss handler in mesh.tsx route

## Behavior
- Completed standalone tasks (tasks without a contract) show a "Dismiss" button
- Dismissing a task sets hidden=true and removes it from the task list
- Hidden tasks are filtered out by default in all task listing queries

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>Fixup: fix frontend build</title>
<updated>2026-01-22T12:57:36+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T12:57:36+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=a363bfdd7a3e81b75bf230e45d001b80f759ca57'/>
<id>urn:sha1:a363bfdd7a3e81b75bf230e45d001b80f759ca57</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Hide subtasks</title>
<updated>2026-01-22T03:08:48+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T01:29:04+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=2d763ea63e133c083114151abc5b9c76bc6ab54e'/>
<id>urn:sha1:2d763ea63e133c083114151abc5b9c76bc6ab54e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix board drag-and-drop phase change not working (#20)</title>
<updated>2026-01-22T03:07:34+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T03:07:34+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=11876f12dc668ea1dc9a4f5455c2e2a47580c356'/>
<id>urn:sha1:11876f12dc668ea1dc9a4f5455c2e2a47580c356</id>
<content type='text'>
When phase_guard is enabled on a contract, the backend expects
{ phase, confirmed: true } to actually perform the phase change.
Without confirmed: true, the backend returns a PhaseTransitionRequest
instead of ContractSummary, causing the frontend to not update properly.

Add confirmed parameter to changeContractPhase() with default true
for backward compatibility and explicit user actions like drag-and-drop.

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</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>Add repository selection with suggestions to standalone tasks (#17)</title>
<updated>2026-01-22T00:46:06+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-22T00:46:06+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=0a30c9d3a9227660860abcd48ea1e9bd5cc2350c'/>
<id>urn:sha1:0a30c9d3a9227660860abcd48ea1e9bd5cc2350c</id>
<content type='text'>
* Add repository selection with suggestions to standalone task creation

Enhance the standalone task creation modal with repository selection:

- Add Remote/Local repository type selector buttons
- Show recent repository suggestions dropdown (fetched via API)
- Add repository URL input for remote repositories
- Add local path input with DirectoryInput for local repositories
- Auto-fill form fields when clicking a suggestion
- Wire up handleCreateTask to use standalone repo fields

This builds on PR #16's standalone task feature by adding the same
repository suggestion capabilities that exist in contract creation.

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

* Task completion checkpoint

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Heartbeat daemon</title>
<updated>2026-01-21T23:52:38+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-21T23:47:38+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=a6f91232285ad2db0ac58a7d0bc196e47da1ca8c'/>
<id>urn:sha1:a6f91232285ad2db0ac58a7d0bc196e47da1ca8c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add standalone task creation from mesh page (#16)</title>
<updated>2026-01-21T19:06:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-21T19:06:17+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=d7311e40c3326aaeea0918fe870f3cae7163ca15'/>
<id>urn:sha1:d7311e40c3326aaeea0918fe870f3cae7163ca15</id>
<content type='text'>
Allow creating anonymous tasks (tasks without a contract_id) directly
from the mesh page:

- Add 'Create Standalone Task' option in task creation modal step 1
- Update step 2 to handle null selectedContract for standalone tasks
- Show working directory input for standalone tasks
- Update TaskList to show standalone tasks (filter: !parentTaskId &amp;&amp; (isSupervisor || !contractId))
- Display 'Standalone Tasks' group header with lightning bolt icon
- Update empty state message to mention standalone tasks

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
</feed>
