Skip to content

Latest commit

 

History

History
1205 lines (1000 loc) · 55.7 KB

File metadata and controls

1205 lines (1000 loc) · 55.7 KB

Changelog

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.

[0.5.6] - 2026-04-27

Added

  • PDF: PDFファイルプレビュー機能を追加(Blob URL + iframe sandbox方式) (Issue #673)

Fixed

  • 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 ヘッダを除去

Refactored

  • PDF: normalizeExtension の共有化と冗長コメントの整理 (Issue #673)

[0.5.5] - 2026-04-17

Added

  • 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)

Fixed

  • 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)

Refactored

  • Assistant: インストール済みツールAPIを追加しCLIツールセレクタのUXを改善 (Issue #649)
  • Sidebar: BranchTooltipサブコンポーネントを抽出し保守性コメントを整理 (Issue #651)
  • Memo: MemoPaneのimport順を統一 (Issue #652)

Style

  • Assistant: AssistantChatPanelのUIレイアウトとビジュアルデザインを調整 (Issue #649)

Tests

  • Assistant: Chatタブおよびcontext-builder変更に合わせて既存テストを更新 (Issue #649)

[0.5.4] - 2026-04-12

Added

  • Editor: YAMLファイル編集と拡張子選択ダイアログを追加 (Issue #646)
  • DB: リポジトリにdisplay_name(カスタム別名)を追加 (Issue #642)
  • Markdown: HTML imgタグの相対パスとwidth/height属性をサポート
  • Upload: 画像アップロード上限を20MBに引き上げ、マークダウンビューアで相対画像パスを解決

Fixed

  • Detection: React error #31 と Claude /model 選択リスト検出を修正 (Issue #648)

Refactored

  • Editor: ファイル編集機能のコード品質改善 (Issue #646)
  • Repository: display_name保存時のエラーメッセージ解決ロジックの重複排除 (Issue #644)

Tests

  • Test: ファイルサイズテストを5MBから20MBに更新し設定変更に追従

[0.5.3] - 2026-04-05

Added

  • Report: レポート生成ステータスをUIとCLIで可視化 (Issue #638)
  • CLI: report コマンドを追加(日次レポートの生成・表示・一覧表示) (Issue #636)
  • Report: 日次レポートのプロンプトにGitHub Issueコンテキストを追加 (Issue #630)
  • Report: 日次レポート生成にコミットログ収集を追加 (Issue #627)

Fixed

  • Report: ステータスエンドポイントのdynamic renderingを強制 (Issue #638)
  • Report: セクション別プロンプト長制限でcommit_logとissue_contextを保持 (Issue #634)
  • Report: コミットログ収集前に無効なリポジトリをフィルタリング (Issue #632)
  • Codex: daily summary生成にツール固有パーミッションを使用 (Issue #626)

Refactored

  • Utils: JSDocの関連付け修正とタイムアウトユーティリティの整理 (Issue #627)

0.5.2 - 2026-04-04

Added

  • Review: レポートテンプレート機能を追加し、CRUD API と 3 モード生成UIを実装 (Issue #618)
  • Report: レポート本文のコピーボタンを追加

Fixed

  • Codex: /model Step 1 のモデル選択UIを selection list として検出 (Issue #622)
  • Codex: /model 選択UIを waiting status として検出 (Issue #619)
  • Detection: Codex Reasoning Level UI を multiple_choice prompt と submitMode 対応で処理

Refactored

  • Template API: 共有ヘルパーを抽出して重複を削減 (Issue #618)
  • Prompt handling: SubmitMode バリデーションヘルパーを抽出して重複を削減 (Issue #616)

0.5.1 - 2026-04-02

Added

  • Report: ユーザー指示入力とUI改善 (Issue #612)
  • Daily Summary: デイリーサマリー機能の実装 (Issue #607)
  • Sessions: ソートオプションとメッセージプレビューを追加 (Issue #606)

Fixed

  • Sessions: デフォルトソートを「最終送信(新しい順)」に変更
  • Sessions: 表示順をリポジトリ名→ブランチ名の順に変更
  • Sidebar: セッションフラグからworktreeステータスを導出し、適応型ポーリングを追加 (Issue #608)
  • Status: キャプチャ行数統一によりスピナーがreadyで停止する問題を修正 (Issue #604)

Refactored

  • Daily Summary / Sessions: ヘルパー関数を抽出し重複を削減
  • Sessions: sanitizePreviewを共有configモジュールに抽出

0.5.0 - 2026-04-02

Added

  • 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)

Fixed

  • Worktree: stale CLI tab responsesのガード処理 (Issue #602)
  • Gemini: ステータススピナーの不一致を修正
  • Gemini: スラッシュコマンドの復元
  • Commands: Codex共有スラッシュコマンドの表示修正
  • CI: lint/テストエラーの修正 (Issue #600)

Docs

  • UX Refresh設計レポート・CLAUDE.md更新 (Issue #600)

0.4.16 - 2026-04-01

Added

  • Navigation: add Left/Right keys to NavigationButtons for Copilot TUI (Issue #592)

0.4.15 - 2026-03-31

Added

  • 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

Fixed

  • 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)

Docs

  • Add Copilot model selection syntax to CMATE schedules guide (ja/en)

0.4.14 - 2026-03-29

Added

  • CLI: --model option for send command to support Copilot model switching (Issue #576)
  • Copilot: TUI response handling with deduplication and accumulated content saving (Issue #565)
    • extractCopilotContentLines / normalizeCopilotLine in 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)

Fixed

  • 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 --agent help text in send/respond/capture/auto-yes commands
  • Test: mock sendSpecialKey in base.test.ts to prevent unhandled rejection

Refactored

  • 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.stubGlobal for NODE_ENV assignment in api-client test

Changed

  • chore: bump vitest 4.1.1 → 4.1.2

0.4.13 - 2026-03-28

Added

  • 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)

Fixed

  • 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

Refactored

  • Test: improve mobile overflow test robustness with MobileContent-anchored regex matching

0.4.12 - 2026-03-24

Added

  • Timer: delayed message sending feature with configurable delay times (Issue #534)
    • timer-constants.ts with dynamic delay generation
    • timer-db.ts with full CRUD operations and cursor-based pagination
    • timer-manager.ts with globalThis singleton and setTimeout management
    • Timer API route (POST/GET/DELETE) with security validations
    • TimerPane.tsx with 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

Fixed

  • Timer: add agent selector to TimerPane registration form (#538)
  • Timer: fix flaky cleanupOldTimers boundary test with fixed timestamps

Refactored

  • 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

Added

  • 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
    • showArchived toggle in HistoryPane with localStorage persistence
  • CLI: /orchestrate command for parallel issue development lifecycle
  • CLI: /pr-merge-pipeline command for PR creation through merge automation
  • CLI: /uat-fix-loop command for UAT failure repair cycle automation

Fixed

  • 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

Refactored

  • Logging: standardize logger action strings to module:action format
  • Auto-Yes: extract filterCompositeKeysByWorktree shared utility for DRY compliance
  • Auto-Yes: rename state/poller ID functions to CompositeKeys for naming clarity
  • Release skill: use git worktree + commandmatedev delegation

0.4.10 - 2026-03-19

Added

  • 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)

Fixed

  • MARP: prevent slide reset on file content polling
  • CLI: improve timeout and elapsed time display

0.4.9 - 2026-03-16

Added

  • 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)

Fixed

  • 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

Performance

  • Auto-Yes: implement 7-item polling performance improvements (Issue #499)

Refactored

  • Sidebar: improve parseGroupCollapsed testability and add comprehensive tests

0.4.8 - 2026-03-14

Added

  • HTML file rendering in file panel with sandboxed iframe preview (Issue #490)
    • HtmlPreview component 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 .system skills support
    • Slash command format utility

Fixed

  • 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

Added

  • 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

Fixed

  • 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

Refactored

  • 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

Added

  • File auto-update polling for external change detection (Issue #469)
    • useFilePolling hook with visibility-change lifecycle management
    • useFileContentPolling hook with If-Modified-Since/304 support
    • useFileContentSearch shared search hook
    • FileSearchBar shared component
    • file-polling-config.ts for polling interval constants
    • File tree and content auto-refresh when agent modifies files

Fixed

  • 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

Refactored

  • File panel: extract duplicated search logic into shared hook and component

0.4.5 - 2026-03-10

Added

  • Persist active CLI tool tab selection via localStorage

Fixed

  • 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

Performance

  • Parallelize CLI tool status detection, git commands, and initial data fetch

0.4.4 - 2026-03-10

Added

  • tmux control mode transport for live terminal interaction (Issue #460)
    • SessionTransport interface abstraction
    • PollingTmuxTransport wrapping existing send-keys/capture-pane
    • ControlModeTmuxTransport with live output streaming via WebSocket
    • TmuxControlClient, TmuxControlParser, TmuxControlRegistry
    • Terminal page migration to control-mode streaming
    • Feature flag (tmux-control-mode-flags.ts) and metrics tracking

Fixed

  • 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

Changed

  • 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

Fixed

  • Reset hljs padding in CodeViewer to fix line height issue

0.4.2 - 2026-03-08

Added

  • 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)

Fixed

  • 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

Changed

  • 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

Added

  • 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

Fixed

  • 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

Changed

  • 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

Added

  • 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)

Changed

  • README repositioned around issue-driven AI development messaging (Issue #433)

Fixed

  • 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

Performance

  • 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

Added

  • 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

Fixed

  • 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 defense
    • checkPathSafety() 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)
    • isEditing state guard and selectedAgentsRef same-value skip
  • Dark background fallback for unspecified-language code blocks (Issue #390)

0.3.5 - 2026-03-01

Added

  • 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
    • disableAutoFollow for TUI-based tools
  • QR code login for mobile access via ngrok (Issue #383)
    • QrCodeGenerator component with URL fragment-based token delivery
    • useFragmentLogin hook for automatic token extraction
    • Security hardening for QR login flow

Fixed

  • 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

Added

  • vibe-local --context-window setting for Ollama context window size (Issue #374)
  • AGENTS.md for Codex workflow guidance
  • Cache-Control: no-store header to API routes

Fixed

  • 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

Added

  • Agent settings feature with multi-CLI tool support (Issue #368)
    • AgentSettingsPane component 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.ts for agent selection validation
    • Dynamic terminal tabs based on selected agents
    • DB migration #19: selected_agents column 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()

Fixed

  • 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()

Changed

  • README optimized for GitHub star conversion
  • Feature comparison tables updated with Token Authentication, Scheduled Execution, and Remote Control

0.3.2 - 2026-02-24

Added

  • 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"

Fixed

  • CLAUDE_PERMISSIONS corrected to match claude CLI --permission-mode values
  • 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

Fixed

  • 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

Added

  • Token authentication and HTTPS support (Issue #331)
    • CM_AUTH_TOKEN for 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_IPS environment variable for IP whitelist
    • CIDR notation support for subnet ranges
    • 401 redirect handling in API client with polling stop
  • Skills loader: display .claude/skills in slash command selector (Issue #343)
    • YAML frontmatter parsing with regex fallback
    • JSDoc documentation and TODO annotations per design policy

Changed

  • 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

Fixed

  • 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

Added

  • Memo card copy to clipboard functionality (Issue #321)

Fixed

  • Prompt response extraction limited to lastCapturedLine onwards to prevent stale data (Issue #326)

0.2.12 - 2026-02-20

Added

  • 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
    • AutoYesStopReason moved to shared config
  • Desktop demo GIF, mobile FAQ, and Cloudflare Tunnel guide in README

Fixed

  • Test environment NODE_ENV isolation (Issue #304)
    • NODE_ENV=test enforced in vitest config and test scripts
    • Infinite re-render loop fix in useLocalStorageState
    • process.env cast to avoid read-only NODE_ENV type error

Changed

  • README rewritten with "Mobile Dev Cockpit" positioning

0.2.11 - 2026-02-19

Added

  • 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

Fixed

  • Clone basePath now uses CM_ROOT_DIR instead 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

Fixed

  • Prompt-response API fallback for promptType mismatch (Issue #287)
    • promptType / defaultOptionNumber sent from client for server-side re-verification fallback
    • isClaudeMultiChoice broadened for type mismatch edge cases
    • User input prompt barrier to prevent false positive detection
    • prompt-answer-sender.ts shared module to eliminate cursor-key logic duplication
    • prompt-response-body-builder.ts shared utility for DRY request body construction
  • Slash command selector re-display during free input mode (Issue #288)
    • isFreeInputMode flag 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

Changed

  • README improved as project landing page with complete CLI command reference (Issue #286)

0.2.9 - 2026-02-15

Added

  • File move/rename feature with MoveDialog component (Issue #162)
    • Context menu "Move/Rename" option for files and directories
    • Path validation and overwrite prevention
  • File creation date (birthtime) display in FileViewer header and mobile view (Issue #162)
    • date-utils.ts with locale-aware formatting
  • Content copy button in MarkdownEditor toolbar (Issue #162)
    • useFileOperations hook for file operation logic extraction

0.2.8 - 2026-02-14

Fixed

  • 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)
    • NotificationDot reusable component for visual update alerts

0.2.7 - 2026-02-14

Fixed

  • Claude CLI session recovery: cache invalidation, health check, and CLAUDECODE env removal (Issue #265)
    • clearCachedClaudePath() for automatic recovery on CLI update
    • isSessionHealthy() / ensureHealthySession() for broken session detection and recreation
    • sanitizeSessionEnvironment() to remove CLAUDECODE environment variable
    • getCleanPaneOutput() common helper and isValidClaudePath() 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

Changed

  • Refactored WorktreeDetailRefactored component for DRY compliance (Issue #266)
    • Extracted shared hooks and components

0.2.6 - 2026-02-14

Fixed

  • Update-check API route static prerender error (Issue #270)
    • Added force-dynamic export to prevent Next.js static generation at build time

0.2.5 - 2026-02-14

Added

  • User feedback links in Info modal (Issue #264)
    • FeedbackSection component with bug report, feature request, question links
    • Desktop (InfoModal) and mobile (MobileInfoContent) support
    • i18n support (en/ja)
  • commandmate issue CLI command with gh CLI integration (Issue #264)
    • commandmate issue create --bug/--feature/--question for templated issue creation
    • commandmate issue search <query> for issue search
    • commandmate issue list for issue listing
  • commandmate docs CLI command for RAG-like documentation access (Issue #264)
    • commandmate docs --section <name> for specific documentation sections
    • commandmate docs --search <query> for documentation search
    • commandmate docs --all for 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)

Fixed

  • docs-reader path resolution for built CLI (Issue #264)

0.2.4 - 2026-02-13

Added

  • Version update notification feature (Issue #257)
    • UpdateNotificationBanner component for new version alerts
    • VersionSection component for Info screen
    • useUpdateCheck hook and version-checker.ts library
    • /api/app/update-check API endpoint

Fixed

  • 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 visibilitychange event listener for automatic data recovery
    • Error state reset and data re-fetch on page visibility restore

0.2.3 - 2026-02-13

Added

  • i18n support with next-intl for English and Japanese (Issue #124)
    • Locale-based routing (/en, /ja)
    • Document translations and integration/e2e tests
  • Log export feature with LogViewer (Issue #11)
    • LogViewer component in Info screen (desktop modal & mobile)
    • withLogging() API logger middleware applied to log routes
    • log-config.ts for centralized LOG_DIR constant
    • Log-manager regression tests
  • Prompt instructionText display in active prompt UI (Issue #235)
    • PromptPanel and MobilePromptSheet show instruction text
    • Complete prompt output preserved with rawContent field

Fixed

  • 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

Removed

  • 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

Changed

  • BREAKING: Removed CM_AUTH_TOKEN authentication mechanism (Issue #179)
    • src/middleware.ts deleted (Next.js authentication middleware)
    • CM_AUTH_TOKEN, NEXT_PUBLIC_CM_AUTH_TOKEN, MCBD_AUTH_TOKEN environment 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 init and commandmate start show reverse proxy warning when CM_BIND=0.0.0.0
    • ENV_MAPPING reduced from 8 to 7 entries
    • Client-side api-client.ts no longer sends Authorization header

Added

  • 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 uses paste-buffer
  • App version display in info tab (Issue #159)
    • Desktop (InfoModal) and mobile (MobileInfoContent) support
    • Build-time NEXT_PUBLIC_APP_VERSION from package.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.ts with shared REVERSE_PROXY_WARNING constant (Issue #179)

Fixed

  • 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
  • Status display inconsistency: UI showing "running"/"waiting" when CLI is idle (Issue #180)
    • Consolidated inline logic into detectSessionStatus() in status-detector.ts
    • 15-line windowing to prevent past prompt false positives
  • Multiline option text detection in multiple choice prompts (Issue #181)
  • Deleted repositories reappearing after Sync All (Issue #190)
    • enabled=0 exclusion 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

Removed

  • CM_AUTH_TOKEN / MCBD_AUTH_TOKEN environment variable support (Issue #179)
  • NEXT_PUBLIC_CM_AUTH_TOKEN / NEXT_PUBLIC_MCBD_AUTH_TOKEN client-side token support (Issue #179)
  • isAuthRequired() function from src/lib/env.ts (Issue #179)
  • generateAuthToken() method from EnvSetup class (Issue #179)
  • CM_AUTH_TOKEN masking patterns from logger and security-logger (Issue #179)

Security

  • 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

Added

  • Server-side Auto-Yes polling feature (Issue #138)
    • src/lib/auto-yes-manager.ts for 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 servers
    • commandmate stop/status --issue {issueNo} for worktree management
    • Port range 3001-3100 (main server uses 3000)
    • Issue-specific DB: ~/.commandmate/data/cm-{issueNo}.db
    • /worktree-setup and /worktree-cleanup skills
  • 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

Fixed

  • 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

Security

  • 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

Added

  • 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_branch column to worktrees table
    • New src/lib/git-utils.ts module with getGitStatus() function
    • BranchMismatchAlert component for branch mismatch warnings

Fixed

  • Repository filter UI now displays even when only one repository exists (Issue #129)

Security

  • Branch visualization uses execFile instead of exec to 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

Fixed

  • 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/.env for global installs
    • Security warnings for external access also added to foreground mode

0.1.8 - 2026-02-02

Fixed

  • Global install CLI commands now load .env from correct location (Issue #125)
    • commandmate start/stop/status use getEnvPath() and getPidFilePath()
    • .env loaded from ~/.commandmate/.env for 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

Security

  • 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

Added

  • Interactive mode for commandmate init command (Issue #119)
    • TTY detection for automatic interactive/non-interactive mode selection
    • Prompts for CM_ROOT_DIR, CM_PORT, external access, CM_DB_PATH
    • --defaults flag for CI/CD environments (non-interactive)
    • Tilde expansion for paths (~/repos/Users/xxx/repos)
    • Configuration summary display after setup
    • Global install: .env saved to ~/.commandmate/
    • Local install: .env saved to current directory

0.1.6 - 2026-02-02

Added

  • Documentation updated to use npm install -g commandmate as 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
    • --port option documented in CLI commands table

Fixed

  • 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

Changed

  • 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

Fixed

  • Added repository field to package.json for npm provenance verification

0.1.4 - 2026-02-01

Fixed

  • Re-enabled environment: npm-publish in publish workflow
    • npm Trusted Publisher requires exact match of environment name

0.1.3 - 2026-02-01

Fixed

  • 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

Added

  • Security audit job in PR CI workflow (ci-pr.yml)
    • Catches vulnerabilities before merge/release

Changed

  • Updated Next.js to 14.2.35 (latest 14.x patch)
  • Updated eslint-config-next to 14.2.35
  • Changed audit-level from high to critical in CI/publish workflows
    • Allows high-severity vulnerabilities that require breaking changes to fix
    • Next.js 15+ migration tracked separately

Security

  • Added npm audit to PR checks to catch vulnerabilities early

0.1.1 - 2026-02-01

Added

  • npm CLI support (npm install -g commandmate) (Issue #96)
    • commandmate init - Initialize configuration
    • commandmate start - Start server (foreground or daemon mode)
    • commandmate stop - Stop server
    • commandmate 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

Fixed

  • 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

Security

  • 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

Added

  • Preflight check script scripts/preflight-check.sh for 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 .env with CM_* variables
    • Auto-generates auth token for external access
    • Backs up existing .env to .env.backup.{timestamp}
    • Help option (-h/--help)

Changed

  • scripts/build-and-start.sh now includes database initialization (Issue #92)
    • Creates data directory
    • Runs npm run db:init before build
    • Help option (-h/--help)
  • scripts/setup.sh now 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.example updated 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

Changed

  • BREAKING: GitHub repository renamed from Kewton/MyCodeBranchDesk to Kewton/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-desk to commandmate (Issue #77)
  • BREAKING: Env interface properties renamed from MCBD_* to CM_* (Issue #77)
    • MCBD_ROOT_DIR -> CM_ROOT_DIR
    • MCBD_PORT -> CM_PORT
    • MCBD_BIND -> CM_BIND
    • MCBD_AUTH_TOKEN -> CM_AUTH_TOKEN
    • DATABASE_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)

Added

  • 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 legacy MCBD_* prefix
    • Deprecation warnings logged when legacy names are used (once per key)
    • All 8 environment variables support fallback:
      • CM_ROOT_DIR / MCBD_ROOT_DIR
      • CM_PORT / MCBD_PORT
      • CM_BIND / MCBD_BIND
      • CM_AUTH_TOKEN / MCBD_AUTH_TOKEN
      • CM_LOG_LEVEL / MCBD_LOG_LEVEL
      • CM_LOG_FORMAT / MCBD_LOG_FORMAT
      • CM_LOG_DIR / MCBD_LOG_DIR
      • CM_DB_PATH / MCBD_DB_PATH
    • Client-side fallback for NEXT_PUBLIC_CM_AUTH_TOKEN / NEXT_PUBLIC_MCBD_AUTH_TOKEN
  • CM_AUTH_TOKEN masking pattern in logger for security
  • Unit tests for environment variable fallback functionality

Deprecated

  • MCBD_* environment variables - use CM_* instead (will be removed in next major version)
    • MCBD_ROOT_DIR -> CM_ROOT_DIR
    • MCBD_PORT -> CM_PORT
    • MCBD_BIND -> CM_BIND
    • MCBD_AUTH_TOKEN -> CM_AUTH_TOKEN
    • MCBD_LOG_LEVEL -> CM_LOG_LEVEL
    • MCBD_LOG_FORMAT -> CM_LOG_FORMAT
    • MCBD_LOG_DIR -> CM_LOG_DIR
    • MCBD_DB_PATH -> CM_DB_PATH
  • NEXT_PUBLIC_MCBD_AUTH_TOKEN -> NEXT_PUBLIC_CM_AUTH_TOKEN