Conversation
…604) worktree-status-helper used captureLines=100 while current-output API used 10000. When 150+ trailing blank lines existed after a prompt in tmux buffer, 100-line capture returned only blanks, causing false "running" status. Extract STATUS_CAPTURE_LINES=10000 constant to shared config and use it in both locations. - Add src/config/status-capture-config.ts with STATUS_CAPTURE_LINES - Update getStatusCaptureLines() default from 100 to STATUS_CAPTURE_LINES - Replace hardcoded 10000 in current-output/route.ts with constant - Add regression tests for trailing blank lines after prompt - Add config constant unit test Resolves #604 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(status): unify capture line count to fix spinner stuck on ready (#604)
…ive polling (#608) - toBranchItem() now uses deriveCliStatus() instead of hardcoded 'idle' - useWorktreesCache polls at 5s (active sessions) or 30s (idle) - Polling pauses when tab is hidden via visibilitychange listener - Updated tests to verify status derivation and polling behavior Resolves #608 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fix(sidebar): add adaptive polling for real-time status sync (#608)
…#606) - Add SORT_KEYS const array and derive SortKey type (including lastSent) - Add isValidSortKey() and compareByTimestamp() utility functions - Add lastSent + default case to sortBranches() switch - Extract SortSelectorBase presentational component from SortSelector - Refactor SortSelector as thin wrapper around SortSelectorBase - Add localStorage validation for sortKey in SidebarContext - Implement Sessions page sort (lastSent/repositoryName/status) - Add message preview with sanitization and PC/SP truncation - Add MESSAGE_PREVIEW_MAX_LENGTH_PC/SP constants - All tests pass (5953 passed), coverage target met - ESLint: 0 errors, TypeScript: 0 errors Resolves #606 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add daily_reports table (v24 migration) with date PK, UPSERT support - Add daily-report-db.ts with getDailyReport, saveDailyReport, updateDailyReportContent - Add getMessagesByDateRange() to chat-db.ts for cross-worktree date queries - Add summary-prompt-builder.ts with sanitizeMessage and buildSummaryPrompt - Add timeoutMs option to ExecuteCommandOptions in claude-executor.ts - Add daily-summary-generator.ts with concurrent execution control (globalThis) - Add /api/daily-summary route (GET/POST/PUT) with input validation - Add SUMMARY_ALLOWED_TOOLS and SUMMARY_GENERATION_TIMEOUT_MS to review-config - Extract ReviewTab from page.tsx, add ReportTab and ReportDatePicker - Integrate page-level tabs (Review/Report) in review page - Update existing tests for schema version 24 and page structure changes - Add unit tests for all new modules (6 test files) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move sanitizePreview from sessions/page.tsx to config/message-preview-config.ts for better testability and reusability. Add comprehensive unit tests covering control character removal, bidi mark stripping, zero-width char handling, and whitespace normalization (28 test cases). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(sessions): add sort options and message preview (#606)
feat(daily-summary): implement daily summary with AI report (#607)
- Add userInstruction textarea to ReportTab for customizing AI summary generation - Propagate userInstruction through API -> generator -> prompt builder pipeline - Add prompt injection isolation rules in system prompt for <user_instruction> - Apply sanitizeMessage to userInstruction in buildSummaryPrompt (DR1-005) - Add body shape validation and userInstruction validation to daily-summary API - Change nav label from 'Review' to 'Review/Report' (Header + GlobalMobileNav) - Change Sessions default sort to repositoryName(asc) with branchName second sort - Add second sort key for status sort (repositoryName) - Add MAX_USER_INSTRUCTION_LENGTH=1000 constant to review-config - All 6037 unit tests pass, 0 ESLint errors, 0 TypeScript errors Resolves #612 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Extract serializeReport() in daily-summary route to eliminate 3x duplicated report-to-JSON serialization (DRY) - Extract STATUS_LABELS record and STATUS_BADGE_CLASSES in Sessions page to replace switch statement and nested ternary chain (readability) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat(report): add user instruction input and UI improvements (#612)
…me second Repository name is now the primary (bold) line and branch name is the secondary (gray) line, making it easier to identify worktrees when multiple repositories share the same branch name (e.g. develop). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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
New Features
Bug Fixes
Improvements
Test plan
🤖 Generated with Claude Code