# Changelog
All notable changes to this project will be documented in this file.
## [0.26.0] - 2026-09-23
### Bug Fixes
- name the repository for gh in the publish job ([`ecc9a71`](https://github.com/gabrielgellner/plv/commit/ecc9a717769ca119a3c585ae832ab1357cf0dc59))
### Documentation
- say how to install the prebuilt binary ([`eda5125`](https://github.com/gabrielgellner/plv/commit/eda51256e9d15ad80296baf89baab72817874c66))
- cargo binstall, and move the pinned version on ([`b83072b`](https://github.com/gabrielgellner/plv/commit/b83072ba7ecb5c0b92ef4a4ee171a8ff6c62b68f))
### Features
- let cargo-binstall fetch the release tarball ([`e091db2`](https://github.com/gabrielgellner/plv/commit/e091db2a1c7ab51210d65356815fc0070f587b7d))
## [0.25.0] - 2026-09-23
### Miscellaneous
- release from GitHub, and describe the crate for crates.io ([`0eaba47`](https://github.com/gabrielgellner/plv/commit/0eaba47829d11dce64ab88d1e40088d89af886d1))
## [0.24.0] - 2026-09-10
### Features
- the cell window searches the value it is showing ([`3941c76`](https://github.com/gabrielgellner/plv/commit/3941c764d33cd095bb593ee39b48d6ecb154141f))
## [0.23.0] - 2026-09-10
### Features
- a text column sorts by the numbers written in it ([`10d14bd`](https://github.com/gabrielgellner/plv/commit/10d14bdd8450666964338611515d95ec5c70f07f))
## [0.22.0] - 2026-09-09
### Documentation
- a sweep over everything the last nine releases added ([`414d301`](https://github.com/gabrielgellner/plv/commit/414d301b233eaef2aae535af3d5ee557c0eaec01))
### Features
- the cell window reads markdown, and changes nothing ([`542e1e9`](https://github.com/gabrielgellner/plv/commit/542e1e9fe958e784bc4008a59ab14ccbe0f15682))
## [0.21.0] - 2026-09-09
### Features
- yank to the system clipboard, and take a paste back from it ([`42aac62`](https://github.com/gabrielgellner/plv/commit/42aac6267fd6eb6806ab3f902f1ade8b7784c41a))
## [0.20.0] - 2026-09-08
### Features
- a deep page seeks to its file instead of counting to it ([`3c4f55a`](https://github.com/gabrielgellner/plv/commit/3c4f55a2d7db5078a0c725c7189239343b2f8e59))
## [0.19.0] - 2026-09-08
### Features
- the cell window reads XML and HTML as documents ([`cc389c9`](https://github.com/gabrielgellner/plv/commit/cc389c9d08a1eae496b95f7ed5760950b5212c58))
## [0.18.0] - 2026-09-08
### Bug Fixes
- a write hands back the index of the file it wrote ([`a5bcafd`](https://github.com/gabrielgellner/plv/commit/a5bcafd6fbd6d4d90ee765471a10a7adef38712e))
### Features
- write JSONL edits back, splicing the record's own bytes ([`bf5e647`](https://github.com/gabrielgellner/plv/commit/bf5e6474a4ade853b997bb1e20b9e645bf0a2f44))
## [0.17.1] - 2026-09-08
### Bug Fixes
- a read-only file's help overlay names the commands it answers ([`43d795c`](https://github.com/gabrielgellner/plv/commit/43d795ce7f8fac00a7786ec28bbf2474100b0e13))
## [0.17.0] - 2026-09-08
### Features
- `:expand` lifts a JSONL document into columns ([`721ee85`](https://github.com/gabrielgellner/plv/commit/721ee858ebf5a14421a8d28a89ce1e70f634df5f))
## [0.16.0] - 2026-09-08
### Features
- sort a JSONL file by holding it, as a delimited one is ([`4308877`](https://github.com/gabrielgellner/plv/commit/43088777d4d9dea872f6b0dd53f77bdb57a3e254))
## [0.15.0] - 2026-09-08
### Features
- read JSONL logs into the grid ([`1bb015a`](https://github.com/gabrielgellner/plv/commit/1bb015adc8c5f798ed6028b80a63407595248bb4))
## [0.14.0] - 2026-09-07
### Features
- a JSON cell is shown as a document, not as a paragraph ([`4846e74`](https://github.com/gabrielgellner/plv/commit/4846e7456512b1b08c2c4661fd95aba2fe8b4ab1))
## [0.13.0] - 2026-09-07
### Documentation
- polish is a feat, not a fix ([`1a92ab4`](https://github.com/gabrielgellner/plv/commit/1a92ab4b5f1d4591106292d64d314cff761ff84a))
### Features
- `K` opens the cursor cell in a window of its own ([`7cf51f1`](https://github.com/gabrielgellner/plv/commit/7cf51f156d4f2340c6e5cc576c392a8d026f5042))
### Miscellaneous
- a `just install` recipe ([`c5ef842`](https://github.com/gabrielgellner/plv/commit/c5ef84228d2ebbaf698e8795fcdc3b7d2555996c))
- recipe summaries that survive `just --list` ([`b9f630f`](https://github.com/gabrielgellner/plv/commit/b9f630f89a5e7e35d323f06a47cd8e642fda8c35))
## [0.12.0] - 2026-09-03
### Bug Fixes
- `-` takes a column cursor instead of doing nothing ([`29947d3`](https://github.com/gabrielgellner/plv/commit/29947d374721f9723a35304e615ec0cabfed973f))
- `s` takes a column cursor instead of doing nothing ([`1354513`](https://github.com/gabrielgellner/plv/commit/135451337dae81f854eefb16bb99acc1ca2bbf2c))
- the sort indicator no longer eats the column name ([`11d61bc`](https://github.com/gabrielgellner/plv/commit/11d61bc4af3894f0a3d5bcb713e4283ff9ee3b89))
- a single sort key is drawn as just its arrow ([`754e6ef`](https://github.com/gabrielgellner/plv/commit/754e6ef90a4879d9a7db3f71237762a6af559a41))
### Documentation
- the column keys in the README ([`393c128`](https://github.com/gabrielgellner/plv/commit/393c128f273f764c3104a1a87734237b596e1348))
## [0.11.0] - 2026-09-03
### Bug Fixes
- the picker toggles with -, and does not bind q ([`7e1b8e8`](https://github.com/gabrielgellner/plv/commit/7e1b8e86c86c02427739f570d4a09928fc3bf1a5))
### Features
- a column picker on C ([`9503ad1`](https://github.com/gabrielgellner/plv/commit/9503ad1a0979963b8791e175264669fff873f1ff))
- show all and hide all in the picker ([`52467d7`](https://github.com/gabrielgellner/plv/commit/52467d76794363a3a6af5c1d771117c6b24f33b8))
## [0.10.0] - 2026-09-03
### Features
- pin columns to the left edge with zp ([`f2b660e`](https://github.com/gabrielgellner/plv/commit/f2b660e8334118ba31aeda330ac9ac04d8dc4325))
- hide the cursor column with - ([`cf5935f`](https://github.com/gabrielgellner/plv/commit/cf5935f95eca786917eb1fdb2d457740bd6aa8ab))
## [0.9.0] - 2026-09-03
### Bug Fixes
- let shift be held through a z command ([`1e108d7`](https://github.com/gabrielgellner/plv/commit/1e108d7043c6843ac0d820e30a2545fcd7ce171f))
### Features
- set column widths with z> z< z_ z= ([`200f134`](https://github.com/gabrielgellner/plv/commit/200f134ca612263d6500cd5a34a8319712291401))
- whole-screen scrolling with Ctrl+f and Ctrl+b ([`8351fba`](https://github.com/gabrielgellner/plv/commit/8351fba9f9ddb1542b4df7b09948eafb52116760))
- show the cursor cell in full with K ([`6d11d50`](https://github.com/gabrielgellner/plv/commit/6d11d500b2c58d33dc39e2f45144540a3ae3e0ed))
## [0.8.0] - 2026-09-03
### Documentation
- bring the README up to date ([`0a6d8e8`](https://github.com/gabrielgellner/plv/commit/0a6d8e8a25bb1d91383d42674add70d12934eb23))
### Features
- delete rows with dd, and a visual d ([`adfa91c`](https://github.com/gabrielgellner/plv/commit/adfa91ce4a18db7fe02fce994fbd8e3b23cd06c8))
- open new rows with o and O ([`e23820e`](https://github.com/gabrielgellner/plv/commit/e23820ed4fbd723dcb50cec7fa849fb45a06b554))
## [0.7.0] - 2026-09-03
### Bug Fixes
- hold a sort instead of redoing it for every page ([`868f70e`](https://github.com/gabrielgellner/plv/commit/868f70ebb1a8b9ace9091c57945e17337745e46a))
- refuse an oversized sort rather than attempting one ([`e4614b3`](https://github.com/gabrielgellner/plv/commit/e4614b3fc81fed94b78c0e4f54696c8c94b0df5c))
- bound memory by what the machine has, and bound the filter at all ([`2593fa5`](https://github.com/gabrielgellner/plv/commit/2593fa590382273e0bc324fe9137b8042d0949ff))
- read scan chunks where they live, not from the top each time ([`dd43afb`](https://github.com/gabrielgellner/plv/commit/dd43afb4874e1f95ee5922aca77c1b748d21e710))
- bound a scan chunk by bytes, not by a row count ([`7d7d4bc`](https://github.com/gabrielgellner/plv/commit/7d7d4bce6bd18bd3c682ff972cdcf1f8e893230a))
### Features
- a filter and a sort at the same time ([`ed1601a`](https://github.com/gabrielgellner/plv/commit/ed1601aa596a76d233410b74965542953667d327))
- index where the rows are, so a page can be found ([`f36b051`](https://github.com/gabrielgellner/plv/commit/f36b051ff8e044f4b0ce51e8a70604a88523b7e1))
### Miscellaneous
- polars 0.53 → 0.55.2 ([`eef38e7`](https://github.com/gabrielgellner/plv/commit/eef38e7a97d040b974e05ff837af50d2d11674be))
## [0.6.0] - 2026-09-02
### Features
- parse and check the view language ([`cc8ea46`](https://github.com/gabrielgellner/plv/commit/cc8ea469ebb836e89dba3ea29f8848abbbc2526a))
- wire :select, :hide, :sort and :reset into the viewer ([`241da1c`](https://github.com/gabrielgellner/plv/commit/241da1cc9a9e5fcf94aebce21aff84f95460bbdf))
- a bare verb clears the slot it set ([`5871407`](https://github.com/gabrielgellner/plv/commit/5871407bb22bc7be105c1e2227f4b1a3eba354c0))
- :filter, resolved to a set of rows rather than composed ([`352cab9`](https://github.com/gabrielgellner/plv/commit/352cab9d563a27ede465689ca07c2ccf96afea6e))
- Tab completion on the `:` line, with a candidate panel ([`e0f31e6`](https://github.com/gabrielgellner/plv/commit/e0f31e62c92d9b631771ad0ef44318df60c16979))
### Miscellaneous
- keep commit subjects as written in the changelog ([`a70a1e7`](https://github.com/gabrielgellner/plv/commit/a70a1e7bdd302b8a4942e711a08ab6986adc6b52))
- drop the version heading from release notes ([`d4ba738`](https://github.com/gabrielgellner/plv/commit/d4ba7385bb33f61dbb04341ae74cc2c922a10f53))
## [0.5.0] - 2026-09-01
### Bug Fixes
- stop rendering text cells in quotes ([`8b4c3d6`](https://github.com/gabrielgellner/plv/commit/8b4c3d6cbba0956462cd2417f3a83593a90eefcc))
- show an empty cell as a marker rather than the word "null" ([`ecce3d0`](https://github.com/gabrielgellner/plv/commit/ecce3d09d2c8acebd6892011c52ddcea21a7483e))
- fit and finish for horizontal layout and movement ([`4ab5cd0`](https://github.com/gabrielgellner/plv/commit/4ab5cd00b2bd2aa71d9763d31f88c640aa35729f))
- gg for the first row, and vim's half-screen scroll ([`4fec0ab`](https://github.com/gabrielgellner/plv/commit/4fec0ab82c4d156bf9b31bec82269093861e32a7))
### Documentation
- describe the edit buffer in CLAUDE.md ([`f0882ac`](https://github.com/gabrielgellner/plv/commit/f0882ac77c647e36c0c82b20e975e824fd0fc733))
- note how cells and empty fields are rendered ([`fff8e42`](https://github.com/gabrielgellner/plv/commit/fff8e42ec293f833196641b698ed3b567c1c91e4))
### Features
- read TSV, .tab and .txt files ([`2a3328c`](https://github.com/gabrielgellner/plv/commit/2a3328ce2164c5226f39b8c4334bc0107892e8a2))
- edit delimited files in a buffer, written with :w ([`c562559`](https://github.com/gabrielgellner/plv/commit/c56255976772d329ff0dbee2af706bfe8cd3fbcb))
- count row numbers from the cursor ([`0061fe4`](https://github.com/gabrielgellner/plv/commit/0061fe4c350eae9c73f5b2a73c9620ee8d40c2f3))
- count h and l, like j and k ([`d88c384`](https://github.com/gabrielgellner/plv/commit/d88c3845bfcd79fe28c167ed724dfdd09e9c439b))
### Styling
- format the repo with cargo fmt ([`a738036`](https://github.com/gabrielgellner/plv/commit/a73803646d94afb9a808565ec1131fbf6d8a8623))
## [0.4.1] - 2026-08-27
### Bug Fixes
- add --version flag ([`458e329`](https://github.com/gabrielgellner/plv/commit/458e329f53c86bc9c9de3123cd2a540b2b5d6093))
## [0.4.0] - 2026-08-27
### Documentation
- README section and in-app `?` key overlay ([`1b9fc95`](https://github.com/gabrielgellner/plv/commit/1b9fc95dbd29610cd1b9ea9748bd335f9ecfa63c))
### Features
- catalog reader and file pane ([`2c6dbe2`](https://github.com/gabrielgellner/plv/commit/2c6dbe2bfd833f84f4e1970dd2d33ed69cb68857))
- snapshot picker with time travel ([`f0595bd`](https://github.com/gabrielgellner/plv/commit/f0595bd1c72c1b9e00233c183f664c3e659982ac))
### Miscellaneous
- skip merge commits in the changelog ([`150e6ee`](https://github.com/gabrielgellner/plv/commit/150e6eecbed0ee6f36091e2787da8c35e451f9c0))
### Refactoring
- read lakes through the ducklake extension ([`c5dece3`](https://github.com/gabrielgellner/plv/commit/c5dece3a252f031af117e5ebd60accac772a7b78))
## [0.3.0] - 2026-03-24
### Features
- multi-column sort with async animation ([`41b2688`](https://github.com/gabrielgellner/plv/commit/41b2688cfac764d13f7c9327cb97c2110a4516c2))
## [0.2.0] - 2026-03-24
### Features
- vim-style regex search with async background scanning ([`644d7e2`](https://github.com/gabrielgellner/plv/commit/644d7e2c8d7816ec8a689389aedfd3d195f9d311))
- column/cell selection modes with scoped search ([`034ff2a`](https://github.com/gabrielgellner/plv/commit/034ff2affeccbec869fad8165de247474174ef7f))
### Miscellaneous
- replace sed with cargo set-version for version bumping ([`8c1c235`](https://github.com/gabrielgellner/plv/commit/8c1c235f8dbc897e142b9bf3b5d7bd16fa5937f7))
## [0.1.0] - 2026-03-24
### Documentation
- add README ([`4ab472c`](https://github.com/gabrielgellner/plv/commit/4ab472c05bedf21c81516fd32906ffecc74b8fc1))
- add CONTRIBUTING guide covering dev setup and release workflow ([`28d7f22`](https://github.com/gabrielgellner/plv/commit/28d7f224fd50cdac324a523d04beb98b2a5d8a29))
### Features
- initial 3-layer CSV/Parquet TUI viewer ([`3fa6ba8`](https://github.com/gabrielgellner/plv/commit/3fa6ba87bf25211c6eca99525b87c279d54cae4d))
- cursor-based navigation with row highlight and nG jump ([`23ab64c`](https://github.com/gabrielgellner/plv/commit/23ab64c6ec9342bf14ac726f4ef255f49dd13bd2))
- csvlens-style column sizing, truncation, and plain row style ([`2e86d3d`](https://github.com/gabrielgellner/plv/commit/2e86d3ddf9775d119af701567d5022ed5d5c0747))
- theme system, separator lines, dynamic row width, partial columns ([`b68896d`](https://github.com/gabrielgellner/plv/commit/b68896df26d15267f096985ae9d4690b424e8616))
### Miscellaneous
- add MIT license ([`690d4cd`](https://github.com/gabrielgellner/plv/commit/690d4cddf1a58ad1b82cad903913c6438e577cc9))
- ad-hoc codesign on macOS to suppress Gatekeeper popup ([`a045e54`](https://github.com/gabrielgellner/plv/commit/a045e54edaf1b250fc1d57c0b66927cec5d0ce6d))
- add git-cliff changelog config and justfile release workflow ([`c88b048`](https://github.com/gabrielgellner/plv/commit/c88b048dbfe8b6cc2328016245a5a21531de046f))
### Styling
- fix clippy warnings ([`5cb0dba`](https://github.com/gabrielgellner/plv/commit/5cb0dba5f5d4bc0be4d3d3b09fd1e7cd00ff7722))
[0.26.0]: https://github.com/gabrielgellner/plv/compare/v0.25.0...v0.26.0
[0.25.0]: https://github.com/gabrielgellner/plv/compare/v0.24.0...v0.25.0
[0.24.0]: https://github.com/gabrielgellner/plv/compare/v0.23.0...v0.24.0
[0.23.0]: https://github.com/gabrielgellner/plv/compare/v0.22.0...v0.23.0
[0.22.0]: https://github.com/gabrielgellner/plv/compare/v0.21.0...v0.22.0
[0.21.0]: https://github.com/gabrielgellner/plv/compare/v0.20.0...v0.21.0
[0.20.0]: https://github.com/gabrielgellner/plv/compare/v0.19.0...v0.20.0
[0.19.0]: https://github.com/gabrielgellner/plv/compare/v0.18.0...v0.19.0
[0.18.0]: https://github.com/gabrielgellner/plv/compare/v0.17.1...v0.18.0
[0.17.1]: https://github.com/gabrielgellner/plv/compare/v0.17.0...v0.17.1
[0.17.0]: https://github.com/gabrielgellner/plv/compare/v0.16.0...v0.17.0
[0.16.0]: https://github.com/gabrielgellner/plv/compare/v0.15.0...v0.16.0
[0.15.0]: https://github.com/gabrielgellner/plv/compare/v0.14.0...v0.15.0
[0.14.0]: https://github.com/gabrielgellner/plv/compare/v0.13.0...v0.14.0
[0.13.0]: https://github.com/gabrielgellner/plv/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/gabrielgellner/plv/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/gabrielgellner/plv/compare/v0.10.0...v0.11.0
[0.10.0]: https://github.com/gabrielgellner/plv/compare/v0.9.0...v0.10.0
[0.9.0]: https://github.com/gabrielgellner/plv/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/gabrielgellner/plv/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/gabrielgellner/plv/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/gabrielgellner/plv/compare/v0.5.0...v0.6.0
[0.5.0]: https://github.com/gabrielgellner/plv/compare/v0.4.1...v0.5.0
[0.4.1]: https://github.com/gabrielgellner/plv/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/gabrielgellner/plv/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/gabrielgellner/plv/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/gabrielgellner/plv/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/gabrielgellner/plv/releases/tag/v0.1.0