Skip to content

feat(web): editor UX enhancements round 2 (#532)#535

Merged
tvna merged 3 commits into
developfrom
claude/editor-ux-improvements-tp3l1h
Jul 5, 2026
Merged

feat(web): editor UX enhancements round 2 (#532)#535
tvna merged 3 commits into
developfrom
claude/editor-ux-improvements-tp3l1h

Conversation

@tvna

@tvna tvna commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Summary

Second UX round on the web/ 2-pane editor (after #530). Six items; scope is
web/src only. Closes #532.

Changes

  1. Entrance animations for the empty screen, the how-to modal, and the
    settings modal (fade/scale-in via CSS keyframes; honors
    prefers-reduced-motion by snapping to the visible end state so a fade-in
    never leaves an element invisible).
  2. New empty-screen tagline "値を変えるだけで、コマンドも手順書も。" replacing the
    previous "… → 再現可能なコマンド" line.
  3. Template library sub-categories (new feature — no prior implementation
    existed in git history; see web: editor UX enhancements round 2 (animations, catchphrase, editable filename, download rework, splitter clamp) #532). Adds Template.subCategory and groups the
    card grid into sub-category sections with headings + counts, using each
    category's natural technical axis: network by vendor/product (Cisco, YAMAHA,
    firewalld), server by distro (Ubuntu / Debian), DNS by application (BIND),
    runbooks by target system (ネットワーク, プロキシ / Web), AI infra by product
    (NVIDIA DGX, step-ca / Caddy). Groups are ordered by category (same-category
    sub-categories stay adjacent, incl. the "すべて" view); the left rail is
    unchanged.
  4. Editable filename in the app-bar header; it is the download filename
    base. The download-filename input is removed from the settings modal.
  5. Extension derived from output mode (手順書 → .md, Raw → .txt) instead of a
    settings radio; the save button moves to the pane footer, copy stays in the
    header. DownloadOptions drops fname/ext.
  6. Splitter clamp with per-side minimum widths so neither pane header clips
    (the left header is wider than the right); falls back to 50/50 when the
    window is too small to grant both floors.

Verification

tsc -b + vite build + Vitest (41 passed, incl. new component tests for the
download filename/extension logic). Browser checks (Playwright/Chromium) for the
entrance animations, the catchphrase swap, sub-category grouping, and the
splitter clamp at min/max widths. The only failing test is
pyodide-runtime.node.test.ts, which fails in this offline environment because
the Pyodide wheels are not vendored — it passes in CI, and is unrelated to this
diff.

Refs #532, #529

🤖 Generated with Claude Code


Generated by Claude Code

claude added 2 commits July 5, 2026 17:48
…name, download rework, splitter clamp (#532)

- Entrance animations for the empty screen, how-to modal, and settings
  modal (fade/scale-in; honors prefers-reduced-motion by snapping to the
  final visible state so a fade-in never leaves an element invisible).
- Replace the empty-screen tagline "設定定義 × テンプレート → 再現可能なコマンド"
  with the value-forward "値を変えるだけで、コマンドも手順書も。".
- App-bar filename is now an editable field and is the download filename
  base; the download-filename input is removed from the settings modal.
- Download extension is derived from the output mode (手順書 → .md,
  Raw → .txt) instead of a settings radio; the save button moves to the
  pane footer, copy stays in the header. DownloadOptions drops fname/ext.
- Clamp the splitter with per-side minimum widths so neither pane header
  clips (the left header is wider than the right); falls back to 50/50
  when the window is too small to grant both floors.

Item 3 (template sub-categories) is intentionally not included: no such
implementation exists in git history (see #532), so it is a new feature
pending an owner decision rather than a restoration.

Refs #532, #529

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnNqAtPC31wodDZmYiRgz4
Implements item 3 as a new feature (no prior implementation existed in
history — see #532). Adds a required `subCategory` field to Template and
groups the library card grid into sub-category sections with headings +
counts. Sub-categories follow each category's natural technical axis:
network by vendor/product (Cisco, YAMAHA, firewalld), server by distro
(Ubuntu / Debian), DNS by software (BIND), runbooks by target system
(ネットワーク, プロキシ / Web), AI infra by product (NVIDIA DGX,
step-ca / Caddy). Groups are ordered by category (so same-category
sub-categories stay adjacent, incl. the "すべて" view) then by first
appearance; the left category rail is unchanged.

Refs #532

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnNqAtPC31wodDZmYiRgz4
@vercel

vercel Bot commented Jul 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
command-ghostwriter Ready Ready Preview, Comment Jul 5, 2026 11:06pm

@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

#532)

- Splitter floors are now re-clamped on window resize, not only during a
  pointer drag: dragging wide then shrinking the window could otherwise drop
  a pane below its min width and clip its header (the exact case the floors
  exist to prevent).
- The footer save-button label no longer misrepresents the saved file: it is
  built from the same sanitized base as the download and discloses the
  timestamp suffix as "(+日時)" (instead of a concrete time that would drift
  from the click-time value) when the timestamp toggle is on.
- The document name is sanitized (path separators / reserved punctuation /
  leading dots stripped) before it becomes the <a download> filename, so a
  typed name like "report/v2" can't produce a broken, OS-dependent name.
- The filename input gains a maxLength and the footer label truncates a long
  base, so a very long name can't overflow the footer. The input shows a
  "command" placeholder so an emptied field matches the download fallback.

Adds component tests for the sanitize, empty-fallback, and timestamp-note
behavior; the resize re-clamp is verified end-to-end in the browser.

Refs #532

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnNqAtPC31wodDZmYiRgz4
@tvna tvna merged commit 230c0de into develop Jul 5, 2026
35 checks passed
@tvna tvna deleted the claude/editor-ux-improvements-tp3l1h branch July 5, 2026 23:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

web: editor UX enhancements round 2 (animations, catchphrase, editable filename, download rework, splitter clamp)

2 participants