Skip to content

Releases: sovereignfs/fjord

fjord-cli 0.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 17:14
c9d5b3a

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> and fjord 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
    then fjord sync, rekey and vault add --commit refuse. 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-spec upstream needs the same change.
  • fjord status and fjord verify say when a vault is checked out, and
    status --json gains checkedOut.
  • fjord verify --fix now exists. The README has documented it since the
    start, and until now it was refused as a usage error. It repairs
    fjord.json where 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 own id,
    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. --json gains a repairs array when
    --fix is given. It repairs nothing else, and the README says what it
    leaves alone.
  • fjord verify --json declares the conformance levels (spec §10) in a new
    conformance field: ["L0", "L1", "L2", "L3"]. The declaration is
    fjord_core::conformance::DECLARED. L1 requires repairing fjord.json,
    which is what --fix is 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 import into an id-named vault now names each payload after the
    document's own id.
    Spec §7.2 requires the on-disk name to equal the
    document's id. 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 what export followed by import produces.
    fjord verify could 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 sync no 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 by sync without a word (your edit was in no commit, and
    the output said "already up to date"), and with it deleted sync committed
    and pushed the file. sync now checks first, and refuses with exit 1,
    naming the files, when an encrypted vault holds a file in the clear
    (E201) or has lost its guard .gitignore (E208). fjord rekey and
    fjord vault add --commit, which stage a whole vault, make the same check.
    This has been the behaviour since sync was added.

Changed

  • fjord rekey now 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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 21 Oct 20:13

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 tap sovereignfs/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) uses unicode-normalization 0.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 | sh

Install 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/fjord

Download 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

Choose a tag to compare

@github-actions github-actions released this 21 Oct 18:19
7444386

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 old sovereignfs/fjord-cli URLs redirect, so existing install commands
    and installers keep working. The package is still fjord-cli and the
    binary still fjord.
  • Releases of the CLI are tagged fjord-cli-vX.Y.Z from now on, so that
    other components can have tags of their own. Releases up to 0.2.0 keep
    their vX.Y.Z tags. Only a CLI release is ever marked Latest, which is
    what keeps releases/latest/download/fjord-cli-installer.sh pointing 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.md is
    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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:43
18d1470

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 fjord binary, 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 the generator that fjord init records. This
    release exists to ship the changelog in the archives, and it is the first
    cut with scripts/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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 16:45
c3fe14e

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 verify warned W602, and you had to run fjord key add as 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 --commit commits the new vault in one commit, Add vault <name>, containing the vault and its entry in fjord.json and
    nothing else. It needs a git repository and refuses up front, creating
    nothing, if there is none.
  • fjord vault add --json prints 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 --recipient and verify. A key with one mistyped character keeps the
    right length and alphabet but fails its checksum, and was previously
    accepted: key add took it, verify counted it as a usable recipient and
    reported a clean repository, and the next write failed with invalid Bech32 encoding. It is now refused up front, and verify reports such a line as
    E209.
    A repository that verify passed 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 add refuses 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 --commit and rekey no longer commit work you had staged. Both
    staged their own files and then ran a bare git 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
    open was 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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 17 Oct 12:27
3490b84

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 | sh

Install 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

Choose a tag to compare

@github-actions github-actions released this 17 Oct 11:04
bc39da0

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 | sh

Install 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