Skip to content

feat: Add task-progress-pane plugin for TodoWrite visualization - #1

Merged
ldangelo merged 8 commits into
mainfrom
feature/task-progress-pane
Dec 14, 2025
Merged

feat: Add task-progress-pane plugin for TodoWrite visualization#1
ldangelo merged 8 commits into
mainfrom
feature/task-progress-pane

Conversation

@ldangelo

Copy link
Copy Markdown
Contributor

Summary

  • New plugin that displays real-time task progress when Claude Code uses the TodoWrite tool
  • Shows progress bar with completion percentage
  • Displays task list with status icons (✓ completed, ● in progress, ○ pending)
  • Flicker-free terminal UI with automatic updates
  • Supports WezTerm, Zellij, and tmux multiplexers

Features

  • Sprint 1: Foundation - hook system, state management, multiplexer detection
  • Sprint 2: Terminal UI - progress bar, task rendering, ANSI colors
  • Sprint 3: Vim navigation - j/k movement, search mode, section collapse
  • Sprint 4: Multi-session support - stacked view for parallel tasks
  • Sprint 5: Testing, documentation & polish

Bug Fixes (Latest)

  • Fixed race condition in debounce logic
  • Fixed Bash 3.2 incompatibility (now uses Bash 5.3)
  • Fixed unbound variable errors
  • Added flicker-free monitor script

Test plan

  • Verify pane spawns on TodoWrite
  • Verify progress bar updates correctly
  • Verify no screen flicker during updates
  • Verify pane stays open until closed

🤖 Generated with Claude Code

ldangelo and others added 8 commits December 12, 2025 12:01
Sprint 1: Foundation & Core Infrastructure

Shared Package (@ai-mesh/multiplexer-adapters):
- TPP-S1-PKG-001: Create package structure
- TPP-S1-PKG-002: Extract base-adapter.js
- TPP-S1-PKG-003: Extract wezterm-adapter.js
- TPP-S1-PKG-004: Extract zellij-adapter.js
- TPP-S1-PKG-005: Extract tmux-adapter.js
- TPP-S1-PKG-006: Extract multiplexer-detector.js
- TPP-S1-PKG-007: Update pane-viewer to use shared package

Task Progress Pane Core:
- TPP-S1-CORE-001: Create package directory structure
- TPP-S1-CORE-002: Initialize package.json with dependencies
- TPP-S1-CORE-003: Create .claude-plugin/plugin.json
- TPP-S1-CORE-004: Implement config-loader.js with defaults
- TPP-S1-CORE-005: Implement task-parser.js for TodoWrite
- TPP-S1-CORE-006: Implement time-tracker.js module
- TPP-S1-CORE-007: Implement session-manager.js module
- TPP-S1-CORE-008: Create task-pane-manager.js

Hooks:
- TPP-S1-HOOK-001: Create hooks.json for TodoWrite
- TPP-S1-HOOK-002: Implement task-spawner.js with 50ms debounce

Testing:
- TPP-S1-TEST-001: Set up Vitest framework and mocks
- TPP-S1-TEST-002: Write task-parser.test.js
- TPP-S1-TEST-003: Write config-loader.test.js

Documentation:
- Created PRD v1.1.0 (task-progress-pane.md)
- Created TRD v1.1.0 (task-progress-pane.md)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sprint 2: Terminal UI & Progress Display

UI Components (task-progress-monitor.sh ~550 lines):
- TPP-S2-UI-001: Create task-progress-monitor.sh scaffold
- TPP-S2-UI-002: Implement ANSI color scheme constants
- TPP-S2-UI-003: Implement progress bar renderer (failed reduces %)
- TPP-S2-UI-004: Implement fixed header region
- TPP-S2-UI-005: Implement task list renderer
- TPP-S2-UI-006: Implement task state icons (✓ ● ○ ✗)
- TPP-S2-UI-007: Implement elapsed time display
- TPP-S2-UI-008: Implement section collapse/expand visuals
- TPP-S2-UI-009: Implement scrollable body region
- TPP-S2-UI-010: Implement state watching (inotifywait + polling)
- TPP-S2-UI-011: Implement responsive width handling
- TPP-S2-UI-012: Implement help bar at bottom

Documentation:
- Added README.md with configuration and keybindings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement remaining vim-style navigation features:
- Enter key: toggle expand/collapse for task details
- zc/zo: section fold/unfold commands
- Tab/Shift+Tab: session navigation for multi-session support
- Multi-session state tracking (SESSION_IDS, CURRENT_SESSION_IDX)
- Improved help bar with context-aware commands
- Enhanced task list rendering with expand icons and collapsed sections

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…features

Multi-session support:
- Parse multi-session state using jq (with basic fallback)
- Session indicator dots in header (● ○ ○)
- Per-session task isolation with parallel arrays
- Session header shows agent type and session count
- Tab/Shift+Tab navigation between sessions

Advanced features:
- Auto-collapse completed section when >5 items (configurable)
- Expandable error details for failed tasks
- Expandable task summaries with activeForm display
- Auto-hide on empty state (configured in task-spawner.js)
- Auto-spawn on first TodoWrite (configured in task-spawner.js)
- Task log persistence to ~/.ai-mesh-task-progress/logs/
  - JSONL format with daily rotation
  - Session summaries logged on completion
  - readLogs() method for date range queries

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…polish

Documentation:
- docs/CONFIGURATION.md: Full configuration reference
- docs/KEYBINDINGS.md: Vim-style keybinding reference
- docs/USAGE.md: Comprehensive usage guide

Slash command:
- commands/task-progress-config.md: Interactive configuration command

E2E Tests (tests/e2e/workflow.test.js):
- Full task lifecycle tests
- Multi-session support tests
- State persistence tests
- Empty state handling

Performance Tests (tests/performance/benchmark.test.js):
- Task parser: 100 tasks <10ms, 1000 tasks <50ms
- Progress calculation: 1000 tasks <5ms
- Diff calculation: 100 tasks <10ms
- Session manager: 50 sessions x 100 tasks <100ms

Integration Tests (tests/integration/multiplexer.test.js):
- Pane manager initialization
- Pane lifecycle (create, reuse, close)
- State updates and signal protocol
- Pane visibility detection
- Direction options (right/bottom)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
… issues

- Fix race condition in debounce logic by adding processingUpdate flag
- Update shebang to use Bash 5.3 for negative array index support
- Fix unbound variable error with proper default value syntax
- Add flicker-free monitor script (task-progress-monitor-v2.sh)
- Update task-pane-manager to use new monitor script

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ent duplicate panes

- Add file-based locking mechanism using O_EXCL for atomic lock acquisition
- Track panes by transcriptDir to enable reuse across parallel Task calls
- Add debug logging to help diagnose race conditions
- Include stale lock detection (auto-cleanup after 10 seconds)

Root cause: Duplicate hooks in both settings.json and plugin's hooks.json
caused double execution. This fix adds defense-in-depth protection.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@ldangelo
ldangelo merged commit 28c8bff into main Dec 14, 2025
0 of 4 checks passed
ldangelo added a commit that referenced this pull request Dec 15, 2025
- Fix naming inconsistencies (ai-mesh-plugins → ensemble, not ensemble → ensemble)
- Mark completed tasks: PREP-008 (directory rename), GH-1 (GitHub rename), GH-6 (URL redirects)
- Add CODE-170 for AI_MESH_* → ENSEMBLE_* environment variable rename
- Update version to 1.3.0, status to "In Progress"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ldangelo added a commit that referenced this pull request Dec 15, 2025
- Updated ~85 tasks from [ ] to [x] reflecting actual completion
- Marked all PREP tasks complete (scripts exist, directory renamed)
- Marked all CODE tasks complete (packages renamed to v5.0.0)
- Marked GitHub tasks GH-1 through GH-3, GH-6 complete
- Marked migration tasks MIG-001 through MIG-003, MIG-005 complete
- Updated sprint checklists with completion status
- Changed document status from "In Progress" to "~95% Complete"

Remaining items (~10 tasks):
- DOC-001: Create MIGRATION.md guide
- MIG-004: Add migration script to package.json bin
- MIG-006/007: Test migration on Linux/WSL
- TEST-001: Fix 14 pre-existing test failures
- GH-4/005: Update repo description and topics
- TEST-003/005: Integration tests and GitHub install test

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ldangelo added a commit that referenced this pull request Dec 15, 2025
Updated GitHub repository metadata:
- Description: "Ensemble Plugin Ecosystem - Modular Claude Code plugins for AI-augmented development workflows"
- Topics: claude-code, claude, ai-development, plugins, development-tools, cli, typescript, nodejs

All GitHub tasks (GH-1 through GH-6) now complete.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ldangelo added a commit that referenced this pull request Jun 18, 2026
- Fix naming inconsistencies (ai-mesh-plugins → ensemble, not ensemble → ensemble)
- Mark completed tasks: PREP-008 (directory rename), GH-1 (GitHub rename), GH-6 (URL redirects)
- Add CODE-170 for AI_MESH_* → ENSEMBLE_* environment variable rename
- Update version to 1.3.0, status to "In Progress"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ldangelo added a commit that referenced this pull request Jun 18, 2026
- Updated ~85 tasks from [ ] to [x] reflecting actual completion
- Marked all PREP tasks complete (scripts exist, directory renamed)
- Marked all CODE tasks complete (packages renamed to v5.0.0)
- Marked GitHub tasks GH-1 through GH-3, GH-6 complete
- Marked migration tasks MIG-001 through MIG-003, MIG-005 complete
- Updated sprint checklists with completion status
- Changed document status from "In Progress" to "~95% Complete"

Remaining items (~10 tasks):
- DOC-001: Create MIGRATION.md guide
- MIG-004: Add migration script to package.json bin
- MIG-006/007: Test migration on Linux/WSL
- TEST-001: Fix 14 pre-existing test failures
- GH-4/005: Update repo description and topics
- TEST-003/005: Integration tests and GitHub install test

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ldangelo added a commit that referenced this pull request Jun 18, 2026
Updated GitHub repository metadata:
- Description: "Ensemble Plugin Ecosystem - Modular Claude Code plugins for AI-augmented development workflows"
- Topics: claude-code, claude, ai-development, plugins, development-tools, cli, typescript, nodejs

All GitHub tasks (GH-1 through GH-6) now complete.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant