<feed xmlns='http://www.w3.org/2005/Atom'>
<title>soryu/frontend/src/components/LandingPage.tsx, branch heisei-twilight-landing</title>
<subtitle>soryu-co/soryu mirror</subtitle>
<id>http://src.eirin.xyz/soryu/atom?h=heisei-twilight-landing</id>
<link rel='self' href='http://src.eirin.xyz/soryu/atom?h=heisei-twilight-landing'/>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/'/>
<updated>2026-05-06T13:56:35+00:00</updated>
<entry>
<title>Replace PC-98 character image with tactical observability mesh SVG</title>
<updated>2026-05-06T13:56:35+00:00</updated>
<author>
<name>soryu-co</name>
<email>bot@soryu.co</email>
</author>
<published>2026-05-06T13:56:35+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=697e6d842cf662f33e0b679859c2fc9365222d2d'/>
<id>urn:sha1:697e6d842cf662f33e0b679859c2fc9365222d2d</id>
<content type='text'>
- New /public/mission-tactical.svg (~9KB, license-clean, hand-crafted):
  amber wireframe globe + magenta mesh links, GitS:SAC-style HUD chrome
  (corner brackets, scanlines, telemetry strip, NODE-001 TYO label,
  pulsing origin node), kanji watermark.
- Uses CSS palette vars (amber #e8b87a / magenta #d96a8a / cyan #9ad7e0).
- .mission-image switched to object-fit:contain with a dark fill so the
  vector renders fully and never crops; pc98 mission-pan animation is
  killed for the SVG path.
</content>
</entry>
<entry>
<title>Align mission/makima body, fix mobile bg, add typewriter hero rotator</title>
<updated>2026-05-06T12:39:02+00:00</updated>
<author>
<name>soryu-co</name>
<email>bot@soryu.co</email>
</author>
<published>2026-05-06T12:39:02+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=30bfe2149fdead196c08a8cfaf5bb5415e6ee7c4'/>
<id>urn:sha1:30bfe2149fdead196c08a8cfaf5bb5415e6ee7c4</id>
<content type='text'>
Three fixes coming out of QA on staging (soryu.eirin.xyz):

1. Mission / MAKIMA body alignment
   - The amber/magenta accent rule + 18px indent used to live on
     .mission-headline only, so paragraphs (and the mission image)
     started 18px to the LEFT of the headline.
   - Move the rule + padding-left onto the .mission-screen wrapper
     itself. Headline, image, and all paragraph(s) now share one
     consistent column edge.
   - Tighten the makima-badge so it doesn't stretch the grid column
     (justify-self: start + width: max-content). Image gets explicit
     width: 100%; display: block to behave inside the column.

2. Mobile background coverage
   - pc98.css mobile-block override ('@media max-width:768px') reset
     .modern-landing-page to position: relative + margin-top: 100px,
     leaving a 100-156px band at the top where only the body color
     showed and pushing the wrapper bottom past the viewport.
   - Force position: fixed on the wrapper at every breakpoint with
     !important. Use 100dvh (dynamic viewport height) so the gradient
     follows iOS Safari's collapsing URL bar rather than getting
     clipped.
   - Mirror the dusk gradient onto &lt;body&gt; as a fallback so any
     sub-pixel rounding gap shows the same colour, not white.

3. Typewriter hero rotator
   - New &lt;TypewriterRotator/&gt; component (frontend/src/components/
     TypewriterRotator.tsx) — types, holds, deletes, gaps, advances.
     Honours prefers-reduced-motion (renders the first phrase static).
   - LandingPage.tsx renders it inside a new .hero-tagline wrapper
     where the old static CSS ::after lived. Five phrases, all
     bilingual JP/EN in the same Heisei tactical voice:
       * 低遅延ストリーミング · LOW-LATENCY OBSERVABILITY
       * リアルタイム監視 · REAL-TIME SURVEILLANCE
       * ミッションクリティカル · MISSION-CRITICAL INFRASTRUCTURE
       * エンドツーエンド可視化 · END-TO-END VISIBILITY
       * 安全な意思決定 · SECURE DECISIONS AT THE EDGE
   - Hide the old .hero::after pseudo-tagline; .hero-tagline keeps
     the same centred position, amber colour, and tracking.
   - Caret blink animation (steps(1), 1s) — separate from the typing
     timing so it always blinks at human speed.

npm run build passes (CSS 94 kB / 18.2 kB gzip, JS 238 kB / 75 kB
gzip — +1.5 kB net for the rotator + new phrases).

Verified at 1280x720 / 390x844 via Playwright DOM probe:
  - mission/makima: headline.x === paragraph.x === image.x ✓
  - mobile: wrapper y=56, h=788, bottom=844 (full coverage) ✓
  - typewriter: types, holds, deletes, advances to phrase 2 ✓

Screenshots in docs/heisei-screenshots/after-*.jpg refreshed.
Staging at soryu.eirin.xyz updated via rsync.
</content>
</entry>
<entry>
<title>Tighten mission/makima top space and use highlighted nav state</title>
<updated>2026-05-06T11:30:27+00:00</updated>
<author>
<name>soryu-co</name>
<email>bot@soryu.co</email>
</author>
<published>2026-05-06T11:30:27+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=771ece20e5e669f93fc0aba0459ac1ff2fa0825b'/>
<id>urn:sha1:771ece20e5e669f93fc0aba0459ac1ff2fa0825b</id>
<content type='text'>
The CTA row is now a top navbar, so the old 'Close' label on the
active panel button is redundant — the button itself should look
like the current page. Two fixes here:

1. Replace 'Close' with a persistent active highlight.
   - LandingPage.tsx: button keeps its label ('Mission' / 'MAKIMA')
     and gains an is-active class + aria-current="page" when its
     panel is open. heisei.css renders the active state as a solid
     amber underline + amber text — same visual language as the
     hover indicator, just persistent.
   - The button still toggles the panel closed when clicked again,
     so the interaction is unchanged; only the labelling moved.

2. Remove the white-space band above mission content.
   - The legacy .modern-landing-page wrapper from pc98.css pinned
     itself at top: 120px and height: calc(100vh - 120px), matching
     the original 120px-tall floating header. The new header is
     72px (56px on mobile), which left ~50px of dead space below
     the navbar before the mission/makima content started.
   - Override the wrapper to top: 72px / height: calc(100vh - 72px)
     on desktop and 56px on mobile so it sits flush under the
     header.
   - Cover-content padding-top retuned for the new wrapper origin:
     desktop default 84px, mission-mode 72px (navbar 52 + 20 gap).
     Mobile default 76px, mission-mode 64px (navbar 48 + 16 gap).

Verified at 1280x720:
  navbar y=72-124 · mission headline starts y=144 · 20px gap ✓
  active Mission button: 'taisho-cta is-active', aria-current=page ✓

npm run build passes (CSS 92.6 kB / 18.1 kB gzip). Screenshots in
docs/heisei-screenshots/after-*.jpg refreshed against the tightened
layout.
</content>
</entry>
<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: 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>Update Makima panel in soryu to match makima/frontend description</title>
<updated>2026-01-11T04:34:42+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2026-01-11T04:31:29+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=077820c4167c168072d217a1b01df840463a12a8'/>
<id>urn:sha1:077820c4167c168072d217a1b01df840463a12a8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add Makima inline icon and mesh copy</title>
<updated>2025-12-23T14:47:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2025-12-05T03:24:02+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=f6799b32958cb438a54ea374a2b6f33912ffe376'/>
<id>urn:sha1:f6799b32958cb438a54ea374a2b6f33912ffe376</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add Makima modal</title>
<updated>2025-12-23T14:47:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2025-12-05T03:17:14+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=fd9e9fbb9dce8b02646852add46d07e519238abf'/>
<id>urn:sha1:fd9e9fbb9dce8b02646852add46d07e519238abf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Frontend: mission screen transform with dimming, auto-pan image; hide stats in mission mode</title>
<updated>2025-12-23T14:47:17+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2025-12-01T18:44:33+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=4b21765ab94f0b40469dc1205c5057f480316c20'/>
<id>urn:sha1:4b21765ab94f0b40469dc1205c5057f480316c20</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Refine manga masthead and issue badge; switch volume indicator to small red glowing heart</title>
<updated>2025-11-16T18:58:01+00:00</updated>
<author>
<name>soryu</name>
<email>soryu@soryu.co</email>
</author>
<published>2025-11-16T18:58:01+00:00</published>
<link rel='alternate' type='text/html' href='http://src.eirin.xyz/soryu/commit/?id=909bf052149f4cf9b522238a2a2ea327f73c85d4'/>
<id>urn:sha1:909bf052149f4cf9b522238a2a2ea327f73c85d4</id>
<content type='text'>
</content>
</entry>
</feed>
