# Rook change log

## [v0.2.1] Fri Feb 14 12:15:30 2025 -0600

### Changed

- Use Go 1.24's `go tool` for manpage generation, via go:generate.


## [v0.2.0] Fri Oct 11 09:01:03 2024 -0500

### Added

- suport for password + key file credentials
- show --no-eol option, to strip CRs after, eg, passwords

### Changed

- show matches search: it's now case insensitive

### Fixed

- successful OPEN with password wasn't clearing the one-time pin, so the DB was staying locked.


## [v0.1.3] Mon May 20 17:12:25 2024 -0500

### Added

- status command, a more lightweight way of testing if a DB is open. Using this instead of `info` in e.g. statusbar scripts greatly reduces CPU load.
- case-insensitive search.

### Changed

- adding some nil panics that could occur when DB is closed while a client call is being processed.

### Fixed

- a hidden bug in the OTP pin code.
- some errors being ignored (and therefore not logged)
- TOTP attributes getting missed by otp generator check


## [v0.1.2] Fri Apr 26 15:13:55 2024 -0500

### Added

- one-time pin soft locking
- installation instructions for distributions that have rook in a repository
- more of the special autotype {} commands are supported (backspace, space, esc)

### Changed

- getAttr adds a little delay before typing, allowing initiator tools (like rofi) to close windows before text is output
- cleans up code per golint/gochk

### Fixed

- an autotype bug in outputting literals


## [v0.1.1] Fri Mar 22 10:01:38 2024 -0500

### Added

- the original source rook.svg
- ability to start the rook server passing in the password via stdin pipe.

### Changed

- go modules metadata; drops required Go version to 1.21, for building on Alpine
- assets moved to directory
- documentation referenced Keepass v4; there's no such thing, it's v2.
- license, was missing (c) from original
- stop trying to remove the version number from build assets
- documentation to clarify when the master password exists as plain text, in response to questions from @d3Xt3r@lemmy.nz

### Removed

- go.mod toolchain, which go mod tidy added and breaks backwards compatability


## [v0.1.0] Fri Mar 15 14:03:25 2024 -0500

### Added

- nfpm file
- logo

### Changed

- clears out the password so it's not being held in plain text by the flags library.
- some of the documentation, and fixes the duplicated v0.0.9 entry in the changelog.
- CI build targets are more limited, but also include some distro packages
- better README documentation

### Removed

- the monitor attribute was taken out, as rook no longer busy-polls the DB


## [v0.0.9] Wed Mar 13 12:52:08 2024 -0500

### Changed

- gives CHANGELOG back its header


## [v0.0.8] Wed Mar 13 12:46:04 2024 -0500

### Changed

- hopefully improving readability of the README
- inlines openDatabase, which was two lines and used in two places
- autotype handles multiple matches and prompts the user when that occurs
- autotype to be more interactive, via yad
- match now returns all matches, in descending quality. The autotype function uses rofi to show options if there's more than one match.
- how rook refreshes the DB. Rather than a busy loop, the server checks whether the modification timestamp changed since the last call and auto-refreshes it if so.

### Fixed

- an NPE when the DB wasn't set


## [v0.0.7] Mon Mar 11 06:30:13 2024 -0500

### Changed

- where rook client opens the socket
- show field names are now case insensitive: password, PassWord, PaSSwoRd all match the actual field name "Password"

### Fixed

- search term being always required in show, even if -i was provided


## [v0.0.6] Sun Mar 10 13:23:30 2024 -0500

### Added

- getAttr.sh script
- an autotype script

### Fixed

- window misses in the scripts


## [v0.0.5] Fri Mar 08 23:40:08 2024 -0600

### Added

- ability to list as tree `--tree`
- db change monitoring
- making the server smarter, s.t. it checks for a running server and auto-cleans the socket
- match command

### Changed

- CHANGELOG
- cleans out remaining boilerplate from 5c1816990c47
- adds a little more server logging
- server errors always respond with FAIL(message)
- client detects empty server messages and exit 1

### Fixed

- bug where --help/-h was causing NPE

### Removed

- all of the DB editing boilerplate; this stays out of the rook roadmap (for now)


## [v0.0.4] Wed Mar 06 11:15:30 2024 -0600

### Added

- --secure mode

### Changed

- search to match in title, URL, or tags

### Removed

- regular expression pattern matching. I think it was overkill.


## [v0.0.3] Tue Mar 05 19:40:53 2024 -0600

### Added

- ability to set DB on server start, supplying credentials later with a client call
- some client feedback for some commands
- reload command
- support for generating TOTP codes from entries that are configured for it.

### Changed

- the CHANGELOG

### Fixed

- erroring when server is exited
- catching ^c interrupts and cleaning up socket file
- 'help command' not working
- output formatting on single field results
- the embedded version string.

### Removed

- removing the password parameter, which is unfortunately necessary to avoid some awkward refactoring. Just don't use the danged thing.
- the -p argument


## [v0.0.2] Tue Mar 05 11:38:35 2024 -0600

### Added

- path filtering on search and show
- open/lock commands.

### Changed

- show to include all matches, not just last
- some error handling & logging

### Fixed

- actually using regexp in the path/title terms


## [v0.0.1] Sun Mar 03 08:13:01 2024 -0600

### Added

- CI
- changelog
- status flags, examples, usage, caveats to readme
- path & index information to entry description
- option to manually set comm socket
- password prompt
- hiding unimplemented commands
- version
- auditing section to README, and includes the missed server.go file
- rudimentary README, and sets the license.

### Changed

- where the database is set, effectively making the tool client/server mode **only**

### Fixed

- help command not working
- a bug in entity path calculation
- the help logic
- a nil panic error with attempts to access an unset Command

## Todo

  1 REQ Add -1 to get closest (Levenshtein) match 
  2 REQ https://man7.org/linux/man-pages/man7/keyrings.7.html, or namespaces 
  3 REQ But *sigh* the wire format should probably be json or some shit
        [cbor](https://github.com/brianolson/cbor_go) looks awesome; it'd add an external dependency and 1155 more lines to audit. 
  4 BUG the sequences aren't rendered in some cases, e.g. TOTP fields. BACKSPACE, etc 
  5 BUG Enter doesn't seem to work properly, always, with web forms. Is there a Return? 
  6 REQ Can we be smarter and read fields from e.g. a selected web page? 
  7 REQ Check the client. If it's something like luakit, at least make sure we're in insert mode.
        The delay between character strokes, in ms 
  8 REQ cgroups to further constrain access to the socket. maybe
  9 REQ Allow the user to provide a program to run to request a password to unlock the DB if it is locked. maybe
 10 REQ Add kpmenu mode, where server is pre-configured with commands it can run, and the client just asks it to do things. 
 11 REQ Add YubiKey credential support 
 12 REQ Review this hacky way of evaluting the quality of a match string 
 13 REQ Review this hacky way of evaluting the quality of a match string 
