# Changelog

## Unreleased

## 4.0.12 - 2026-11-04

<!-- npm-release:unreleased:start -->

- Report completed Termux clipboard sends without a warning when optional clipboard readback is unavailable. Verified copies, mismatches, and write failures keep their existing results.

<!-- npm-release:unreleased:end -->

- fix: distinguish Termux clipboard sends from unavailable readback (#66) ([e2e6de8](https://github.com/fitchmultz/pi-copy-message/commit/e2e6de8be3671096cd86579b7adcb7d758e66ea6))

### What's Changed

- Fix misleading Termux clipboard warnings by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/66

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.11...v4.0.12

## 4.0.11 - 2026-11-03

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Skip no-op releases and restate malformed remediation dispositions (#64) ([f98648d](https://github.com/fitchmultz/pi-copy-message/commit/f98648dda732add150f4fab8157967e64f0e316d))

### What's Changed

- Skip no-op releases and restate malformed remediation dispositions by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/64

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.10...v4.0.11

## 4.0.10 - 2026-11-02

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Recheck unreported Cursor reviews in automatic releases (#61) ([ba70728](https://github.com/fitchmultz/pi-copy-message/commit/ba70728f6337906a62eeac8ea73d78e6a4226569))

### What's Changed

- Recheck unreported Cursor reviews in automatic releases by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/61

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.9...v4.0.10

## 4.0.9 - 2026-11-02

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Raise the Pi floor to 1.5.0 (#59) ([f77e94c](https://github.com/fitchmultz/pi-copy-message/commit/f77e94c10e651d77ca5489c7dd4d4effc8fab1ae))

### What's Changed

- Raise the Pi floor to 1.5.0 by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/59

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.8...v4.0.9

## 4.0.8 - 2026-11-02

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Scope the qualification harness's format and orphan controls to scratch space (#57) ([d39ca32](https://github.com/fitchmultz/pi-copy-message/commit/d39ca32ffb1221273f1637accb0a0a7624e95da8))

### What's Changed

- Scope the qualification harness's format and orphan controls to scratch space by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/57

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.7...v4.0.8

## 4.0.7 - 2026-11-02

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- chore: refresh local runtime pins to Node 24.22.2 and npm 12.2.1 (#53) ([33f7afb](https://github.com/fitchmultz/pi-copy-message/commit/33f7afbe23d97dc72049cdea431db58742053732))

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.6...v4.0.7

## 4.0.6 - 2026-11-02

<!-- npm-release:unreleased:start -->

- Correct the policy reference in `docs/development.md`: the repository follows the adopted Strict Oxlint and Oxfmt Engineering Standard v5.1.2, not the superseded policy release.
- Refresh the local runtime pins to the latest in their lines: `.nvmrc` moves to Node 24.22.2 and `packageManager` to npm 12.2.1; CI already resolves both. The Node 24.15 engines floor is unchanged.

<!-- npm-release:unreleased:end -->

- docs: reference the adopted quality standard v5.1.2 (#54) ([a31c4c2](https://github.com/fitchmultz/pi-copy-message/commit/a31c4c26da4ecc69bce9a1e0b4702572319cc9df))

### What's Changed

- docs: reference the adopted quality standard v5.1.2 by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/54

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.5...v4.0.6

## 4.0.5 - 2026-11-01

<!-- npm-release:unreleased:start -->

- Development dependencies move to Pi 1.4.0 (`@earendil-works/pi-coding-agent`, `@earendil-works/pi-tui`) and `@types/node` 24.19.2.
- Adopt Strict Oxlint and Oxfmt Engineering Standard v5.1.2: the adopted copy plus adoption and exception records in `docs/quality/`, pinned checker and formatter configuration, a conformance verifier, an expanded qualification harness, and an acceptance aggregator that runs every gate independently. One recorded quality exception (QX-001) covers the node:test registration mapping in the test profile.
- Split the extension entry module into focused source modules (`display-text`, `session-content`, `picker-view`, `picker-state`, `arguments`, `clipboard`) to satisfy the policy's structural limits; registered behavior is unchanged.
- Test files register `node:test` through the local names the checker's test profile maps.

<!-- npm-release:unreleased:end -->

- build: adopt Pi 1.4.0 dependencies and quality standard v5.1.2 (#49) ([581c230](https://github.com/fitchmultz/pi-copy-message/commit/581c230388cee144fae6b87573b1427349fbc008))

### What's Changed

- Pi 1.4.0 + strict oxlint/oxfmt policy adoption by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/49

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.4...v4.0.5

## 4.0.4 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Use direct Flash for automatic release remediation (#50) ([01e4fd0](https://github.com/fitchmultz/pi-copy-message/commit/01e4fd005552a09f95f90355efa8559ba0e86791))

### What's Changed

- Use direct Flash for necessary release remediation by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/50

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.3...v4.0.4

## 4.0.3 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 (#45) ([fa3e6e4](https://github.com/fitchmultz/pi-copy-message/commit/fa3e6e4c7527017e6d2189d887245ad70655e764))

### What's Changed

- chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 by @dependabot[bot] in https://github.com/fitchmultz/pi-copy-message/pull/45

### New Contributors

- @dependabot[bot] made their first contribution in https://github.com/fitchmultz/pi-copy-message/pull/45

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.2...v4.0.3

## 4.0.2 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Automate reviewed npm patch releases (#46) ([4fd1e2f](https://github.com/fitchmultz/pi-copy-message/commit/4fd1e2f468eed1f84a929602dd9553aa2515ca3b))

### What's Changed

- Automate reviewed npm patch releases by @fitchmultz in https://github.com/fitchmultz/pi-copy-message/pull/46

**Full Changelog**: https://github.com/fitchmultz/pi-copy-message/compare/v4.0.1...v4.0.2

## 4.0.1 - 2026-10-31

- Stop enumerating graphemes once a message preview is known to need truncation; preserve preview and copied text.

- Wrap only enough of a long message to fill the `Tab` peek instead of the whole message; very long messages note that more lines remain instead of counting them. Copied text is unchanged.

- Cancel pending copy pickers when the host disposes their UI, including during reload, without interrupting sibling dialog teardown.

## 4.0.0 - 2026-10-01

- Require Pi 1.0.0 and pin the official 1.0.0 development cohort.
- Use the native canonical projection for latest-message copies, honoring context edits and compaction while retaining raw historical numbered/picker/user copies and legacy response snapshots.
- Verify clipboard text before reporting success; keep Pi's complete native/platform/OSC 52 write fallback chain and warn when delivery is unverified, empty, mismatched or remote.
- Cancel pending pickers on session/tree/shutdown lifecycle changes; suppress stale completion notifications.
- Add native mouse navigation/copy with restored editor focus and safe isolated clipboard/SDK lifecycle regression coverage.

## 3.0.0 - 2026-09-26

- Require Node.js 24.15 or newer for repository tooling; `.nvmrc` pins 24.21.0 and `packageManager` is npm 12.1.0.
- Run tests with Node's built-in `node --test` and type stripping instead of `tsx`; typecheck with TypeScript 7.0.2 and `erasableSyntaxOnly`.
- Refresh the development baseline to Pi 0.87.1, qualified against official Pi and the maintained fork.
- Guard `package-lock.json` against private-registry URLs.
- First npm release containing the 2.1.1 clipboard change (2.1.1 was tagged but never published to npm).

## 2.1.1 - 2026-08-25

- Reuse Pi's clipboard implementation instead of maintaining a duplicate command runner, enabling Pi's OSC 52 fallback on Android/Termux.

## 2.1.0 - 2026-08-17

- Add an `Alt+C` picker filter and `MessageVisibility.showCustom` option for showing or hiding custom messages.
- Hide picker shortcut hints that collide with configured selection bindings.

## 2.0.0 - 2026-08-06

- Set pi 0.84.0 as the minimum supported version and refresh the local coding-agent and TUI development baseline.
- Honor configured `tui.select.pageUp` and `tui.select.pageDown` bindings, with Ctrl-modified page and jump controls that remain available in fullscreen mode.
- Decode Kitty CSI-u printable input so type-to-filter search works in terminals using Kitty keyboard disambiguation.
- Validate the package and its core copy flows with an isolated Pi 0.84.0 installation.

## 1.0.11 - 2026-07-16

- Refresh the local Pi development lock and compatibility baseline to 0.80.9; the unified model runtime and additive Kimi/model-catalog changes do not affect the message-history picker.

## 1.0.10 - 2026-07-14

- Refresh the local Pi development lock and compatibility documentation to 0.80.7; document how Pi's new built-in `Ctrl+X` complements the broader picker.

## 1.0.9 - 2026-07-11

- Update the local Pi development baseline and compatibility documentation to 0.80.6.
- Read current branch-summary, compaction-summary, and visible custom-message session entries in `/copy-message`; hidden custom messages stay excluded.
- Honor configured Pi selection keybindings before local picker shortcuts and render their effective hints.

## 1.0.8 - 2026-06-24

- Add `/copy-message` and `/copy-user` argument completions for `latest`/`last`/`newest` and `--with-meta`/`--with-metadata`/`--with-role`.
- Bound clipboard commands with a 3s timeout so a wedged `xclip`/`wl-copy` daemon cannot hang the command.
- Drop the obsolete `basic-ftp` npm override (no longer in the dependency tree).
- Align pi core peer dependencies with package guidance (non-optional wildcard peers; pi aliases them to its bundled copies at load time).
- Update the local pi development baseline to `0.80.2` and refresh the npm lockfile.

## 1.0.7 - 2026-06-23

- updated the local pi development baseline to `@earendil-works/pi-coding-agent` / `@earendil-works/pi-tui` `0.80.1` and refreshed the npm lockfile
- refreshed the README compatibility note for pi `0.80.1`
- reviewed the Pi 0.80.0/0.80.1 changelog; no runtime source migration was required

## 1.0.6 - 2026-06-22

- updated the local pi development baseline to `@earendil-works/pi-coding-agent` / `@earendil-works/pi-tui` `0.79.10` and refreshed the npm lockfile
- refreshed the README compatibility note for pi `0.79.10` and removed the obsolete fleet-tested marker
- validated with `npm run check` and an isolated Pi package-load smoke under pi `0.79.10`

## 1.0.5 - 2026-06-15

- updated the local pi development baseline to `@earendil-works/pi-coding-agent` / `@earendil-works/pi-tui` `0.79.4` and refreshed the npm lockfile
- validated direct non-TUI command handling under pi `0.79.4`

## 1.0.4 - 2026-06-08

- Copy notifications now include the role and a short grapheme-safe preview.
- `/copy-user` now skips blank user entries and copies the most recent user message with text.
- Add direct numbered copies with `/copy-message <number>`.
- Add metadata copy format via `--with-meta`, `--with-metadata`, `--with-role`, and the picker `Alt+M` toggle.
- Add picker `Tab` peek mode for a wrapped preview of the selected message.
- Shorten picker help at narrow widths and remove the always-on subtitle.
- Stop matching timestamps in normal search; use `time:<term>` for timestamp search.
- Cache clipboard command lookups and try later clipboard commands when an earlier command fails.
- Document direct non-TUI usage for `/copy-user` and direct `/copy-message` selectors.

## 1.0.3 - 2026-06-07

- Register `/copy-message` before `/copy-user` so package command autocomplete prefers the picker over the shortcut.

## 1.0.2 - 2026-06-07

- Add `/copy-user` shortcut for copying the most recent user message directly.

## 1.0.1 - 2026-06-07

- Improve npm package description and keywords.
- Add GitHub repository description and topics.

## 1.0.0 - 2026-06-07

Initial release.

- Add `/copy-message` custom TUI picker.
- Copy raw stored session message text instead of rendered terminal lines.
- Show messages in chronological chat order with newest selected by default.
- Add role filters for user, assistant, and tool/bash messages.
- Hide tool/bash messages by default.
- Add type-to-filter search with selection restore when search is cleared.
- Add Home/End jumps for oldest/newest visible messages.
- Add fast paths: `/copy-message latest`, `/copy-message last`, and `/copy-message newest`.
