Skip to content

feat(layout): replace LeftPaneTabSwitcher with VS Code-style Activity Bar + relocate History pane (#727)#729

Merged
Kewton merged 3 commits into
developfrom
feature/727-worktree
May 30, 2026
Merged

feat(layout): replace LeftPaneTabSwitcher with VS Code-style Activity Bar + relocate History pane (#727)#729
Kewton merged 3 commits into
developfrom
feature/727-worktree

Conversation

@Kewton
Copy link
Copy Markdown
Owner

@Kewton Kewton commented May 30, 2026

Summary

Issue #727 対応。PC版Worktree詳細画面のレイアウトを VS Code風 Activity Bar に再構成。

  • 6アイコン(Files/Git/Notes/Schedules/Agent/Timer)を画面左端の垂直バーに配置
  • History を「ターミナルの左の独立カラム」へ移動、< / > トグル + ドラッグ幅可変
  • 4カラムレイアウト: [ActivityBar(48px)] [ActivityPane] [History] [Terminal+FilePanel]
  • localStorage 永続化(選択中activity / 各カラム幅 / History表示状態)

変更内容

コミット

Hash メッセージ
16726fec feat(worktree): introduce VS Code-style Activity Bar + dedicated History pane (#727)
ad17bfdd docs: update CLAUDE.md / CHANGELOG.md / UI_UX_GUIDE for Activity Bar (#727)
(reports) docs(reports): add pm-auto-dev iteration-1 reports

新規ファイル(5件)

  • src/config/activity-bar-config.ts
  • src/components/worktree/ActivityBar.tsx
  • src/components/worktree/ActivityPane.tsx
  • src/hooks/useActivityBarState.ts
  • src/hooks/useHistoryPaneState.ts

変更ファイル(12件)

  • src/components/worktree/WorktreeDesktopLayout.tsx — 2カラム → 4カラム化
  • src/components/worktree/WorktreeDetailRefactored.tsx — memo 4分割(Notes/Schedules/Agent/Timer各Activityへ)
  • src/components/worktree/HistoryPane.tsxonCollapse props 追加
  • src/types/ui-state.ts
  • src/types/ui-actions.ts
  • src/hooks/useWorktreeUIState.ts
  • src/hooks/useWorktreeTabState.tstoActivityId() 追加(deep link対応)
  • src/lib/deep-link-validator.ts
  • ドキュメント: CLAUDE.md / CHANGELOG.md / docs/UI_UX_GUIDE.md

削除(3件)

  • src/components/worktree/LeftPaneTabSwitcher.tsx
  • 関連テスト 2 件

テスト

  • 新規 4 件 / 更新 8 件
  • 全 350 files / 6610 tests / 7 skipped / 全PASS

破壊的変更(PC版のみ)

項目 変更
左パネル構造 History/Files/CMATE タブ式 2 カラム → ActivityBar + 4カラム
commandmate.worktree.leftPaneCollapsed localStorage 読み捨て(マイグレーション処理なし)
LeftPaneTabSwitcher API 削除
モバイル 変更なしGlobalMobileNav / WorktreeDetailSubComponents / NotesAndLogsPane 維持)

受入条件

Activity Bar

  • 6 アイコン(Files/Git/Notes/Schedules/Agent/Timer)縦並び表示
  • クリックで Activity Pane 表示、active 視覚的フィードバック
  • 同じアイコン再クリックで Activity Pane 非表示
  • 別アイコンクリックで切替
  • tooltip(hover時)
  • キーボード操作: Tab / ArrowUp/Down / Enter/Space
  • アクセシビリティ: role="tablist" / aria-orientation="vertical" / aria-selected / aria-label / aria-controls
  • 起動時の選択 activity は localStorage 復元、デフォルト Files

Activity Pane

  • Files → ファイルツリー
  • Git → GitPane
  • Notes → MemoPane のみ
  • Schedules → ExecutionLogPane(スケジュール + 実行ログ)
  • Agent → AgentSettingsPane
  • Timer → TimerPane
  • PaneResizer で幅可変

History ペイン

横断

  • PC版のみ対象、モバイル変更なし
  • 既存の右側ターミナル・FilePanel(FilePanelSplit)変更なし
  • npm run lint / npx tsc --noEmit / npm run test:unit / npm run build 全PASS

品質チェック

項目 結果
npm run lint ✅ No ESLint warnings or errors
npx tsc --noEmit ✅ Pass
npm run test:unit ✅ 350 files / 6610 tests pass, 7 skipped
npm run build ✅ Build success

実行フロー

/orchestrate 727/pm-auto-issue2dev 727:

  1. ✅ Phase 1: Multi-stage Issue Review(Stage 1-4、Issue本文反映)
  2. ⏭ Phase 2-3: 設計レビュー(メモリ指示によりスキップ)
  3. ✅ Phase 4: Work Plan
  4. ✅ Phase 5: TDD実装 + Acceptance Test + Docs
  5. ⏭ Phase 6: UAT スキップ(--full 未指定)
  6. ✅ Phase 7: 進捗報告(1h 5m 43s で完了)

関連

Test plan

  • PC版を開いて左端に6アイコン縦並び確認
  • 各アイコンクリックで対応Activity Pane表示確認
  • 同じアイコン再クリックでActivity Pane非表示確認
  • History < で折りたたみ、> で再表示確認
  • Activity Pane / History 幅をドラッグで変更し、リロード後保持確認
  • localStorage 永続化動作確認
  • モバイルレイアウト(GlobalMobileNav)に影響なし確認

🤖 Generated with Claude Code

Kewton and others added 3 commits May 30, 2026 15:52
…ory pane (#727)

Replaces the legacy left-pane tab switcher (History/Files/CMATE) with a
48px vertical Activity Bar that hosts 6 activities (Files, Git, Notes,
Schedules, Agent, Timer). History gets its own resizable, collapsible
column independent of the Activity Pane.

Implementation:
- New ActivityBar (role=tablist + keyboard nav) and ActivityPane
  (table-driven ActivityContentMap) components
- New useActivityBarState / useHistoryPaneState hooks with localStorage
  persistence (last-opened activity, history visibility + width 10-60%)
- WorktreeDesktopLayout rewritten to a 4-column layout
  ([ActivityBar 48px] + ActivityPane + HistoryPane + Right) with mobile
  fallback preserved (NotesAndLogsPane / WorktreeDetailSubComponents
  untouched)
- WorktreeDetailRefactored leftPaneMemo (38 deps, Issue #411 R3-007) split
  into activityBarMemo + activityContent + activityPaneMemo +
  historyPaneMemo, each with narrow deps and a maintenance-note header
- Deep-link mapping (?pane=files|git|notes|logs|agent|timer|history)
  routed through new toActivityId() in useWorktreeTabState (logs maps to
  schedules; history/terminal/info map to null)
- useFilePolling gated on activeActivity === 'files'
- LeftPaneTabSwitcher and related tests deleted

Refactor (within this commit):
- Extracted ResizableColumn helper in WorktreeDesktopLayout to dedupe the
  activity- and history-pane column JSX (same id+testid+aria-label+width+
  ErrorBoundary+PaneResizer shape)

Tests: 6610 passing (4 new test files: ActivityBar, ActivityPane,
useActivityBarState, useHistoryPaneState; 3 deleted: LeftPaneTabSwitcher
component test, LeftPaneTabSwitcher unit test, left-pane-tab type test).
Quality gates: tsc=pass, lint=clean, build=pass.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…727)

CLAUDE.md モジュールリファレンス更新:
- LeftPaneTabSwitcher.tsx 行を削除
- 新規 ActivityBar.tsx / ActivityPane.tsx / useActivityBarState.ts /
  useHistoryPaneState.ts / activity-bar-config.ts を追加
- WorktreeDesktopLayout / WorktreeDetailRefactored / HistoryPane /
  NotesAndLogsPane / useWorktreeUIState / useWorktreeTabState の
  各行に Issue #727 の改修内容を追記

CHANGELOG.md [Unreleased]:
- Added: Activity Bar / Deep link toActivityId
- Changed: WorktreeDesktopLayout 4 カラム化、leftPaneMemo 分割、
  HistoryPane onCollapse 追加
- Removed: LeftPaneTabSwitcher と関連テスト、PC の Message/Git サブタブ UI
- Breaking Changes: PC レイアウト視覚的変更(モバイルは不変)

docs/UI_UX_GUIDE.md / docs/en/UI_UX_GUIDE.md:
- 「デスクトップ 2 カラム」記述を 4 カラム構成 (ActivityBar / ActivityPane /
  History / Right) に更新
- ファイル構成図に ActivityBar.tsx / ActivityPane.tsx を追加

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Kewton Kewton merged commit 7ee1a7e into develop May 30, 2026
5 checks passed
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.

1 participant