Jun 29, 2022 Tags: devblog, kbs2, programming, rust
As of yesterday and beginning with 0.6.0,
kbs2
is in its sixth beta series. It turns out I lied
when I said that the 0.3.x series would be the last before a stable release!
This post is going to have a similar structure to the previous announcement posts, so you might wish to read those first (or not):
In a slight deviation, I’ll also include some updates from the 0.4.x and 0.5.x series, since they didn’t receive their own posts. I’ll also omit some changes where they don’t matter much (such as internal implementation details and refactorings); the entire history can be found in the CHANGELOG.
kbs2 dump
and kbs2 rm
can both take more than one record as input,
making batch or xargs
-style invocation much nicer:
1
2
3
4
5
# dump each record, in sequence
$ kbs2 dump pets.com gmail.com example.com
# remove all records specified on the output of `some-program`
$ some-program | xargs kbs2 rm
kbs2 agent query
has been added, and exits successfully if kbs2
’s agent
is holding a private key for the active configuration (i.e., public key).
1
2
$ kbs2 agent query || echo "agent is missing the default config's key"
$ kbs2 -c some-other-config/ agent query || echo "agent is missing custom config's key"
kbs2 --completions
now supports more shells (bash
, elvish
, fish
, powershell
, and zsh
)
1
$ eval "$(kbs2 --completions=$(basename "${SHELL}"))"
The kbs2 config
and kbs2 config dump
subcommands have been added, allowing
external commands (which may not have TOML-parsing capabilities) to access
the current configuration in JSON format.
1
$ kbs2 config dump | jq -r '."public-key"'
The kbs2-dmenu-pass
contrib command now reads the commands.ext.dmenu-pass.chooser
setting
for a user-specified dmenu
replacement. dmenu
remains the default.
The commands.new.default-username
setting allows the user to specify a default username
when creating logins with kbs2 new
.
kbs2
agent’s internal representation and protocol have changed, and are incompatible with
earlier versions. Users who upgrade from 0.3.x and earlier should run kbs2 agent flush -q
after upgrading to kill their outdated agent (which will be replaced by the newer one
on the next request)kbs2
generators now support multiple input alphabets, making it easier to enforce character
requirements. The default generator has been changed to support a wider range of characters.
kbs2
now searches for a config.toml
file instead of kbs2.conf
for its configuration, by
default. The legacy behavior is preserved for backwards compatibility, but will be removed
in an upcoming stable release.
All in-tree contrib scripts have been updated to take advantage of kbs2 config dump
.
kbs2
now respects XDG for loading the config and store directories. Most
users should not observe a change, but some may have to migrate their configuration and/or
store directories to the directories listed in their $XDG_CONFIG_HOME
or $XDG_DATA_HOME
,
respectively.
The kbs2-snip
contrib command now reads the commands.ext.snip.chooser
setting instead
of commands.ext.snip.matcher
, for consistency with kbs2-dmenu-pass
.
The kbs2-yad-login
contrib command now supports overwriting preexisting records.
The kbs2 new --generate
flag has been removed. Generation is now done “intelligently”
with the behavior that was previously toggled by the commands.new.generate-on-empty
setting.
The commands.new.generate-on-empty
option has been removed, as its behavior is now the default.
Intentions aside (I promised that 0.3.x would be the last beta before 1.0, and that was a year ago), there’s very little that needs to be done for a stable release.
The biggest thing is packages for more systems, but I think I’ll leave that up to end users.
Other than that, I’d like to increase kbs2
’s integration coverage, including coverage
of all of the CLI subcommands and flags. Please
help me with that, if you can!