v0.8.0
Pre-release
Pre-release
Major UX overhaul: smarter defaults, better error messages, and less typing for common workflows.
Added
- `--exact` flag for `piano build` and `piano profile`: exact-match mode for `--fn`, mirroring `cargo test -- --exact` (#120)
- `--list-skipped` flag: shows functions Piano cannot instrument (const, unsafe, extern) with file paths and reasons (#137, #186, #192)
- `piano tag` with no arguments lists all saved tags; `piano tag ` saves (#175)
- `piano diff` with no arguments compares the two most recent runs, showing tag names or relative timestamps (#125)
- User labels as diff column headers: tag names, filename stems, or relative timestamps instead of generic "Before"/"After" (#124)
- Auto-detect project root by walking up from cwd to find Cargo.toml, removing the need for `--project` in most cases (#135)
- Colored report tables with bold headers and dim separators; full NO_COLOR/CLICOLOR/CLICOLOR_FORCE/TERM=dumb support (#122)
- Recovery guidance on NoTargetsFound: shows similar function names via edit distance, or lists all available functions (#127)
Fixed
- Diff table sorted by absolute self-time delta descending instead of alphabetically (#193)
- `--fn` substring matching now checks qualified names (`Type::method`), not just bare names (#185)
- Missing tag produces "no run found for tag '...'" instead of leaking internal file paths (#198)
- Duplicate error message when all matched functions were skipped (#191)
- Internal staging paths removed from all user-facing error messages (#129)
- Cascading NoRuns error suppressed when profiled program exits non-zero (#139)
- Stale tags produce a helpful error with recovery guidance instead of generic NoRuns (#160)
- Non-printable characters in tag names displayed safely in error messages (#166)
- Invalid tag error defines the valid character set instead of listing what is invalid (#128)
- App name shown in build output instead of internal binary path (#121)
- `--fn` help text harmonized between build and profile commands (#123)
- Redundant "invalid tag:" prefix removed from tag validation errors (#165)
- Run ID removed from tag confirmation message (#126)
- Concurrency warning simplified to one line per function (#138)