- Removed the obsolete scoped-commit helper and allowed standard Git commands in isolated worktrees.
- Reworked the README around installation, first-run success, and progressive links to focused CLI and configuration guidance.
- Fixed
cleanresolving every state file through aStateManagerrooted at the current project, so files belonging to other projects were skipped and, when target names collided, the current project's file was removed while the output named a different one. Thanks @devYRPauli. - Waited for captured build logs to flush before reporting build completion so immediate readers do not observe empty or truncated files.
- Restored TypeDoc API generation after the legacy documentation prune, repaired stale README links, and documented the TypeScript 6.x compatibility pin pending TypeDoc support for the TypeScript 7 compiler API.
- Updated compatible runtime and development dependencies, including pi-tui, Node.js types, Oxfmt, Oxlint, PostCSS, tsx, and Vite.
- Corrected the exported
discoverStates()map-key contract to use full stored target names, preventing hyphenated targets such asapp-bundleandtest-bundlefrom truncating and colliding. Thanks @devYRPauli. - Fixed
Poltergeist.listAllStates()always returning an empty array; it rebuilt state paths through aStateManagerrooted at/instead of reading the discovered files.
- Stabilized universal Bun binary packaging by stripping cross-compiled ad-hoc signatures before
lipoassembly and re-signing the combined binaries. - Updated runtime and development dependencies, including Chalk 6, pi-tui 0.83, LogTape 2.3, Vite 8.2, pnpm 11, and current Oxc tooling.
- Restored trusted macOS app distribution with Developer ID signing, hardened runtime, notarization, stapling, and fail-closed release verification.
- Repaired the tag workflow so the complete app bundle is sealed with the personal Developer ID identity instead of retaining the linker-generated ad-hoc signature shipped in v2.1.3.
- Added pre-publication checks for the bundle identifier, signing authority, team, hardened runtime, stable designated requirement, strict resource seal, notarization ticket, and Gatekeeper acceptance.
- Documented the release certificate and App Store Connect credential contract and added shell and workflow lint coverage for the signing path.
- Restored native
polterargument handling for current Bun standalone binaries and Homebrew slices. - Refreshed the panel runtime and release toolchain for current dependency releases.
- Normalized
polterentrypoint detection across Node.js, older Bun binaries, current Bun virtual paths, and architecture-suffixed Homebrew slices. - Stabilized build-error persistence coverage so asynchronous state writes are verified reliably.
- Updated compatible runtime dependencies, including
pi-tui, LogTape, arkregex, es-toolkit, and ora, and removed obsolete Picomatch packages. - Updated development tooling, including Node.js types, tsgo, Oxfmt, Oxlint, PostCSS, tsx, TypeDoc, Vite, and pnpm.
- Updated GitHub Actions checkout and Node.js setup actions, standardized release titles, aligned Homebrew tap references, and added an explicit Oxfmt configuration for warning-free checks.
- Fixed Watchman exclusion conversion so file-extension globs like
*.logmatch files at any depth instead of directory contents. Thanks @devYRPauli. - Fixed CMake project discovery so generated build-system utility targets and annotated default targets are not treated as project targets.
- Fixed standalone
polterversion reporting by sharing the CLI's compile-time package metadata. - Fixed compiled
polterpackaging so the Homebrew binary runs, with release smoke tests for both CLI executables. - Excluded nested macOS metadata files from published npm tarballs.
- Updated runtime dependencies and build/release tooling, including the maintained
pi-tuipackage, Node.js 24 baseline, tsgo, oxlint/oxfmt, and automated Homebrew tap updates.
- Version reporting now matches the 2.1 line (CLI and binaries print 2.1.1).
- Panel foundation (beta): rebuilt on
@mariozechner/pi-tuiwith auto-refresh, scrollable per-target log tails, sticky controls, and git summaries via--git-mode ai|list, plus alt-screen default, tagline/home-path shortening, ahead/behind badges, compressed separators, and clean redraws. - Interactive controls: start/stop and pause/resume hotkeys with width-aware control lines; calmer launches that clear the screen and keep spacing tight on narrow terminals.
- Progress + logs: build/Vitest/XCTest progress bars now ASCII-safe; script banners move inline, failure hints surface in logs, and dirty-file/log panes clamp to available width.
- Project init: auto-detects Swift/mixed/CMake projects, runs the CMake analyzer with preset/generator support, and can auto-add inferred targets.
- Smarter rebuild scheduling: debounced build scheduler, rebuild queue on scheduling changes, config-reload orchestrator, and watch-service refresh/re-subscribe when configs change.
- CMake analyzer upgrades: split build query/parser helpers, improved target generation, and clearer error reporting for CMake users.
- Resilience & wrapper: daemon state dir falls back to temp on Windows; detached daemon handling tightened; stale/lock recovery hints and improved “stale binary” guidance.
- CLI registry & JSON: centralized command registry drives help text/option metadata; JSON output for
wait/clean; descriptors tested and aligned across commands. - Tooling & docs: npm builder streams logs; Swift/XCTest progress parser hardened; notifier typing fixed; panel docs refreshed; AGENTS/tools blocks synced; dependency/workflow updates keep pnpm-first defaults.
- Panel foundation (beta): rebuilt on
@mariozechner/pi-tuiwith auto-refresh, scrollable per-target log tails, sticky controls, and git summaries via--git-mode ai|list, plus alt-screen default, tagline/home-path shortening, ahead/behind badges, compressed separators, and clean redraws. - Interactive controls: start/stop and pause/resume hotkeys with width-aware control lines; calmer launches that clear the screen and keep spacing tight on narrow terminals.
- Progress + logs: build/Vitest/XCTest progress bars now ASCII-safe; script banners move inline, failure hints surface in logs, and dirty-file/log panes clamp to available width.
- Project init: auto-detects Swift/mixed/CMake projects, runs the CMake analyzer with preset/generator support, and can auto-add inferred targets.
- Smarter rebuild scheduling: debounced build scheduler, rebuild queue on scheduling changes, config-reload orchestrator, and watch-service refresh/re-subscribe when configs change.
- CMake analyzer upgrades: split build query/parser helpers, improved target generation, and clearer error reporting for CMake users.
- Resilience & wrapper: daemon state dir falls back to temp on Windows; detached daemon handling tightened; stale/lock recovery hints and improved “stale binary” guidance.
- CLI registry & JSON: centralized command registry drives help text/option metadata; JSON output for
wait/clean; descriptors tested and aligned across commands. - Tooling & docs: npm builder streams logs; Swift/XCTest progress parser hardened; notifier typing fixed; panel docs refreshed; AGENTS/tools blocks synced; dependency/workflow updates keep pnpm-first defaults.
- Added hot-reload
polter --watchflag with restart signal/delay options to keep executables fresh after successful builds - Introduced config-driven
autoRunfor executable targets so the daemon can relaunch binaries automatically after builds - Refactored launch handling into shared utilities and added regression tests covering watch mode parsing, launch prep, and the executable runner life cycle
- Auto-detect Go
cmd/<name>/main.goprojects duringpoltergeist init --auto, generating runnable binaries indist/bin/ - Extend the TypeScript example harness to cover the new Go CLI project with tokenized rebuild verification
- Documented hot reload workflows in README, covering daemon setup and multi-target tuning
- Replaced the legacy example shell runner with a TypeScript harness that logs structured results to docs/test-e2e-report.json
- Added brace-aware glob expansion so Watchman subscriptions fire reliably across mixed-language targets
- Updated CLI defaults to emit enabled Node targets with separate TypeScript/JavaScript watch paths and aligned tests
- Modernized the CMake builder to use ESM-friendly child_process imports and run library/executable builds without bailing
- Introduced AGENTS.md guidance (symlinked from CLAUDE.md) and removed examples/run-all-examples.sh in favour of the new workflow
- Target-specific log files in
/tmp/poltergeist/with plain text format (80% size reduction) - Separate log file per target matching state file naming:
{projectName}-{hash}-{target}.log - Plain text log format for zero parsing overhead:
timestamp level: message - Fixed Bun.spawn stdio configuration error - daemon now starts correctly with log file redirection
- Proper file handle wrapping with
Bun.file()for Bun runtime compatibility - Improved daemon spawning reliability for Bun standalone binaries
- Polter waits for builds when lock file exists regardless of state (handles any stuck build scenario)
- Detects stuck build processes from error patterns and provides tool-specific recovery commands
- Generic lock detection works with any build system (SwiftPM, Make, Cargo, npm, etc.)
- Fixed polter binary not being built during release process - Homebrew users now get working polter command
- Updated build script to build both poltergeist and polter binaries
- Added comprehensive release checklist to prevent future release mistakes
- Fixed version string to be compile-time constant - binary no longer reads version from filesystem
- Clear differentiation between
polterandpoltergeisthelp messages - Watchman incremental updates - only changed files detected, not full file lists
- Bun binary compilation - resolved
import.meta.urlissues - Performance for large projects (e.g., VibeTunnel with 489+ Swift files)
- IPC communication for both Node.js and Bun runtimes
- Startup timeout increased to 60s for complex projects
- Real-time build output streaming during execution
- Manual build command with
--verboseand--jsonoptions - Inline error diagnostics with context in build failures
- Automatic rebuild attempts for recent failures when running
polter - Enhanced error persistence in state files for quick diagnosis
- Improved error messages with timestamps and actionable next steps
- Better build output capture for error diagnosis
- AI agents now get immediate feedback when builds fail
- Fixed
poltercommand not executing when installed globally via npm - Proper detection of execution context for symlinks and global packages
- Fixed silent exit issue when
polterwas invoked globally
poltergeist poltersubcommand for Homebrew compatibility- Configurable daemon startup timeout via environment variable
- Automatic retry with exponential backoff for daemon startup
- Default daemon timeout increased from 10s to 30s
- Better error messages when daemon startup fails
- Eliminated code duplication in polter command
- Improved cross-platform path handling
--verboseflag for status command with detailed build statistics-vas version shorthand for all commands- NPM builder support with automatic package.json detection
- Self-building capability for Poltergeist development
- Executable targets in configuration for
poltercommand - Unified output formatting with consistent prefixes
- Major CLI redesign with modern, consistent format
- CLIFormatter utility for unified help displays
- Commands organized into logical groups
- Fixed daemon detection with proper heartbeat checking
- Binary discovery in subdirectories
- Standardized CLI output and flag conventions
- Replaced Pino with LogTape for zero-dependency logging
- Updated logger unit tests for LogTape compatibility
- Fixed linting issues in logger implementation
- Full Windows 10/11 support with cross-platform compatibility
- Homebrew installation method for macOS ARM64 users
- Breaking: Renamed
pgruncommand topolterfor better branding - Breaking: Unified temp directory usage across platforms with
POLTERGEIST_STATE_DIRsupport - Enhanced CI pipeline with multi-platform testing matrix
- Cross-platform path separator handling
- Windows drive letter root directory detection
- Process parameter naming conflicts in ProcessManager
- Windows-specific test compatibility issues
- Dedicated CHANGELOG.md file for improved release tracking
- Updated dependencies: winston 3.17.0, zod 4.0.14, tsx 4.20.3
- Consolidated README documentation with improved organization
- Official stable release marking production readiness
- Complete test suite validation (318 tests passing)
- Mac app state file parsing for hyphenated project names
- Staleness threshold consistency (5 minutes across CLI and Mac app)
- CI pipeline test execution order
- Replaced custom glob matcher with picomatch library
- Removed legacy status format support
- Improved codebase maintainability (-76 lines)
- picomatch dependency for robust pattern matching
- Initial beta release
- Universal target system for multiple build types
- Smart execution wrapper (polter) for fresh builds
- Intelligent build prioritization and queue management
- Focus pattern detection and configuration
- Native notifications with concurrent build protection
- Advanced state management and process tracking
- Cross-platform support (macOS, Linux, Windows)
- macOS companion app for status bar monitoring