All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- PDF: PDFファイルプレビュー機能を追加(Blob URL + iframe sandbox方式) (Issue #673)
- PDF: 実際のChrome(デスクトップ・モバイル)でPDFプレビューが動作するよう修正 (Issue #673)
- Sidebar: ブランチ切り替え時にツールチップが固定表示される問題を修正 (Issue #676)
- Worktree: 再レンダリングループによってworktree URL更新がブロックされる問題を修正 (Issue #675)
- Proxy: External AppsへのWebSocket upgradeをプロキシで中継するよう修正 (Issue #671)
- Proxy: プロキシ応答から
content-encoding/content-lengthヘッダを除去
- PDF:
normalizeExtensionの共有化と冗長コメントの整理 (Issue #673)
- Assistant: Home画面に非インタラクティブなClaude/Codex対応のアシスタントチャット機能を追加 (Issue #649)
- Assistant: 専用Chatタブを追加し、commandmate CLI起動とスクリプト起動をコンテキストで区別 (Issue #649)
- Sidebar: PC用サイドバーをw-56にコンパクト化しツールチップで詳細表示 (Issue #651)
- Sidebar: ブランチ間ナビゲーション時にスクロール位置を保持 (Issue #651)
- Sidebar: ブランチツールチップで説明文全文を表示 (Issue #651)
- Sidebar: サイドバー背景の差別化とDnDによるグループ並び替えを追加 (Issue #651)
- Memo: CMATE Notesの上限を5件から10件に拡張 (Issue #652)
- Assistant: ドロップダウンの高さを揃えコントロール配置を修正 (Issue #649)
- Sidebar: コンパクト化後のリサイズ・ツールチップ・オーバーフロー問題を修正 (Issue #651)
- Sidebar: ドラッグリサイズのラグとグループヘッダー下線を除去 (Issue #651)
- Sidebar: ブランチ高速クリック時のフルページリロードを防止 (Issue #651)
- Sidebar: アンマウント時にフォールバックタイマーをキャンセル (Issue #651)
- Sidebar: フルページリロードを誘発していたフォールバックタイマーを除去 (Issue #651)
- Sidebar: group-orderルートに dynamic export を追加し静的キャッシュを回避 (Issue #651)
- Assistant: インストール済みツールAPIを追加しCLIツールセレクタのUXを改善 (Issue #649)
- Sidebar: BranchTooltipサブコンポーネントを抽出し保守性コメントを整理 (Issue #651)
- Memo: MemoPaneのimport順を統一 (Issue #652)
- Assistant: AssistantChatPanelのUIレイアウトとビジュアルデザインを調整 (Issue #649)
- Assistant: Chatタブおよびcontext-builder変更に合わせて既存テストを更新 (Issue #649)
- Editor: YAMLファイル編集と拡張子選択ダイアログを追加 (Issue #646)
- DB: リポジトリにdisplay_name(カスタム別名)を追加 (Issue #642)
- Markdown: HTML imgタグの相対パスとwidth/height属性をサポート
- Upload: 画像アップロード上限を20MBに引き上げ、マークダウンビューアで相対画像パスを解決
- Detection: React error #31 と Claude
/model選択リスト検出を修正 (Issue #648)
- Editor: ファイル編集機能のコード品質改善 (Issue #646)
- Repository: display_name保存時のエラーメッセージ解決ロジックの重複排除 (Issue #644)
- Test: ファイルサイズテストを5MBから20MBに更新し設定変更に追従
- Report: レポート生成ステータスをUIとCLIで可視化 (Issue #638)
- CLI:
reportコマンドを追加(日次レポートの生成・表示・一覧表示) (Issue #636) - Report: 日次レポートのプロンプトにGitHub Issueコンテキストを追加 (Issue #630)
- Report: 日次レポート生成にコミットログ収集を追加 (Issue #627)
- Report: ステータスエンドポイントのdynamic renderingを強制 (Issue #638)
- Report: セクション別プロンプト長制限でcommit_logとissue_contextを保持 (Issue #634)
- Report: コミットログ収集前に無効なリポジトリをフィルタリング (Issue #632)
- Codex: daily summary生成にツール固有パーミッションを使用 (Issue #626)
- Utils: JSDocの関連付け修正とタイムアウトユーティリティの整理 (Issue #627)
0.5.2 - 2026-04-04
- Review: レポートテンプレート機能を追加し、CRUD API と 3 モード生成UIを実装 (Issue #618)
- Report: レポート本文のコピーボタンを追加
- Codex:
/modelStep 1 のモデル選択UIを selection list として検出 (Issue #622) - Codex:
/model選択UIを waiting status として検出 (Issue #619) - Detection: Codex Reasoning Level UI を
multiple_choiceprompt とsubmitMode対応で処理
- Template API: 共有ヘルパーを抽出して重複を削減 (Issue #618)
- Prompt handling:
SubmitModeバリデーションヘルパーを抽出して重複を削減 (Issue #616)
0.5.1 - 2026-04-02
- Report: ユーザー指示入力とUI改善 (Issue #612)
- Daily Summary: デイリーサマリー機能の実装 (Issue #607)
- Sessions: ソートオプションとメッセージプレビューを追加 (Issue #606)
- Sessions: デフォルトソートを「最終送信(新しい順)」に変更
- Sessions: 表示順をリポジトリ名→ブランチ名の順に変更
- Sidebar: セッションフラグからworktreeステータスを導出し、適応型ポーリングを追加 (Issue #608)
- Status: キャプチャ行数統一によりスピナーがreadyで停止する問題を修正 (Issue #604)
- Daily Summary / Sessions: ヘルパー関数を抽出し重複を削減
- Sessions: sanitizePreviewを共有configモジュールに抽出
0.5.0 - 2026-04-02
- UX Refresh: 5画面構成(Home / Sessions / Repositories / Review / More)への全面リニューアル (Issue #600)
- Phase 1: Foundation(共通フック、キャッシュプロバイダー、レイアウト設定)
- Phase 2: Screen framework(Sessions / Repositories / Review / More画面、モバイルグローバルナビ)
- Phase 3: Deep link、API拡張、Review stalled検出
- Phase 4: 統合・デモGIF更新・動画アップロード上限100MB
- UX: ステータスシステム刷新とReviewページフィルター (Issue #600)
- UI: WorktreeDetailHeaderにPC用Homeリンクを追加 (Issue #600)
- Worktree: stale CLI tab responsesのガード処理 (Issue #602)
- Gemini: ステータススピナーの不一致を修正
- Gemini: スラッシュコマンドの復元
- Commands: Codex共有スラッシュコマンドの表示修正
- CI: lint/テストエラーの修正 (Issue #600)
- UX Refresh設計レポート・CLAUDE.md更新 (Issue #600)
0.4.16 - 2026-04-01
- Navigation: add Left/Right keys to NavigationButtons for Copilot TUI (Issue #592)
0.4.15 - 2026-03-31
- Schedule: allow Copilot model selection in CMATE schedule CLI Tool column (Issue #588)
- Schedule: add Copilot CLI permission flag support for CMATE schedules (Issue #584)
- Schedule: expose active schedule state
- Commands: add current-situation, cause-analysis commands and update orchestrate for bug workflow
- Commands: add Codex cross-review to multi-stage review commands
- Slash commands: prevent Copilot builtins from overriding Claude standard commands (Issue #586)
- Schedule: recover inactive schedule cron jobs
- Schedule: stop cron job when schedule is disabled via Enabled=false
- Commands: correct agent assignment rules in orchestrate command
- Scripts: add .env auto-loading to all shell scripts
- Schedule: add missing new files for Copilot model selection (Issue #588)
- Add Copilot model selection syntax to CMATE schedules guide (ja/en)
0.4.14 - 2026-03-29
- CLI:
--modeloption forsendcommand to support Copilot model switching (Issue #576) - Copilot: TUI response handling with deduplication and accumulated content saving (Issue #565)
extractCopilotContentLines/normalizeCopilotLinein tui-accumulator- Copilot-specific branching in response-extractor
- Prompt deduplication with SHA-256 hash cache (
prompt-dedup.ts) - Copilot timing constants (
copilot-constants.ts)
- WSL2: Windows environment support with setup guide and troubleshooting (Issue #551)
- Copilot: extract latest response only in
cleanCopilotResponse(Issue #571) - Copilot: clean up History redundant display (Issue #571)
- Copilot: add TUI decoration skip patterns to
COPILOT_SKIP_PATTERNS(Issue #565) - Copilot: fix message sending, selection list detection, and pane size (Issue #565)
- tmux: set explicit window size on session creation to fix TUI display (Issue #565)
- Timer: show all tools including copilot in agent selector
- CLI: add copilot to
--agenthelp text in send/respond/capture/auto-yes commands - Test: mock
sendSpecialKeyin base.test.ts to prevent unhandled rejection
- Module split: split large modules into sub-files, Phase 1 (Issue #575)
- Security: unify security comment identifiers and strengthen input sanitization (Issue #574)
- Type safety: remove dangerous type casts and improve silent failure handling (Issue #573)
- DB: remove deprecated forwarding files and unify import paths (Issue #550)
- Copilot: improve naming clarity and remove redundant code
- Test: fix assertion format and indentation in ip-restriction tests
- Test: remove unused imports in db-toValidAppType test
- Test: use
vi.stubGlobalfor NODE_ENV assignment in api-client test
- chore: bump vitest 4.1.1 → 4.1.2
0.4.13 - 2026-03-28
- Copilot: GitHub Copilot CLI tool support with gh-based command and 2-stage install check (Issue #545)
- CopilotTool class, CLI_TOOL_IDS/display names updated to 6 tools
- Copilot patterns, response cleaning, and completion detection
- GH_DEBUG added to env-sanitizer sensitive keys
- Copilot: builtin slash commands (46 commands) and selection list detection (Issue #547)
- COPILOT_SELECTION_LIST_PATTERN for detecting selection UIs
- getCopilotBuiltinCommands() with 'builtin' source type
- SELECTION_LIST_REASONS Set for unified selection list handling
- Worktree info: copy-to-clipboard for Path and Repository Path fields (Issue #552)
- Mobile: default to preview tab in mobile markdown viewer (Issue #549)
- Copilot: delegate slash commands to sendMessage for prompt-aware execution (Issue #559)
- Copilot: use sendKeys directly in terminal and send APIs to avoid waitForPrompt blocking
- Copilot: fix prompt detection pattern to match "❯ " with trailing hint text
- Copilot: improve thinking detection ("Esc to cancel") and selection list patterns
- Copilot: prevent /model text leaking into selection list search field
- Mobile: enable vertical scrolling on mobile file list (Issue #548)
- Mobile: fix file list overflow hidden behind input bar with increased paddingBottom
- Navigation: improve selection list button responsiveness with immediate refresh after key send
- Test: improve mobile overflow test robustness with MobileContent-anchored regex matching
0.4.12 - 2026-03-24
- Timer: delayed message sending feature with configurable delay times (Issue #534)
timer-constants.tswith dynamic delay generationtimer-db.tswith full CRUD operations and cursor-based paginationtimer-manager.tswith globalThis singleton and setTimeout management- Timer API route (POST/GET/DELETE) with security validations
TimerPane.tsxwith countdown, polling, and visibilitychange support- Timer sub-tab in NotesAndLogsPane
- Timer: session check before timer execution with NO_SESSION status (Issue #539)
isRunning()check to detect no-session state- Session warning in POST API response and UI
- Timer: history limit, pagination, and automatic cleanup (Issue #540)
- Cursor-based pagination with configurable limits
- Automatic cleanup of old timers on startup (30-day retention)
- Recovery of stuck sending timers
- "Load more" and "Clear history" UI controls
- Timer: add agent selector to TimerPane registration form (#538)
- Timer: fix flaky cleanupOldTimers boundary test with fixed timestamps
- Timer: extract MAX_TIMER_MESSAGE_LENGTH and TIMER_COLUMNS constants for DRY compliance
- Timer: optimize stopTimersForWorktree to use in-memory map instead of DB query
- Timer: extract startIntervals/stopIntervals helpers in TimerPane to eliminate duplication
0.4.11 - 2026-03-21
- Auto-Yes: per-agent composite key support for independent Auto-Yes control per agent (Issue #525)
- Auto-Yes: per-agent UI controls with agent name display in AutoYesToggle
- Session history: retain message history after session clear with archived toggle (Issue #168)
- Logical deletion (archived column) instead of physical DELETE
showArchivedtoggle in HistoryPane with localStorage persistence
- CLI:
/orchestratecommand for parallel issue development lifecycle - CLI:
/pr-merge-pipelinecommand for PR creation through merge automation - CLI:
/uat-fix-loopcommand for UAT failure repair cycle automation
- Sync: clean up orphaned tmux sessions when worktrees are deleted during sync (Issue #526)
- Auto-Yes: separate per-agent auto-yes state in UI to avoid stale display on tab switch
- Auto-Yes: fix disable-all to properly disable all agents (not just default claude)
- Test: make session-cleanup tests resilient to mock reset timing in CI
- bin/commandmate.js: add execute permission
- Logging: standardize logger action strings to
module:actionformat - Auto-Yes: extract
filterCompositeKeysByWorktreeshared utility for DRY compliance - Auto-Yes: rename state/poller ID functions to
CompositeKeysfor naming clarity - Release skill: use git worktree + commandmatedev delegation
0.4.10 - 2026-03-19
- CLI: implement base commands for agent orchestration — ls, send, wait, respond, capture, auto-yes (Issue #518)
- CLI: add sessionStatus to wait completion detection (Issue #520)
- Docs: CLI operations guide (Japanese and English)
- MARP: prevent slide reset on file content polling
- CLI: improve timeout and elapsed time display
0.4.9 - 2026-03-16
- Sidebar: branch sync button to sidebar header (Issue #506)
- Sidebar: colored folder icons for repository group headers (Issue #504)
- File panel: in-file link navigation and tab UI improvements (Issue #505)
- Mobile: open external links from HTML preview in new browser tab (Issue #505)
- Auto-Yes: prioritize prompt detection over thinking check
- Auto-Yes: prevent dual response and status instability (Issue #501)
- Auto-Yes: prevent client-side duplicate response when server poller is active
- File panel: tab overflow, dropdown click, and link handling issues (Issue #505)
- Markdown preview: stabilize DOM to make links clickable (Issue #505)
- Message list: stabilize ReactMarkdown plugin arrays and callback refs
- Sidebar: replace color dot with colored folder icon for repository identification
- Sync: include DB-registered repositories in worktree sync
- Auto-Yes: implement 7-item polling performance improvements (Issue #499)
- Sidebar: improve parseGroupCollapsed testability and add comprehensive tests
0.4.8 - 2026-03-14
- HTML file rendering in file panel with sandboxed iframe preview (Issue #490)
HtmlPreviewcomponent with configurable sandbox levels- HTML extension detection config
- Insert-to-message from history and memo cards (Issue #485)
- Copy content directly into message input from ConversationPairCard and MemoCard
- Codex custom skills loader from
.codex/skills/directory (Issue #166)- Codex custom prompts and
.systemskills support - Slash command format utility
- Codex custom prompts and
- Prompt detector: detect long confirmation prompts with commit messages
- Prompt detector: prevent diff line numbers from corrupting Codex prompt detection
- Status detector: detect Codex TUI idle prompt above padding gap
- Codex: improve TUI status detection and prompt detection
- HTML preview: force iframe re-mount on sandbox level change
0.4.7 - 2026-03-13
- OpenCode TUI selection list navigation support (Issue #473)
- Detect prompt state in OpenCode TUI content area
- NavigationButtons for TUI selection lists
- Image file attachment for message input (Issue #474)
- Image attachment UI integrated into MessageInput
- Mobile: split message input into two rows
- Claude CLI selection list prompt detection with NavigationButtons
- OpenCode: selection list pattern, mobile layout overlap, and button responsiveness
- Build: remove logger imports from auth.ts and selected-agents-validator (client bundle compatibility)
- Logger: fix remaining console.error in conversation-logger
- Logger: migrate console.log/warn/error to structured logger (#480)
- TODO/FIXME markers cleanup (#482)
- Large file splitting into smaller modules (Issue #479)
- Phase 1: split schedule-manager, FileTreeView, MarkdownEditor
- Phase 2: split 5 large files into smaller modules
- Phase 3: split db.ts and response-poller.ts
- lib/ directory restructuring (Issue #481)
- Phase 1-7: reorganize into db/, tmux/, security/, detection/, session/, polling/, git/ groups
- Add @deprecated compatibility layer for old import paths
0.4.6 - 2026-03-11
- File auto-update polling for external change detection (Issue #469)
useFilePollinghook with visibility-change lifecycle managementuseFileContentPollinghook with If-Modified-Since/304 supportuseFileContentSearchshared search hookFileSearchBarshared componentfile-polling-config.tsfor polling interval constants- File tree and content auto-refresh when agent modifies files
- Auto-Yes: add retry expiry to prevent permanent duplicate prompt blocking
- Codex: detect approval prompts with wrapped preview lines
- Codex: handle long wrapped approval options
- Sidebar: add fallback navigation when Next.js router.push silently fails
- File panel: extract duplicated search logic into shared hook and component
0.4.5 - 2026-03-10
- Persist active CLI tool tab selection via localStorage
- Codex: detect approval prompts by expanding detection window and skipping collapsed lines
- Codex: skip update notification instead of triggering npm install
- Codex: polling-based init with trust dialog and update notification handling
- Parallelize CLI tool status detection, git commands, and initial data fetch
0.4.4 - 2026-03-10
- tmux control mode transport for live terminal interaction (Issue #460)
SessionTransportinterface abstractionPollingTmuxTransportwrapping existing send-keys/capture-paneControlModeTmuxTransportwith live output streaming via WebSocketTmuxControlClient,TmuxControlParser,TmuxControlRegistry- Terminal page migration to control-mode streaming
- Feature flag (
tmux-control-mode-flags.ts) and metrics tracking
- Gemini CLI model selection dialog detection with description lines between options
- Codex prompt detection: skip unreasonably large option numbers
- OpenCode: use full output for prompt detection to support long prompts
- OpenCode: strip scrollbar character in stripBoxDrawing for status detection
- Gemini CLI: strip ANSI codes and wait for prompt before sending messages
- Prompt detector: tolerate garbage prefix and single-gap in option detection
- CLI patterns: support new Gemini CLI prompt format with placeholder text
- Prompt detector: tolerate garbage chars between indicator and option number
- Prompt detector: handle missing period in tmux capture-pane option lines
- docs: reposition CommandMate as "a local control plane for agent CLIs" instead of "IDE for issue-driven AI development" (#457)
- Updated README.md hero copy, sub copy, and section ordering
- Updated docs/ja/README.md with corresponding Japanese translations
- Updated package.json description and keywords
- Updated src/app/page.tsx hero copy
0.4.3 - 2026-03-08
- Reset hljs padding in CodeViewer to fix line height issue
0.4.2 - 2026-03-08
- Terminal text search with highlight and navigation (Issue #47)
- TerminalSearchBar component with match count and prev/next buttons
- File content search with line highlighting in file panels
- Mobile search UX with overlay highlight and header buttons
- Git tab with commit history and diff viewer (Issue #447)
- GitPane with commit log, diff display, and collapsible sections
- Git API endpoints (log, diff, show)
- Sidebar repository-based grouping with collapse/expand (Issue #449)
- useLocalStorageSync hook extraction
- File content search in PC file panel (Issue #47)
- Default selected agents changed to include Gemini (claude, codex, gemini)
- Sidebar branch name alignment regardless of agent count
- Mobile CLI tool tabs limited to 2 agents
- Mobile agent selection clamped to maxAgents (max 2)
- File viewer line number alignment on mobile with table layout
- Detailed module descriptions extracted from CLAUDE.md to docs/module-reference.md
- Branch strategy documentation updated to include develop branch
0.4.1 - 2026-03-06
- Tabbed split file panel replacing desktop file viewer modal (Issue #438)
- Code highlighting, MARP slide rendering, fullscreen mode, path copy
- Line numbers in code viewers and markdown editor
- File tab persistence to localStorage per worktree
- Content copy buttons for file panels
- Show description next to branch name in PC header
- Persist draft message input across worktree switches
- Allow up to 4 agents on PC, keep 2 on mobile
- File panel XSS, sandbox escape, and edge case hardening (Issue #438)
- Encode file paths and reset MARP slide state
- Center placeholder text vertically in message input
- Move CLI tool tabs into terminal pane header (Issue #438)
- Move AutoYesToggle to CLI tool tab bar (Issue #438)
- Narrow left pane initial width for 1:2:2 layout ratio (Issue #438)
- Add --port option and stop guidance to rebuild skill
0.4.0 - 2026-03-05
- Comprehensive dark mode support (Issue #424)
- Dark mode foundation with cyan accent migration
- Mobile header, tab bar, detail views, sidebar, editor components
- AutoYes toggle/confirm dialog, home, CMATE tabs, slash commands, navigation
- Resource leak prevention for long-running servers (Issue #404)
- Tmux capture cache with TTL, singleflight, and N+1 elimination (Issue #405)
- Schedule sync performance with mtime caching and batch upsert (Issue #409)
- Server log rotation in build-and-start.sh (Issue #403)
- README repositioned around issue-driven AI development messaging (Issue #433)
- Process stop logic hardened with PID validation and graceful shutdown (Issue #401)
- Dark mode text contrast in AutoYes confirm dialog (Issue #424)
- Dark mode support for MobilePromptSheet
- Async-ify CMATE parser synchronous I/O to unblock event loop (Issue #406)
- Dynamic import for TerminalComponent and MarkdownEditor (Issue #410)
- React memo/useCallback/useMemo to prevent unnecessary re-renders (Issue #411)
- Suppress duplicate prompt-detector log output (Issue #402)
- Status detector promptDetection caching (Issue #408)
0.3.6 - 2026-03-03
- LM Studio provider support for OpenCode configuration (Issue #398)
- Parallel model fetching from Ollama and LM Studio
- Dynamic provider configuration with zero-provider skip
- Auto-save mode toggle for Markdown editor (Issue #389)
- 3-second debounce, save state indicator, error fallback
- Prevent credential leakage and same-origin trust break in proxy (Issue #395)
- Sensitive request/response header filtering (cookie, authorization, CORS, CSP, etc.)
- Internal URL information removal from WebSocket messages
- Prevent RCE/shell injection in terminal and capture APIs (Issue #393)
exec()→execFile()migration in tmux module (all 9 functions, 11 call sites)- Input validation for terminal/capture API endpoints
sendSpecialKey()with allowlist-based runtime validation
- Prevent symlink traversal in file APIs (Issue #394)
resolveAndValidateRealPath()with realpathSync-based defensecheckPathSafety()DRY helper for dual validation
- Prevent relative path bypass in clone customTargetPath validation (Issue #392)
resolveCustomTargetPath()wrapper with validateWorktreePath integration
- Polling overwriting checkbox state during agent settings editing (Issue #391)
isEditingstate guard andselectedAgentsRefsame-value skip
- Dark background fallback for unspecified-language code blocks (Issue #390)
0.3.5 - 2026-03-01
- OpenCode as 5th CLI tool with ICLITool implementation (Issue #379)
- 2-layer TUI response capture for complete output (alternate screen handling)
- ANSI/box-drawing stripping and extraction start fix
- Slash commands, status detection, and response saving
- Scroll to top button for terminal pane
disableAutoFollowfor TUI-based tools
- QR code login for mobile access via ngrok (Issue #383)
QrCodeGeneratorcomponent with URL fragment-based token deliveryuseFragmentLoginhook for automatic token extraction- Security hardening for QR login flow
- OpenCode response detection,
┃stripping, and duplicate prevention - OpenCode terminal scroll issues with TUI tools
- QR code S001 bypass, autoLoginError clearing, and URL trailing slash
0.3.4 - 2026-02-28
- vibe-local
--context-windowsetting for Ollama context window size (Issue #374) - AGENTS.md for Codex workflow guidance
- Cache-Control: no-store header to API routes
- Proxy route pathPrefix preservation for basePath-configured apps (Issue #376)
- Codex CLI prompt detection support (U+203A
›indicator) (Issue #373)- Early prompt detection for Codex in response-poller
- Prompt detection result carried through ExtractionResult to avoid truncated re-detection
- TUI indentation and buffer reset handling
- Mobile safe-area-inset-top in fixed elements
- Mobile main content padding-top increased for header visibility
- Mobile CMATE tab header visibility on worktree page
0.3.3 - 2026-02-26
- Agent settings feature with multi-CLI tool support (Issue #368)
AgentSettingsPanecomponent with checkbox UI for selecting up to 2 CLI tools- Gemini CLI support with interactive REPL mode and trust folder auto-handling
- vibe-local (Ollama) CLI support with interactive REPL mode and model selection
selected-agents-validator.tsfor agent selection validation- Dynamic terminal tabs based on selected agents
- DB migration #19:
selected_agentscolumn in worktrees table - PATCH API for persisting agent selection per worktree
- Ollama model list API (
/api/ollama/models) - CMATE schedule execution support for Gemini and vibe-local
stripBoxDrawing()for Gemini CLI box-bordered prompt detection- CLI tool display names centralized via
getCliToolDisplayName()
- Cache-Control: no-store header added to API routes
- Worktree patch validation and agent settings sync hardened
- Gemini CLI box-bordered prompt detection with
stripBoxDrawing()
- README optimized for GitHub star conversion
- Feature comparison tables updated with Token Authentication, Scheduled Execution, and Remote Control
0.3.2 - 2026-02-24
- CMATE schedule execution feature (Issue #294)
- CMATE.md-based schedule definition with cron syntax
- Claude CLI executor with permission support (
--permission-mode) - Execution log viewer with Message/Response detail and schedule name display
- CMATE setup/validate button in FileTreeView toolbar
- Step-by-step setup guide for empty schedules state
- Environment variable sanitization for secure execution
- i18n support (en/ja) for schedule UI
- CMATE schedules user guide documentation (ja/en)
- Mobile tab renamed from "Notes" to "CMATE"
- CLAUDE_PERMISSIONS corrected to match
claudeCLI--permission-modevalues - Disabled schedules now filtered from active execution
- Header column validation added to CMATE.md validator
- Tree API response parsing fixed (object instead of array)
- Executor hanging prevention with CLI-specific args support
0.3.1 - 2026-02-23
- False negative in
isSessionHealthy()for recovered sessions (Issue #354)- Prevent healthy sessions from being incorrectly marked as unhealthy after recovery
0.3.0 - 2026-02-22
- Token authentication and HTTPS support (Issue #331)
CM_AUTH_TOKENfor bearer token authentication- HTTPS with self-signed or custom certificate support
- Login page UI with token input
- AuthContext and middleware for Edge Runtime compatibility
- Logout button with server-side auth status
- Security documentation for token auth and HTTPS setup
- IP address/CIDR restriction for HTTP and WebSocket access (Issue #332)
CM_ALLOWED_IPSenvironment variable for IP whitelist- CIDR notation support for subnet ranges
- 401 redirect handling in API client with polling stop
- Skills loader: display
.claude/skillsin slash command selector (Issue #343)- YAML frontmatter parsing with regex fallback
- JSDoc documentation and TODO annotations per design policy
- Auto-yes-manager refactored: decomposed
pollAutoYes()into focused functions (Issue #323)- Removed misleading type assertion in test
- README rewritten with pain-first narrative elevator pitch
- vitest updated to 4.0.16
- SKILL.md YAML frontmatter parse errors with quoted values (Issue #351)
- Auth redirect handling in API client and polling stop on 401
- Login page flicker eliminated by using AuthContext instead of async status fetch
- LogoutButton flicker eliminated by using server-side auth status
- next-intl v4 SSR timeZone configuration
- Middleware made Edge Runtime compatible
- Server TypeError prevention in handleRequestImpl on Node.js 19+
- Slash command regex fallback for YAML-unfriendly SKILL.md frontmatter
0.2.13 - 2026-02-20
- Memo card copy to clipboard functionality (Issue #321)
- Prompt response extraction limited to
lastCapturedLineonwards to prevent stale data (Issue #326)
0.2.12 - 2026-02-20
- Auto-Yes stop condition with regex pattern matching (Issue #314)
- Custom regex pattern input to auto-stop when output matches
- Regex tips tooltip for pattern guidance
- Delta-based stop condition check to prevent false triggers
AutoYesStopReasonmoved to shared config
- Desktop demo GIF, mobile FAQ, and Cloudflare Tunnel guide in README
- Test environment NODE_ENV isolation (Issue #304)
NODE_ENV=testenforced in vitest config and test scripts- Infinite re-render loop fix in
useLocalStorageState process.envcast to avoid read-only NODE_ENV type error
- README rewritten with "Mobile Dev Cockpit" positioning
0.2.11 - 2026-02-19
- MP4 video file upload and browser playback support (Issue #302)
- Video security validation aligned with image upload pattern
- Root-level file/directory creation toolbar (Issue #300)
- Dark mode support for empty state buttons
- Path encoding fix for special characters
- Session stability improvements with duplicate prevention (Issue #306)
- JSDoc improvements, constant extraction, DRY/ISP principles applied
- npm keywords for package discoverability
- Clone basePath now uses
CM_ROOT_DIRinstead of hardcoded/tmp/repos(Issue #308) - iPad layout: unified z-index system, swipe/scroll separation, layout fixes (Issue #299)
- Unreachable code fix in MarkdownEditor
0.2.10 - 2026-02-17
- Prompt-response API fallback for promptType mismatch (Issue #287)
promptType/defaultOptionNumbersent from client for server-side re-verification fallbackisClaudeMultiChoicebroadened for type mismatch edge cases- User input prompt barrier to prevent false positive detection
prompt-answer-sender.tsshared module to eliminate cursor-key logic duplicationprompt-response-body-builder.tsshared utility for DRY request body construction
- Slash command selector re-display during free input mode (Issue #288)
isFreeInputModeflag prevents selector from re-appearing after custom command input- Enter key interception fix and filter text carry-over to free input mode
- Mobile send button guard during free input mode
- README improved as project landing page with complete CLI command reference (Issue #286)
0.2.9 - 2026-02-15
- File move/rename feature with
MoveDialogcomponent (Issue #162)- Context menu "Move/Rename" option for files and directories
- Path validation and overwrite prevention
- File creation date (birthtime) display in
FileViewerheader and mobile view (Issue #162)date-utils.tswith locale-aware formatting
- Content copy button in
MarkdownEditortoolbar (Issue #162)useFileOperationshook for file operation logic extraction
0.2.8 - 2026-02-14
- Update check API fetch caching issue with
cache: 'no-store'(Issue #278) - Update notification indicator dot on Info tab and mobile tab bar (Issue #278)
NotificationDotreusable component for visual update alerts
0.2.7 - 2026-02-14
- Claude CLI session recovery: cache invalidation, health check, and CLAUDECODE env removal (Issue #265)
clearCachedClaudePath()for automatic recovery on CLI updateisSessionHealthy()/ensureHealthySession()for broken session detection and recreationsanitizeSessionEnvironment()to remove CLAUDECODE environment variablegetCleanPaneOutput()common helper andisValidClaudePath()validation- Session error pattern detection via
CLAUDE_SESSION_ERROR_PATTERNS/CLAUDE_SESSION_ERROR_REGEX_PATTERNS
- Preserve input content on browser tab visibility change (Issue #266)
- Input field content no longer cleared when switching browser tabs
- Refactored
WorktreeDetailRefactoredcomponent for DRY compliance (Issue #266)- Extracted shared hooks and components
0.2.6 - 2026-02-14
- Update-check API route static prerender error (Issue #270)
- Added
force-dynamicexport to prevent Next.js static generation at build time
- Added
0.2.5 - 2026-02-14
- User feedback links in Info modal (Issue #264)
FeedbackSectioncomponent with bug report, feature request, question links- Desktop (InfoModal) and mobile (MobileInfoContent) support
- i18n support (en/ja)
commandmate issueCLI command with gh CLI integration (Issue #264)commandmate issue create --bug/--feature/--questionfor templated issue creationcommandmate issue search <query>for issue searchcommandmate issue listfor issue listing
commandmate docsCLI command for RAG-like documentation access (Issue #264)commandmate docs --section <name>for specific documentation sectionscommandmate docs --search <query>for documentation searchcommandmate docs --allfor full documentation output
- AI tool integration guide displayed after
commandmate init(Issue #264) - GitHub URL constants centralized in
src/config/github-links.ts(Issue #264)
- docs-reader path resolution for built CLI (Issue #264)
0.2.4 - 2026-02-13
- Version update notification feature (Issue #257)
UpdateNotificationBannercomponent for new version alertsVersionSectioncomponent for Info screenuseUpdateCheckhook andversion-checker.tslibrary/api/app/update-checkAPI endpoint
- Multiple choice prompt detection for wrapped questions (Issue #256)
isQuestionLikeLine()now handles multi-line question wrapping (trailing。/.)- Keyword-based detection for non-question prompts (model selection, etc.)
- Added
questionBlockScan()for multi-line question block analysis
- Mobile background resume error "Error loading worktree" (Issue #246)
- Added
visibilitychangeevent listener for automatic data recovery - Error state reset and data re-fetch on page visibility restore
- Added
0.2.3 - 2026-02-13
- i18n support with next-intl for English and Japanese (Issue #124)
- Locale-based routing (
/en,/ja) - Document translations and integration/e2e tests
- Locale-based routing (
- Log export feature with LogViewer (Issue #11)
LogViewercomponent in Info screen (desktop modal & mobile)withLogging()API logger middleware applied to log routeslog-config.tsfor centralized LOG_DIR constant- Log-manager regression tests
- Prompt instructionText display in active prompt UI (Issue #235)
PromptPanelandMobilePromptSheetshow instruction text- Complete prompt output preserved with
rawContentfield
- Full prompt block included in instructionText for multiple_choice prompts (Issue #235)
- Full output passed to detectPrompt in status-detector for long prompts (Issue #235)
- next-intl middleware removed to fix redirect loop with custom server (Issue #124)
- Image and document links corrected in README files (Issue #124)
- Rebuild skill branch specification to prevent worktree misexecution
- Dead code: claude-poller, terminal-websocket, WorktreeDetail legacy code, simple-terminal (Issue #237)
0.2.2 - 2026-02-10
No changes recorded.
0.2.1 - 2026-02-10
No changes recorded.
0.2.0 - 2026-02-08
- BREAKING: Removed
CM_AUTH_TOKENauthentication mechanism (Issue #179)src/middleware.tsdeleted (Next.js authentication middleware)CM_AUTH_TOKEN,NEXT_PUBLIC_CM_AUTH_TOKEN,MCBD_AUTH_TOKENenvironment variables are no longer used- Existing AUTH_TOKEN settings are silently ignored (no errors, no effect)
- External access now requires reverse proxy authentication (Nginx + Basic Auth, Cloudflare Access, Tailscale)
commandmate initandcommandmate startshow reverse proxy warning whenCM_BIND=0.0.0.0- ENV_MAPPING reduced from 8 to 7 entries
- Client-side
api-client.tsno longer sends Authorization header
- Codex CLI support (Issue #4)
- Codex tab in WorktreeDetail
- Per-CLI tool status indicators in sidebar and tabs
- Individual session termination with confirmation dialog
- Mobile CLI tab switcher inline with Auto Yes toggle
- CLI tool-specific slash command filtering (Claude: 16, Codex: 10)
- Response saving fix for tmux buffer empty line padding
- Multiline message support via tmux
paste-buffer(Issue #163)sendTextViaBuffer()for accurate multiline text delivery- Single-line uses
sendKeys, multiline usespaste-buffer
- App version display in info tab (Issue #159)
- Desktop (InfoModal) and mobile (MobileInfoContent) support
- Build-time
NEXT_PUBLIC_APP_VERSIONfrompackage.json
- New security guide:
docs/security-guide.md(Issue #179)- Threat model for localhost vs external access
- Nginx + Basic Auth configuration example
- Cloudflare Access and Tailscale setup instructions
- Migration steps from CM_AUTH_TOKEN
- Security checklist for external deployment
src/cli/config/security-messages.tswith shared REVERSE_PROXY_WARNING constant (Issue #179)
- Auto-Yes false positive detection of numbered lists as multiple_choice prompts (Issue #161)
- Two-pass
❯detection to prevent misidentification - Thinking state pre-check skips prompt detection
- Consecutive number validation as defensive measure
- Prompt re-verification before sendKeys in prompt-response API
- Two-pass
- Status display inconsistency: UI showing "running"/"waiting" when CLI is idle (Issue #180)
- Consolidated inline logic into
detectSessionStatus()instatus-detector.ts - 15-line windowing to prevent past prompt false positives
- Consolidated inline logic into
- Multiline option text detection in multiple choice prompts (Issue #181)
- Deleted repositories reappearing after Sync All (Issue #190)
enabled=0exclusion marking on delete- Excluded repository list UI with restore button
- New APIs:
GET /api/repositories/excluded,PUT /api/repositories/restore
- File tree directory expand state lost after file operations
CM_AUTH_TOKEN/MCBD_AUTH_TOKENenvironment variable support (Issue #179)NEXT_PUBLIC_CM_AUTH_TOKEN/NEXT_PUBLIC_MCBD_AUTH_TOKENclient-side token support (Issue #179)isAuthRequired()function fromsrc/lib/env.ts(Issue #179)generateAuthToken()method fromEnvSetupclass (Issue #179)CM_AUTH_TOKENmasking patterns from logger and security-logger (Issue #179)
- Removed broken authentication that exposed tokens in client-side JavaScript (Issue #179)
- Added reverse proxy authentication recommendation for external deployments (Issue #179)
0.1.12 - 2026-02-04
No changes recorded.
0.1.11 - 2026-02-04
- Server-side Auto-Yes polling feature (Issue #138)
src/lib/auto-yes-manager.tsfor centralized polling management- Background polling when browser tab is inactive
- Exponential backoff after 5 consecutive errors (max 60s)
- Duplicate response prevention with
lastServerResponseTimestamp - MAX_CONCURRENT_POLLERS=50 limit for DoS prevention
- Git Worktree parallel development environment (Issue #136)
commandmate start --issue {issueNo} [--auto-port]for issue-specific serverscommandmate stop/status --issue {issueNo}for worktree management- Port range 3001-3100 (main server uses 3000)
- Issue-specific DB:
~/.commandmate/data/cm-{issueNo}.db /worktree-setupand/worktree-cleanupskills
- DB path resolution fix for global installs (Issue #135)
- Consistent DB path via
getEnv().CM_DB_PATH - Auto-migration from legacy DB paths
- System directory protection
- Consistent DB path via
- Terminal scroll behavior on worktree switch (Issue #131)
- Uses instant scroll for worktree changes
- Smooth scroll only for new messages in same worktree
- Empty state now shows New File/New Directory buttons (Issue #139)
- Ready status detection for prompts with recommended commands (Issue #141)
- Worktree sync now removes deleted worktrees from DB
- worktreeID format validation (command injection prevention)
- Issue number validation (1-999999 range)
- Branch name whitelist validation (
[a-zA-Z0-9_/-]) - Graceful shutdown stops all auto-yes pollers
0.1.10 - 2026-02-02
- Git branch visualization feature (Issue #111)
- Display current branch name in worktree detail header
- Show warning when current branch differs from session start branch
- Mobile support for branch information display
- Automatic refresh (active: 2s, idle: 5s)
- Migration #15: added
initial_branchcolumn to worktrees table - New
src/lib/git-utils.tsmodule withgetGitStatus()function BranchMismatchAlertcomponent for branch mismatch warnings
- Repository filter UI now displays even when only one repository exists (Issue #129)
- Branch visualization uses
execFileinstead ofexecto prevent command injection - 1 second timeout for git commands to prevent DoS
- React auto-escaping for XSS prevention in branch name display
0.1.9 - 2026-02-02
- Foreground mode (
commandmate start) now loads .env file (Issue #125 follow-up)- v0.1.8 only fixed daemon mode, foreground mode was missing .env loading
- Now both modes load .env from
~/.commandmate/.envfor global installs - Security warnings for external access also added to foreground mode
0.1.8 - 2026-02-02
- Global install CLI commands now load .env from correct location (Issue #125)
commandmate start/stop/statususegetEnvPath()andgetPidFilePath()- .env loaded from
~/.commandmate/.envfor global installs - PID file created at
~/.commandmate/.commandmate.pid - Path traversal protection with symlink resolution
- Security warnings for external network access (CM_BIND=0.0.0.0)
- Fallback to process.env when .env loading fails
- Added path traversal protection in getConfigDir() (OWASP A01:2021)
- Security warning when server is exposed externally without authentication (OWASP A05:2021)
0.1.7 - 2026-02-02
- Interactive mode for
commandmate initcommand (Issue #119)- TTY detection for automatic interactive/non-interactive mode selection
- Prompts for CM_ROOT_DIR, CM_PORT, external access, CM_DB_PATH
--defaultsflag for CI/CD environments (non-interactive)- Tilde expansion for paths (
~/repos→/Users/xxx/repos) - Configuration summary display after setup
- Global install:
.envsaved to~/.commandmate/ - Local install:
.envsaved to current directory
0.1.6 - 2026-02-02
- Documentation updated to use
npm install -g commandmateas primary setup method (Issue #114)- New CLI setup guide at
docs/user-guide/cli-setup-guide.md - README.md Quick Start uses npm global install
- git clone method moved to "Developer Setup" section
--portoption documented in CLI commands table
- New CLI setup guide at
- iPad fullscreen mode now uses Portal to cover full viewport (Issue #104)
- Test z-index expectations updated from 40 to 55 to match Z_INDEX.MAXIMIZED_EDITOR
- Sidebar toggle animation uses transform instead of width for GPU acceleration (Issue #112)
- Improves performance on iPad
- Added SIDEBAR constant (30) to z-index.ts
- Pre-built JS compilation for server.ts enables npm CLI without TypeScript compilation (Issue #113)
0.1.5 - 2026-02-01
- Added
repositoryfield to package.json for npm provenance verification
0.1.4 - 2026-02-01
- Re-enabled
environment: npm-publishin publish workflow- npm Trusted Publisher requires exact match of environment name
0.1.3 - 2026-02-01
- npm publish workflow now upgrades npm to ^11.5.1 for OIDC Trusted Publishers support
- Node 20 ships with npm 10.8.2, but Trusted Publishers requires npm >= 11.5.1
0.1.2 - 2026-02-01
- Security audit job in PR CI workflow (ci-pr.yml)
- Catches vulnerabilities before merge/release
- Updated Next.js to 14.2.35 (latest 14.x patch)
- Updated eslint-config-next to 14.2.35
- Changed audit-level from
hightocriticalin CI/publish workflows- Allows high-severity vulnerabilities that require breaking changes to fix
- Next.js 15+ migration tracked separately
- Added npm audit to PR checks to catch vulnerabilities early
0.1.1 - 2026-02-01
- npm CLI support (
npm install -g commandmate) (Issue #96)commandmate init- Initialize configurationcommandmate start- Start server (foreground or daemon mode)commandmate stop- Stop servercommandmate status- Show server status
- File tree search functionality (Issue #21)
- Name search with real-time filtering (300ms debounce)
- Content search via server API (5s timeout)
- Search result highlighting
- Auto-expand parent directories of matched files
- Desktop/Mobile responsive design
- Mermaid diagram rendering in markdown preview (Issue #100)
- Image file viewer with security validation (Issue #95)
- File upload feature with security validation (Issue #94)
- Markdown editor with XSS protection (Issue #49)
- Markdown editor display improvements (Issue #99)
- pm-auto-design2dev slash command for automated workflow
- CLI now uses package directory instead of cwd for npm run
- Search filtering applied to nested tree items
- File tree refresh after operations
- Markdown preview code block styling
- ReDoS prevention (no regex on server-side search)
- Relative paths only in search results
- Magic byte validation for file uploads
- SVG XSS protection for image viewer
- Mermaid securityLevel='strict' setting
- Preflight check script
scripts/preflight-check.shfor dependency validation (Issue #92)- Checks Node.js (v20+), npm, tmux, git, openssl
- Claude CLI check with warning (optional)
- Help option (
-h/--help)
- Interactive environment setup script
scripts/setup-env.sh(Issue #92)- Generates
.envwith CM_* variables - Auto-generates auth token for external access
- Backs up existing
.envto.env.backup.{timestamp} - Help option (
-h/--help)
- Generates
scripts/build-and-start.shnow includes database initialization (Issue #92)- Creates data directory
- Runs
npm run db:initbefore build - Help option (
-h/--help)
scripts/setup.shnow uses preflight-check.sh, setup-env.sh, and build-and-start.sh (Issue #92)- Integrated dependency checking
- Interactive environment configuration
- Streamlined 4-step setup process (preflight → npm install → env → build & start)
- Application starts automatically after setup
.env.production.exampleupdated to use CM_* variables (Issue #92)- Migrated from MCBD_* to CM_* format
- Added logging configuration options
- Added legacy support documentation
- Updated README.md Quick Start with simplified setup (Issue #92)
- Updated docs/DEPLOYMENT.md with new setup scripts (Issue #92)
- Updated docs/internal/PRODUCTION_CHECKLIST.md with CM_* variables (Issue #92)
0.1.0 - 2026-01-30
- BREAKING: GitHub repository renamed from
Kewton/MyCodeBranchDesktoKewton/CommandMate(Issue #80) - All documentation links updated to new repository URL (Issue #80)
- Project branding updated from MyCodeBranchDesk to CommandMate (Issue #75)
- UI titles and headers now display "CommandMate"
- Documentation updated with new branding terminology
- Removed "chat" terminology that caused confusion (now uses "Message/Console/History")
- BREAKING: package.json name changed from
mycodebranch-desktocommandmate(Issue #77) - BREAKING: Env interface properties renamed from
MCBD_*toCM_*(Issue #77)MCBD_ROOT_DIR->CM_ROOT_DIRMCBD_PORT->CM_PORTMCBD_BIND->CM_BINDMCBD_AUTH_TOKEN->CM_AUTH_TOKENDATABASE_PATH->CM_DB_PATH
- .env.example updated to use CM_* environment variables as primary (Issue #77)
- All shell scripts updated to use CommandMate branding and CM_* variables (Issue #77)
- E2E tests updated to test for CommandMate heading (Issue #77)
- Migration guide for existing users (
docs/migration-to-commandmate.md) (Issue #79)- Complete environment variable mapping (9 variables)
- systemd service migration instructions
- Claude Code settings update instructions
- Docker environment migration guide
- Troubleshooting section
- Environment variable fallback support for backwards compatibility (Issue #76)
- New
CM_*prefix supported alongside legacyMCBD_*prefix - Deprecation warnings logged when legacy names are used (once per key)
- All 8 environment variables support fallback:
CM_ROOT_DIR/MCBD_ROOT_DIRCM_PORT/MCBD_PORTCM_BIND/MCBD_BINDCM_AUTH_TOKEN/MCBD_AUTH_TOKENCM_LOG_LEVEL/MCBD_LOG_LEVELCM_LOG_FORMAT/MCBD_LOG_FORMATCM_LOG_DIR/MCBD_LOG_DIRCM_DB_PATH/MCBD_DB_PATH
- Client-side fallback for
NEXT_PUBLIC_CM_AUTH_TOKEN/NEXT_PUBLIC_MCBD_AUTH_TOKEN
- New
CM_AUTH_TOKENmasking pattern in logger for security- Unit tests for environment variable fallback functionality
MCBD_*environment variables - useCM_*instead (will be removed in next major version)MCBD_ROOT_DIR->CM_ROOT_DIRMCBD_PORT->CM_PORTMCBD_BIND->CM_BINDMCBD_AUTH_TOKEN->CM_AUTH_TOKENMCBD_LOG_LEVEL->CM_LOG_LEVELMCBD_LOG_FORMAT->CM_LOG_FORMATMCBD_LOG_DIR->CM_LOG_DIRMCBD_DB_PATH->CM_DB_PATH
NEXT_PUBLIC_MCBD_AUTH_TOKEN->NEXT_PUBLIC_CM_AUTH_TOKEN