<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu, branch makima/standalone-task-contract-types</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=makima%2Fstandalone-task-contract-types</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=makima%2Fstandalone-task-contract-types'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-01-26T03:17:14+00:00</updated>
<entry>
<title>Remove duplicate ContractTypeTemplate definitions in api.ts</title>
<updated>2026-01-26T03:17:14+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T03:17:14+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=0faa1130bc0cc4c6d8143bbe79bfba04e4799bec'/>
<id>urn:sha1:0faa1130bc0cc4c6d8143bbe79bfba04e4799bec</id>
<content type='text'>
The previous commits added duplicate definitions which caused TypeScript errors.
Removed the second duplicate block that had inconsistent types.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>[WIP] Heartbeat checkpoint - 2026-01-26 03:16:49 UTC</title>
<updated>2026-01-26T03:16:49+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T03:16:49+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=150bad41403e7947b9b163b335dda7df80d4300d'/>
<id>urn:sha1:150bad41403e7947b9b163b335dda7df80d4300d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add contract type/template selection to standalone task creation</title>
<updated>2026-01-26T03:16:02+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T03:16:02+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=26253df6bcafeec6d049f69f79517e72bc0a5b12'/>
<id>urn:sha1:26253df6bcafeec6d049f69f79517e72bc0a5b12</id>
<content type='text'>
Load contract type templates from localStorage ('makima_contract_templates')
when creating standalone tasks in the mesh view, mirroring the behavior
that was added to contract creation.

Changes:
- Import ContractTypeTemplate type from api.ts
- Add state for template list and selected contract type
- Add useEffect to load templates from localStorage when standalone modal opens
- Add contract type selector buttons UI before repository type selector
- Reset contract type selection when modal closes or standalone task starts

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Load contract templates from localStorage for contract creation</title>
<updated>2026-01-26T03:13:14+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-26T03:13:14+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=fd02c3792123bed70c712a89ee1ef35c12a0cccf'/>
<id>urn:sha1:fd02c3792123bed70c712a89ee1ef35c12a0cccf</id>
<content type='text'>
Contract creation now loads templates from localStorage (key: makima_contract_templates)
instead of only using the API. This ensures all templates from the templates page,
including 'Execute' and custom templates, are available when creating new contracts.

The template format is converted from ContractTemplate (with Phase objects) to
ContractTypeTemplate (with phase IDs as strings) for compatibility with the UI.

Co-Authored-By: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;
</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>Move files tab and file pages to be accessible via contracts (#28)</title>
<updated>2026-01-25T02:19:42+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T02:19:42+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=03ab90836707954277597dc21fd8035019d8e221'/>
<id>urn:sha1:03ab90836707954277597dc21fd8035019d8e221</id>
<content type='text'>
* feat: remove Files from top-level navigation

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

* feat: update file links to use contract-scoped routes

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

* feat: add contract context to FileDetail component

- Add contractId, contractName, and onContractClick props to FileDetailProps
- Update breadcrumb navigation to show contract name with path separator
  when viewing file within a contract context
- Fall back to "Back to list" when no contract context is provided
- This enables the FileDetail component to be used within the
  /contracts/:contractId/files/:fileId route

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

* feat: update routes to nest files under contracts

- Add react-router-dom for client-side routing
- Create ContractList component to list all contracts
- Create ContractDetail component with tabs (overview, files, tasks, repos)
- Create FileDetail component to view individual files
- Configure routes:
  - /contracts - list all contracts
  - /contracts/:id - view contract details with Files tab
  - /contracts/:contractId/files/:fileId - view file in contract context
- Remove standalone file routes (/files, /files/:id)

Files are now only accessible through their parent contract.

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

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* feat: Add contract-scoped file route /contracts/:id/files/:fileId

- 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;

* Task completion checkpoint

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Fix CSS on templates page</title>
<updated>2026-01-25T01:34:27+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T01:34:27+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=2003544969e5b7248ecd242b5cec50b324fa751b'/>
<id>urn:sha1:2003544969e5b7248ecd242b5cec50b324fa751b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix CSS on tempaltes page</title>
<updated>2026-01-25T01:25:28+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T01:25:28+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=32dc1d2d3e80dda194569b20d5414cd39ce7f320'/>
<id>urn:sha1:32dc1d2d3e80dda194569b20d5414cd39ce7f320</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move files tab and file pages to be accessible via contracts (#27)</title>
<updated>2026-01-25T00:01:25+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-25T00:01:25+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=a279ec29efb863fefd1ca82e5b490f2e8784cf3c'/>
<id>urn:sha1:a279ec29efb863fefd1ca82e5b490f2e8784cf3c</id>
<content type='text'>
* feat: remove Files from top-level navigation

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

* feat: update file links to use contract-scoped routes

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

* feat: add contract context to FileDetail component

- Add contractId, contractName, and onContractClick props to FileDetailProps
- Update breadcrumb navigation to show contract name with path separator
  when viewing file within a contract context
- Fall back to "Back to list" when no contract context is provided
- This enables the FileDetail component to be used within the
  /contracts/:contractId/files/:fileId route

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

* feat: update routes to nest files under contracts

- Add react-router-dom for client-side routing
- Create ContractList component to list all contracts
- Create ContractDetail component with tabs (overview, files, tasks, repos)
- Create FileDetail component to view individual files
- Configure routes:
  - /contracts - list all contracts
  - /contracts/:id - view contract details with Files tab
  - /contracts/:contractId/files/:fileId - view file in contract context
- Remove standalone file routes (/files, /files/:id)

Files are now only accessible through their parent contract.

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

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

* Task completion checkpoint

---------

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