Repository navigation
Releases: sovereignfs/fjord
Release list
fjord-cli 0.2.0
Release Notes
You can now decrypt a whole encrypted vault in place, work on it with any
editor, and check it back in; and fjord sync no longer publishes, or
silently drops, plaintext left in an encrypted vault. There is no format
change from 0.1.3: repositories made by it are unaffected. The
specification is amended (§6.5, and a new §6.6): a checkout is the one
sanctioned exception to "no plaintext in an encrypted vault", and other
clients will see a checked-out vault as files in the clear.
Two commands are stricter, deliberately. fjord sync, rekey and
vault add --commit now refuse while an encrypted vault holds a file in
the clear, is checked out, or has lost its guard .gitignore; sync used
to answer "already up to date". A script that relied on rekey carrying on
past a stray file will now see exit 1.
Added
fjord decrypt <vault>andfjord encrypt <vault>: work on a whole
vault. Decrypting a vault writes every document beside its payload
(notes.md.age→notes.md), so any editor or note application can work
on it in place;fjord encrypt <vault>checks it back in, re-encrypting
only what changed, adding what is new, and removing the encrypted copies of
what you deleted after asking (--yes,--dry-run,--discard). Until
thenfjord sync,rekeyandvault add --commitrefuse. See "Working on
a whole vault" in the README. This is spec §6.6, a new section. It is
the one exception to "never write plaintext into an encrypted vault", and
the vendored spec and CLAUDE.md's first invariant are amended to say so;
fjord-specupstream needs the same change.fjord statusandfjord verifysay when a vault is checked out, and
status --jsongainscheckedOut.fjord verify --fixnow exists. The README has documented it since the
start, and until now it was refused as a usage error. It repairs
fjord.jsonwhere it disagrees with the disk, as spec §2.1 asks: a vault
on disk that the manifest does not list (W601) is added with its ownid,
and an entry for a vault that is gone (E106) is removed. Unknown keys and
other entries are preserved; nothing is committed; a repository from a
newer format version is refused.--jsongains arepairsarray when
--fixis given. It repairs nothing else, and the README says what it
leaves alone.fjord verify --jsondeclares the conformance levels (spec §10) in a new
conformancefield:["L0", "L1", "L2", "L3"]. The declaration is
fjord_core::conformance::DECLARED. L1 requires repairingfjord.json,
which is what--fixis for; L3 carries one limit, documented in the
README: a vault that lists an SSH recipient is refused for writing, since
this build links no RSA implementation.
Fixed
fjord importinto anid-named vault now names each payload after the
document's own id. Spec §7.2 requires the on-disk name to equal the
document'sid. Import gave every payload a fresh id and kept the
Markdown's own inside it, so the two disagreed whenever a file already had
frontmatter, which is exactly whatexportfollowed byimportproduces.
fjord verifycould not see it, because it never decrypts. A file that is
given frontmatter on import is named by the id it was given, and two files
in one import carrying the same id now refuse the whole import instead of
sharing a name. A vault imported into by an earlier version may hold
payloads whose names differ from their documents' ids; nothing detects
that today, and the way to correct one is to export the vault and import it
into a new one.fjord syncno longer commits, or silently skips, plaintext in an
encrypted vault. Spec §6.5 says a client MUST NOT commit an unencrypted
document into an encrypted vault, and relies on the vault's.gitignore.
That guard is a safety net, not a lock: with it intact, a stray decrypted
file was skipped bysyncwithout a word (your edit was in no commit, and
the output said "already up to date"), and with it deletedsynccommitted
and pushed the file.syncnow checks first, and refuses with exit1,
naming the files, when an encrypted vault holds a file in the clear
(E201) or has lost its guard.gitignore(E208).fjord rekeyand
fjord vault add --commit, which stage a whole vault, make the same check.
This has been the behaviour sincesyncwas added.
Changed
fjord rekeynow refuses, rather than skips, a file in the clear. It
used to carry on and note how many files it left alone; it now stops, for
the reason above, and leaves the file untouched.
Install fjord-cli 0.2.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord-cli/releases/download/v0.2.0/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord-cli/releases/download/v0.2.0/fjord-cli-installer.ps1 | iex"Download fjord-cli 0.2.0
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
fjord-cli 0.3.1
Release Notes
The tool behaves as before, apart from the Unicode update below. What is new
is a way to install it: Homebrew.
Added
- Homebrew:
brew install sovereignfs/tap/fjord. Each release now publishes a
formula to the tapsovereignfs/homebrew-tap, which installs the prebuilt
binary for macOS (Apple silicon and Intel) and Linux (x86-64 and arm64); nothing
is built from source. The shell and PowerShell installers and the archives work
as they did.
Changed
- Name normalisation follows Unicode 18. The NFC check on file and directory
names (spec §5.1) usesunicode-normalization0.1.26, which moves from Unicode
17 to Unicode 18. Unicode keeps already-assigned characters normalising the same
way, so no existing name changes. Only a name using a character first assigned
in Unicode 18 can be judged differently from one checked by a client still on 17.
Install fjord-cli 0.3.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord/releases/download/fjord-cli-v0.3.1/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord/releases/download/fjord-cli-v0.3.1/fjord-cli-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install sovereignfs/tap/fjordDownload fjord-cli 0.3.1
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
fjord-cli 0.3.0
Release Notes
There is no change to what fjord does or to the repository format. This
is the first release from the new monorepo: what changes is where the tool
lives and how it is published, and the installers, archives and commands you
already use keep working.
Changed
- The repository is now
sovereignfs/fjord, a monorepo for the
specification,fjord-core, the CLI and the clients and plugins to come.
The oldsovereignfs/fjord-cliURLs redirect, so existing install commands
and installers keep working. The package is stillfjord-cliand the
binary stillfjord. - Releases of the CLI are tagged
fjord-cli-vX.Y.Zfrom now on, so that
other components can have tags of their own. Releases up to 0.2.0 keep
theirvX.Y.Ztags. Only a CLI release is ever marked Latest, which is
what keepsreleases/latest/download/fjord-cli-installer.shpointing at
the CLI. - Releases are titled
fjord-cli 0.3.0, the component and the version,
without the date (the date is in this file). Earlier releases keep the
titles they have. - The specification is no longer described as vendored.
spec/SPEC.mdis
the canonical copy.
Install fjord-cli 0.3.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord/releases/download/fjord-cli-v0.3.0/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord/releases/download/fjord-cli-v0.3.0/fjord-cli-installer.ps1 | iex"Download fjord-cli 0.3.0
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
fjord-cli 0.1.3
Release Notes
Changed
- Release archives now include
CHANGELOG.md, beside the README and the
licence, so the history travels with the binary. The README links to it.
Notes
- There are no code changes in this release. The
fjordbinary, the
repository format and every command behave exactly as they did in 0.1.2,
and repositories are unaffected; the only difference in the binary is the
version it reports, and so thegeneratorthatfjord initrecords. This
release exists to ship the changelog in the archives, and it is the first
cut withscripts/release.sh, which now handles the version bump, the
checks and the tag.
Install fjord-cli 0.1.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.3/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.3/fjord-cli-installer.ps1 | iex"Download fjord-cli 0.1.3
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
v0.1.2
Release Notes
An encrypted vault can now be created ready to use, in one command. There is
no format change from 0.1.1: repositories created by 0.1.1 are unaffected.
Added
fjord vault add --recipient <key>registers an age public key as the
new vault's recipient, so the vault is writable immediately. Repeat it for
several. Before this, an encrypted vault was created unwritable (spec §6.2),
fjord verifywarnedW602, and you had to runfjord key addas a
separate step. Every key is checked before anything is written, so a bad
one refuses the whole command and creates nothing.fjord vault add --commitcommits the new vault in one commit,Add vault <name>, containing the vault and its entry infjord.jsonand
nothing else. It needs a git repository and refuses up front, creating
nothing, if there is none.fjord vault add --jsonprints the new vault's id, settings, the
recipients registered, whether it was committed, and the files written.
Standard output is the JSON and nothing else.
Changed
- A recipient's checksum is now checked by
key add,vault add --recipientandverify. A key with one mistyped character keeps the
right length and alphabet but fails its checksum, and was previously
accepted:key addtook it,verifycounted it as a usable recipient and
reported a clean repository, and the next write failed withinvalid Bech32 encoding. It is now refused up front, andverifyreports such a line as
E209.
A repository thatverifypassed under 0.1.1 can therefore fail under
0.1.2 if its recipients file contains one. Nothing could have been
written to that vault either way; the line needs correcting. key addrefuses SSH recipients. It previously accepted them and left
a vault this build could not encrypt to, since SSH support was dropped
over RUSTSEC-2023-0071. The error says why.
Fixed
open --commitandrekeyno longer commit work you had staged. Both
staged their own files and then ran a baregit commit, which commits the
whole index, so anything already staged landed in a commit whose message
said something else. They now commit only their own files and leave the
rest of the index as they found it. This has been the behaviour since
openwas added.- A secret key given by mistake is no longer echoed back.
key add's
error message repeated its argument, which would print an identity pasted
there by mistake into terminal scrollback. It is now redacted, and the
message says to treat the key as exposed, since it is already in your shell
history.
Install fjord-cli 0.1.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.2/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.2/fjord-cli-installer.ps1 | iex"Download fjord-cli 0.1.2
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
v0.1.1
Install fjord-cli 0.1.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.1/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.1/fjord-cli-installer.ps1 | iex"Download fjord-cli 0.1.1
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
v0.1.0
Install fjord-cli 0.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.0/fjord-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sovereignfs/fjord-cli/releases/download/v0.1.0/fjord-cli-installer.ps1 | iex"Download fjord-cli 0.1.0
| File | Platform | Checksum |
|---|---|---|
| fjord-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| fjord-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| fjord-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| fjord-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| fjord-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |