# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.3.0] - 2026-01-28
### Added
- **Proc Query Language**: Composable process discovery primitives
- **`proc by <name>`** — Filter processes by name with all filters
- Example: `proc by node --in . --min-cpu 5`
- **`proc in <path>`** — Filter processes by working directory
- Example: `proc in ~/projects --by python`
- Supports `.`, relative paths, absolute paths, and `~` expansion
- **Multi-target support** for kill, stop, info, and on commands
- Comma-separated targets: `proc kill :3000,:8080,node`
- Mixed target types: ports (`:3000`), PIDs (`1234`), names (`node`)
- PID deduplication prevents double-kills on overlapping targets
- Single confirmation prompt shows all targets before action
- Not-found targets show warnings but don't block found targets
- **Combinable filters** across commands
- `proc on node --in .` — Node processes on ports, filtered by directory
- `proc by node --in .` — Node processes in current directory
- `proc in . --by node` — Same result, different entry point
- **Comprehensive help examples** covering all command variants and scenarios
### Changed
- Updated dependencies: colored 3.1, sysinfo 0.38, indicatif 0.18, nix 0.31
- `proc on` now supports `--in` filter for directory-based filtering
- `proc info` now supports comma-separated targets
- Help text reorganized into semantic sections (Discovery, Info, Kill, Stop, etc.)
## [1.2.3] - 2026-01-21
### Added
- **Tier 3 distribution channels**:
- **Scoop** (Windows): `pkg/scoop/proc.json` manifest with auto-update
- **AUR** (Arch Linux): `pkg/aur/PKGBUILD` for `yay -S proc`
- **npm** wrapper: `pkg/npm/` for `npm install -g proc-cli`
- **Nix flake**: `flake.nix` for `nix profile install github:yazeed/proc`
## [1.2.2] - 2026-01-21
### Added
- **cargo-binstall support**: `cargo binstall proc-cli` now downloads pre-built binaries
- 10x faster than `cargo install` (no compilation required)
- Configured for all platforms: macOS, Linux, Windows (Intel and ARM)
- **Docker Hub automation**: Images automatically published on release
- Multi-arch support: linux/amd64, linux/arm64
- Available at `docker run yazeed/proc`
## [1.2.1] - 2026-01-15
### Changed
- Updated dependencies: colored 3.1, sysinfo 0.38, indicatif 0.18, nix 0.31
- Enhanced `--version` output to include repository URL and license
## [1.2.0] - 2026-01-15
### Added
- **ARGS column** in `proc list` output showing command arguments
- Displays script names for Python/Node processes (e.g., `daily_spread_trader.py`)
- Simplifies paths to filenames for readability
- Enables finding processes by script name: `proc list my_script.py`
### Changed
- Updated dependencies: colored 3.1, sysinfo 0.38, indicatif 0.18, nix 0.31
- Reorganized `proc list` columns: PID, PATH, NAME, ARGS, CPU%, MEM, STATUS
- Improved process identification for interpreted languages (Python, Node, Ruby, etc.)
## [1.1.0] - 2026-01-14
### Changed
- Updated dependencies: colored 3.1, sysinfo 0.38, indicatif 0.18, nix 0.31
- **Breaking:** Renamed `ps` command to `list` for better semantics
- `ps` remains as an alias for backwards compatibility
- Updated tagline: "Semantic CLI tool for process management. Target by port, process id (PID), name or path."
## [1.0.2] - 2026-01-13
### Changed
- Updated dependencies: colored 3.1, sysinfo 0.38, indicatif 0.18, nix 0.31
- Streamlined README with cleaner structure and code-first approach
- Added Targets section explaining unified `:port`, `PID`, `name` syntax
- Removed "Why proc?" comparison section
### Fixed
- Fixed README filter table incorrectly stating `--in` and `--path` work with `tree` (ps-only)
## [1.0.1] - 2026-01-13
### Fixed
- Fixed outdated error message suggesting removed `proc find --all` command
- Fixed `--cwd` references in help text and documentation (renamed to `--in`)
- Fixed JSON output action field from "find" to "ps"
## [1.0.0] - 2026-01-12
Initial public release.
### Commands
All commands accept **targets**: `:port`, `PID`, or `name` where applicable.
**Discovery** (nouns — observe state)
- `proc on <target>` — Bidirectional port/process lookup
- `:port` → What process is using this port?
- `PID` → What ports is this process using?
- `name` → What ports are these processes using?
- `proc ports` — List all listening ports
- `proc ps [name]` — List processes (filter by name, path, or resources)
- `proc info <target>` — Detailed process information
- `proc tree [target]` — Process hierarchy view
- `proc stuck` — Find hung processes
**Lifecycle** (verbs — change state)
- `proc kill <target>` — Force kill (SIGKILL)
- `proc stop <target>` — Graceful stop (SIGTERM, then SIGKILL after timeout)
- `proc unstick [target]` — Attempt to recover stuck processes
- Tries SIGCONT → SIGINT recovery sequence
- Use `--force` to terminate if recovery fails
### Features
- **Unified targets**: Most commands accept `:port`, `PID`, or process `name`
- **Path filtering**: `--in` and `--path` filters for `proc ps`
- **Resource filtering**: `--min-cpu`, `--min-mem`, `--status` filters for `ps` and `tree`
- **Bidirectional lookup**: `proc on` works both ways (port→process and process→ports)
- **Cross-platform**: macOS (Apple Silicon, Intel), Linux (x86_64, ARM64), Windows (x86_64)
- **Output formats**: Colored terminal output, JSON (`--json`) for scripting
- **Safety**: Confirmation prompts before destructive actions
### Principles
- **Semantic**: Commands mean what they say
- **Explicit**: User intent must be clear
- **Complete**: Cover the full workflow, nothing more
- **Fast**: Sub-100ms for all operations
- **Obvious**: If you have to read the docs, we failed
### Values
- **Unified targets**: `:port`, `PID`, and `name` work the same way everywhere
- **Natural grammar**: Nouns to observe, verbs to act
- **Practical simplicity**: Every feature solves a real, repeated problem
- **Easy to remember**: Consistent patterns—know one command, know them all
---
[Unreleased]: https://github.com/yazeed/proc/compare/v1.3.0...HEAD
[1.3.0]: https://github.com/yazeed/proc/compare/v1.2.3...v1.3.0
[1.2.3]: https://github.com/yazeed/proc/compare/v1.2.2...v1.2.3
[1.2.2]: https://github.com/yazeed/proc/compare/v1.2.1...v1.2.2
[1.2.1]: https://github.com/yazeed/proc/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/yazeed/proc/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/yazeed/proc/compare/v1.0.2...v1.1.0
[1.0.2]: https://github.com/yazeed/proc/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/yazeed/proc/compare/v1.0.0...v1.0.1
[1.0.0]: https://github.com/yazeed/proc/releases/tag/v1.0.0