Conversation
- Add video-extensions.ts config (isVideoExtension, getMimeTypeByVideoExtension, ftyp magic bytes) - Add mp4 validator to uploadable-extensions.ts (15MB limit, ftyp magic bytes at offset 4) - Add isVideo flag to FileContent interface in models.ts - Add video file GET handling in files API route (Base64 data URI) - Create VideoViewer component with loading indicator and HTML5 video controls - Update FileViewer to render VideoViewer for video files, hide copy button - Update FileViewerPage (page.tsx) to use shared FileContent type and video/image viewers - Update CSP to include media-src 'self' data: for video playback - Increase bodySizeLimit to 16mb for video upload support - Optimize upload route: move file.size check before arrayBuffer() for memory efficiency - Add 22 unit tests for video-extensions, 10 mp4 tests for uploadable-extensions - Add 2 integration tests for video file GET API Resolves #302 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mage pattern - Add validateVideoMagicBytes() and validateVideoContent() to video-extensions.ts - Apply magic bytes validation to GET route for video files (closes security gap) - Remove redundant <source> element from VideoViewer - Expand video-extensions unit tests from 22 to 33 cases - Update CLAUDE.md with new video-related modules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Design policy document for mp4 upload feature - Multi-stage issue review results (Stage 1-8) - Multi-stage design review results (Stage 1-2) - TDD implementation context and results - Acceptance test results (9/9 passed) - Refactoring results - Progress report - Work plan Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
feat(#302): mp4ファイルのアップロード・ブラウザ内再生機能
… iPad layout fixes - Unify z-index system: Modal.tsx z-[9999] -> Z_INDEX.MODAL(50), Toast.tsx z-50 -> Z_INDEX.TOAST(60), ContextMenu.tsx z-50 -> Z_INDEX.CONTEXT_MENU(70) - Fix z-index.ts JSDoc comments: correct layer hierarchy (add MAXIMIZED_EDITOR layer, renumber layers) - Add isInsideScrollableElement to useSwipeGesture.ts to prevent unintended fullscreen exit during scroll - Increase MarkdownEditor swipe threshold from 100 to 150 for more reliable gesture detection - Replace hardcoded 768 with MOBILE_BREAKPOINT constant in SearchBar.tsx - Add z-index hierarchy tests (15 tests) and scrollable element detection tests (5 tests) - All inline style z-index changes use Z_INDEX constants for DRY consistency Resolves #299 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…stability Fix portal logic that was unreachable after an unconditional return in MarkdownEditor. Export isInsideScrollableElement for direct unit testing and add 6 dedicated tests covering edge cases. Clean up comment tags and remove extra blank line. Improvements: - Fix unreachable portal code in MarkdownEditor (lines 884-892) - Export isInsideScrollableElement for direct unit testing - Add 6 unit tests for isInsideScrollableElement edge cases - Remove [REFACTOR] comment tag in Toast.tsx - Remove extra blank line in SearchBar.tsx Quality Metrics: - ESLint errors: 0 -> 0 - TypeScript errors: 0 -> 0 - Tests: 41 -> 47 (+6 new isInsideScrollableElement tests) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(#299): iPad/スマホ レイアウト崩れ・全画面表示不具合修正
…th encoding - Add encodePathForUrl() utility that preserves '/' separators while encoding individual path segments, fixing root directory creation - Add toolbar with New File/New Directory buttons to FileTreeView non-empty state for root-level creation - Replace encodeURIComponent with encodePathForUrl in all 5 file operation handlers (newFile, newDirectory, rename, delete, upload) - Add 11 unit tests for encodePathForUrl covering edge cases - Add 6 toolbar tests for FileTreeView (display, click, conditional) - Add 1 path encoding test for WorktreeDetailRefactored Resolves #300 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…istency Add dark mode variant classes (dark:text-gray-300, dark:bg-gray-800, dark:border-gray-600, dark:hover:bg-gray-700) to empty state file/directory creation buttons to match the toolbar buttons added in Issue #300. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add design policy document for root directory creation feature - Add multi-stage issue review results (8 stages) - Add multi-stage design review results (4 stages) - Add work plan and TDD implementation reports - Update CLAUDE.md with url-path-encoder and FileTreeView module descriptions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(#300): ルートディレクトリにディレクトリ/ファイルを追加可能にする
Implement auto-yes poller duplicate response prevention with prompt key deduplication, 5-second cooldown after successful responses, and enhanced tmux session health checks with structured HealthCheckResult reporting and multi-stage false positive defense. Extract generatePromptKey() as shared utility between client hook and server-side poller. All 163 tests pass (27 new + 136 existing). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rinciples Refactoring improvements for Issue #306 implementation code: - Extract PromptKeyInput interface (ISP) for generatePromptKey parameter type - Promote MAX_SHELL_PROMPT_LENGTH from function-local to module-level constant - Extract getErrorMessage() helper in auto-yes-manager (DRY with claude-session) - Add comprehensive JSDoc (@param, @returns, @example) to all public/internal functions - Add @internal annotations to testing-only exports Quality Metrics: - Tests: 163 passed (unchanged) - ESLint errors: 0 - TypeScript errors: 0 (in target files) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(#306): Auto-Yes Poller重複応答防止とtmuxセッション安定性改善
…mp/repos - Inject getEnv().CM_ROOT_DIR as basePath in clone/route.ts and [jobId]/route.ts - Add resolveDefaultBasePath() with WORKTREE_BASE_PATH deprecation warning - Fix info disclosure: remove basePath/targetPath from error messages (D4-001/D4-003) - Add targetDir type validation to prevent injection (D4-002) - Add basePath resolution tests and security tests - Update .env.example to document clone directory role Resolves #308 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove unused imports (CloneResult, UrlNormalizer, getRepositoryByNormalizedUrl) from clone-manager.test.ts and add @returns JSDoc tag to resolveDefaultBasePath() for improved code documentation consistency. Quality Metrics: - Unit tests: 47 passed - Integration tests: 12 passed - TypeScript errors: 0 - ESLint errors: 0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add design policy document with 4-stage review results - Add issue review reports (8-stage multi-stage review) - Add multi-stage design review reports (stages 1-4) - Add work plan for implementation - Add pm-auto-dev progress reports - Update CLAUDE.md with Issue #308 module descriptions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(#308): git clone basePath修正 - CM_ROOT_DIRを使用するよう変更
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
🤖 Generated with Claude Code