<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu/frontend/src, branch document-ui-save-folder-stream</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=document-ui-save-folder-stream</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=document-ui-save-folder-stream'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-04-28T20:26:11+00:00</updated>
<entry>
<title>revert PRs #93-#98; enforce strict-linear-DAG + mandatory directive verify (#100)</title>
<updated>2026-04-28T20:26:11+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-04-28T20:26:11+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=5bde7c2d7e099fd9c8b2615602ab1d096bd9b6be'/>
<id>urn:sha1:5bde7c2d7e099fd9c8b2615602ab1d096bd9b6be</id>
<content type='text'>
* revert: roll back PRs #93-#98 to pre-Lexical baseline

Reverts the entire chain of directive document UI work and the homepage redesign,
restoring the working tree to the state at 3679ceb (before c8b169d / PR #93).

PRs reverted:
- #93 c8b169d feat: Document UI for directive orchestration with Lexical editor
- #94 d6f01a6 fix: compilation error and warnings already merged via PR #93
- #95 5aa3faf fix: resolve compilation error and warnings in Rust backend
- #97 d513f93 feat: document UI with contract blocks, expandable logs, and interaction controls
- #96 6366941 feat: Redesign homepage with professional PC-98 styling
- #98 d1fdfb1 feat: revert broken directive PRs, re-implement Lexical document orchestrator

The directive Document UI experiments produced fragile output and merge artifacts;
follow-up commits in this PR change orchestration to favor strictly linear DAGs and
add goal/conflict verification so future runs do not require this kind of cleanup.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;

* feat(directive): strict-linear-DAG planning + mandatory `directive verify`

Tightens directive orchestration so the final PR almost never needs a hand-merge:

1. Planning prompts now strongly bias toward strictly linear DAGs.
   Parallel steps are reserved for genuinely independent work (e.g. disjoint
   modules); the default for "in doubt" is sequential. Linear chains inherit
   each previous step's worktree, so the final merge is typically just a
   rebase against the base branch.

2. New CLI command `makima directive verify` does a local in-memory
   `git merge-tree` of HEAD against `&lt;remote&gt;/&lt;base&gt;` and exits non-zero
   with a list of conflicting files if the PR would not merge cleanly.
   Pure-local — no API call, no working-tree mutation.

3. Completion / PR-creation prompts now mandate three pre-push checks:
   a. build (`cargo check` and/or `tsc --noEmit`),
   b. `makima directive verify --base &lt;base_branch&gt;` must exit 0, and
   c. an explicit goal-alignment self-check against the diff.
   The orchestrator is told NOT to push, create the PR, or call
   `makima directive update` until all three pass. Skipping any of them
   is documented as a directive failure.

The combination means that with a linear DAG the final PR-creation task
should almost never see a real conflict — when it does, that is treated as
a planning bug to escalate rather than something to paper over with
`-X theirs`.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;

* fix(frontend): TS errors pre-existing on master

- TaskSlideOutPanel: declare missing `selectedFileDiff` / `selectedFilePath`
  state hooks that were referenced everywhere but never created, and
  re-balance the JSX so the `&lt;&gt;...&lt;/&gt;` fragment in the non-diff branch is
  closed (the previous indentation/braces would not parse).
- api.ts: add a `getWorktreeDiff` thin wrapper around `getTaskDiff` so
  TaskDetail's per-file click handler type-checks (the per-file slice is a
  future improvement; today both return the full task diff).
- WorktreeFilesPanel: remove unused `isClickable` local; the gating already
  reads `onFileClick` directly inline.

Run after revert: `npx tsc --noEmit` exits 0.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>feat: revert broken directive PRs, re-implement Lexical document orchestrator (#98)</title>
<updated>2026-04-28T18:12:52+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-04-28T18:12:52+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=d1fdfb140cc440664f77a24886172f9976a05a31'/>
<id>urn:sha1:d1fdfb140cc440664f77a24886172f9976a05a31</id>
<content type='text'>
* feat: soryu-co/soryu - makima: Revert broken directive PRs and verify clean build

* feat: soryu-co/soryu - makima: Re-implement frontend: Lexical document editor with feature flag and base components

* WIP: heartbeat checkpoint

* feat: soryu-co/soryu - makima: Add contract blocks, expandable log rows, and interaction controls

* WIP: heartbeat checkpoint

* feat: soryu-co/soryu - makima: End-to-end build verification and integration polish</content>
</entry>
<entry>
<title>feat: Redesign homepage with professional PC-98 styling (#96)</title>
<updated>2026-04-28T16:35:34+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-04-28T16:35:34+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=636694182fe9381479f2e9062229dda3838c5421'/>
<id>urn:sha1:636694182fe9381479f2e9062229dda3838c5421</id>
<content type='text'>
* feat: soryu-co/soryu - soryu: Redesign landing page layout and header for professional style

* feat: soryu-co/soryu - soryu: Restyle CSS for professional landing page

* feat: soryu-co/soryu - soryu: Integrate and polish landing page styles with component</content>
</entry>
<entry>
<title>feat: document UI with contract blocks, expandable logs, and interaction controls (#97)</title>
<updated>2026-04-28T16:35:08+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-04-28T16:35:08+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=d513f93c84ae985738e0f696fcb72fa1153046ef'/>
<id>urn:sha1:d513f93c84ae985738e0f696fcb72fa1153046ef</id>
<content type='text'>
* feat: soryu-co/soryu - makima: Rename tasks to contracts in directive API and types

* feat: soryu-co/soryu - makima: Add contract interaction panel with comment and interrupt

* feat: soryu-co/soryu - makima: Build expandable contract log feed in StepsDiagram

* feat: soryu-co/soryu - makima: Rename tasks to contracts throughout document UI and add contract block support

* feat: soryu-co/soryu - makima: Add comment and interrupt controls to expanded step log feed

* feat: soryu-co/soryu - makima: Audit and fix Document UI feature flag visibility and missing implementations

* feat: soryu-co/soryu - makima: Add expandable step rows with live log feed in StepsDiagram

* WIP: heartbeat checkpoint

* feat: soryu-co/soryu - makima: Integrate all document UI components and final polish</content>
</entry>
<entry>
<title>feat: Document UI for directive orchestration with Lexical editor (#93)</title>
<updated>2026-04-27T23:18:40+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-04-27T23:18:40+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=c8b169da8cb7eae0957e0ab5e7370b071093a224'/>
<id>urn:sha1:c8b169da8cb7eae0957e0ab5e7370b071093a224</id>
<content type='text'>
* WIP: heartbeat checkpoint

* feat: soryu-co/soryu - makima: Save previous goal on update and include history in re-planning prompt

* feat: soryu-co/soryu - makima: Install Lexical and create base document editor component

* feat: soryu-co/soryu - makima: Create directive file system sidebar and document layout

* feat: soryu-co/soryu - makima: Create custom Lexical step diagram block

* feat: soryu-co/soryu - makima: Add context menu and goal auto-update integration

* WIP: heartbeat checkpoint</content>
</entry>
<entry>
<title>feat: Add daemon page with download binary and Cloudflare Agent setup (#77)</title>
<updated>2026-02-22T14:39:14+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-02-22T14:39:14+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=6a34a6f3c423a7c57616762eb4cea2b7da52eaf3'/>
<id>urn:sha1:6a34a6f3c423a7c57616762eb4cea2b7da52eaf3</id>
<content type='text'>
* feat: soryu-co/soryu - makima: Create DaemonList and DaemonDetail page components

* feat: soryu-co/soryu - makima: Add daemon page routes, CSS styles, and navigation

* feat: soryu-co/soryu - makima: Create daemon page with download and monitoring

* WIP: heartbeat checkpoint

* WIP: heartbeat checkpoint

* feat: soryu-co/soryu - makima: Integrate Cloudflare Agent setup into daemon page</content>
</entry>
<entry>
<title>Add auto_merge_local option for local-only contracts (#50)</title>
<updated>2026-01-31T22:17:09+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-31T22:17:09+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=3ea2c72e2c50c0d73614d9ac82f41508b6ab1ce4'/>
<id>urn:sha1:3ea2c72e2c50c0d73614d9ac82f41508b6ab1ce4</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>fix: Remove mistaken red team UI from VN frontend (#47)</title>
<updated>2026-01-29T02:24:48+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-29T02:24:48+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=cfe3ea0aae878ae8f591acdc33a48332ac875b9e'/>
<id>urn:sha1:cfe3ea0aae878ae8f591acdc33a48332ac875b9e</id>
<content type='text'>
* feat: Add Red Team UI to makima/frontend contract creation

- Add redTeamEnabled and redTeamPrompt state to contracts page
- Add "Enable Red Team Monitoring" checkbox with description
- Add conditional "Custom Review Criteria" textarea when enabled
- Include redTeamEnabled/redTeamPrompt in CreateContractRequest
- Reset red team fields when canceling contract creation
- Add redTeamEnabled to ContractSummary and Contract types
- Add redTeamEnabled/redTeamPrompt to CreateContractRequest type
- Add Red Team badge (🔍) to ContractList for enabled contracts

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

* fix: Remove mistaken red team UI from VN frontend

PR #39 accidentally added red team UI code to the wrong frontend directory
(frontend/ instead of makima/frontend/). The correct implementation is
already in makima/frontend/. This commit removes the mistaken changes:

- Delete ContractCreateModal.tsx (was added by mistake)
- Revert ContractList.tsx to remove red team badge and create modal
- Revert ContractDetail.tsx to remove red team tab and notifications
- Revert types.ts to remove contract/task types
- Revert pc98.css to remove red team styling

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

* [WIP] Heartbeat checkpoint - 2026-01-29 02:18:40 UTC

---------

Co-authored-by: Claude Opus 4.5 &lt;noreply@anthropic.com&gt;</content>
</entry>
<entry>
<title>Add Red Team CLI command and frontend UI (#39)</title>
<updated>2026-01-27T11:04:20+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-27T11:04:20+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=c618174e60e4632d36d7352d83399508c72b2f42'/>
<id>urn:sha1:c618174e60e4632d36d7352d83399508c72b2f42</id>
<content type='text'>
* Add Red Team CLI command and frontend UI

Backend additions:
- Add `makima red-team notify` CLI command for red team tasks
- Add RedTeamCommand enum with Notify subcommand
- Add red_team API client module for notify endpoint
- Add RedTeamNotifyArgs with severity, task, file, context options

Frontend additions:
- Add ContractCreateModal with red team toggle and prompt input
- Update ContractDetail with red-team tab for notifications
- Update ContractList with red team enabled badge
- Add TypeScript types for RedTeamNotification and related interfaces

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

* Add CSS styles for Red Team frontend components

Add comprehensive styling for:
- Contract list and detail containers
- Red team badge styling with gradient backgrounds
- Tab navigation with red team specific styling
- Red team notifications panel with severity indicators
- Contract creation modal form elements
- Task badges for supervisor and red team roles

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

* Fix missing local_only field in TUI CreateContractRequest

Add the missing local_only field to the CreateContractRequest struct
initialization in the TUI contract creation handler.

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

* [WIP] Heartbeat checkpoint - 2026-01-27 03:07:28 UTC

---------

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 (#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>
