• v4.1.1 6e237cec39

    v4.1.1
    All checks were successful
    published / fetched (push) Successful in 0s
    published / release-tag (push) Successful in 2s
    published / gpg-is-ready (push) Successful in 4s
    published / projectfile-is-valid (push) Successful in 9s
    published / source-is-compliant (push) Successful in 13s
    published / signing-is-ready (push) Successful in 6s
    published / source-is-tested (push) Successful in 17s
    published / projectfile-is-ok (push) Successful in 7s
    published / source-is-secure (push) Successful in 29s
    published / documentation-passes-lint (push) Successful in 58s
    published / documentation-is-ok (push) Successful in 0s
    published / source-is-ok (push) Successful in 0s
    published / source-passes-lint (push) Successful in 1m11s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (riscv64, linux) (push) Successful in 7s
    published / binaries-are-built (amd64, linux) (push) Successful in 7s
    published / binaries-are-built (arm64, linux) (push) Successful in 7s
    published / binaries-are-built (amd64, darwin) (push) Successful in 7s
    published / binaries-are-built (arm64, darwin) (push) Successful in 7s
    published / gsa (arm64, linux) (push) Successful in 4s
    published / gsa (riscv64, linux) (push) Successful in 4s
    published / gsa (amd64, linux) (push) Successful in 4s
    published / gsa (arm64, darwin) (push) Successful in 4s
    published / gsa (amd64, darwin) (push) Successful in 4s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (push) Successful in 11s
    published / binaries-are-ready (push) Successful in 0s
    published / binaries-are-torrented (push) Successful in 38s
    published / binaries-torrent-is-verified (push) Successful in 9s
    published / image-is-built (amd64) (push) Successful in 2m5s
    published / secrets-ready (push) Successful in 0s
    published / image-has-sbom (amd64) (push) Successful in 14s
    published / images-are-ok (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 19s
    published / container-is-ok (push) Successful in 0s
    published / container-ready-to-test (push) Successful in 0s
    published / container-is-diagnosed (push) Successful in 0s
    published / container-is-verified (amd64) (push) Successful in 53s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / publish-image (kiota) (push) Successful in 21s
    published / publish-image (dockerhub) (push) Successful in 50s
    published / image-is-signed (push) Successful in 0s
    published / release-is-published (push) Successful in 7s
    published / release-notes-are-published (push) Successful in 6s
    published / go-install-is-ok (push) Successful in 51s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-17 23:58:49 +00:00 | 0 commits to main since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    4 commits, 1 contributor, 6 hours since v4.1.0.

    Bug fixes

    • bridge: style the help title only on a colour terminal (a2e77c3)

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-bridge:v4.1.1
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/bridge:v4.1.1
    

    Go toolchain

    Install with the Go toolchain:

    go install projectfile.org/projectfile/bridge/v4/cmd/pf-bridge@v4.1.1
    

    Then run pf-bridge --help.

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-bridge https://kiota.ch/projectfile/bridge/releases/download/v4.1.1/pf-bridge-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-bridge
    ~/.local/bin/pf-bridge --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-bridge.

    Usage

    pf-bridge

    $ pf-bridge --help
    pf-bridge — keep every project file in sync with your projectfile document
    
    A projectfile (projectfile.yaml) is the single source of truth for a project:
    identity, people, links, and tool config. pf-bridge copies that data out
    into the files each tool already reads — README.md, package.json,
    CITATION.cff, forge settings — and reads two-way files back.
    Spec: https://projectfile.org/specification/
    
    Usage:
      pf-bridge <bridge> [args]   run one bridge (e.g. readme, npm, forge)
      pf-bridge all [flags]       update every file from the projectfile [rw]
      pf-bridge check [flags]     verify declared files match, write nothing [ro]
      pf-bridge to all            write projectfile out to every file [rw]
      pf-bridge from all          read every two-way file back in [rw]
      pf-bridge --list            list installed bridges
      pf-bridge completion SHELL  print completion script (bash|zsh|fish)
    
    [rw] updates files, [ro] only reads or compares. `check` without names
    covers the bridges this project declares; `check <name>…` narrows it,
    `check --all` covers every installed bridge instead.
    
    Shared flags (also accepted after a bridge name):
      --check, --dry-run, --force, --create-all, --fail-on-drift, --offline,
      --quiet, --verbose. Each has a PF_BRIDGE_* env equivalent.
      Drift warns by default; --fail-on-drift makes it fatal.
    
    Tools:
      cache                Manage the local SPDX and include cache
      forge                Push projectfile metadata out to the repository forge
      init                 Scaffold a new projectfile document (prefer pf-cli init)
      release-notes        Render release notes from git
      scan                 Run scanners to refresh projectfile metadata from filesystem signals
    Package manifests:
      composer   [rw]  composer.json — two-way sync
      npm        [rw]  package.json — two-way sync
      pyproject  [rw]  pyproject.toml — two-way sync
      shard      [rw]  shard.yml — two-way sync
    Citation and ownership:
      cff          [rw]  CITATION.cff — two-way sync
      codeowners   [rw]  CODEOWNERS — two-way sync
      funding      [ro]  FUNDING.yml — one-way render
      fundingjson  [ro]  funding.json — one-way render
    Documentation:
      ai-policy     [ro]  AI_POLICY.md — one-way render
      coc           [ro]  CODE_OF_CONDUCT.md — one-way render
      contributing  [ro]  CONTRIBUTING.md — one-way render
      dei           [ro]  DEI.md — one-way render
      fragments     [ro]  FEATURES.md, ROADMAP.md, … assembled from docs/<name>.d fragments (one-way render)
      readme        [ro]  README.md — one-way render
      security      [ro]  SECURITY.md — one-way render
      support       [ro]  SUPPORT.md — one-way render
    Repository setup:
      browserslist     [ro]  .browserslistrc — one-way render
      gitattributes    [ro]  .gitattributes — one-way render
      ignore           [ro]  .claudeignore, .containerignore, .dockerignore, .fdignore, .gitignore, .npmignore, .textlintignore — one-way render
      license          [ro]  LICENSE + LICENSES/<spdx>.txt (one-way render, always overwrite)
      releaserc        [ro]  .releaserc.yaml — one-way render
      vulnerabilities  [ro]  .grype.yaml, .trivyignore, audit-ci.jsonc, osv-scanner.toml — one-way render
      yamllint         [ro]  .yamllint — one-way render
    
    Help per bridge: pf-bridge <bridge> --help
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-bridge:v4.1.1
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/bridge:v4.1.1
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-bridge:v4.1.1
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/bridge:v4.1.1
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-bridge.asc https://kiota.ch/projectfile/bridge/releases/download/v4.1.1/pf-bridge-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-bridge.asc ~/.local/bin/pf-bridge
    
    # every downloaded asset at once
    gpg --verify pf-bridge-SHA256SUMS.asc pf-bridge-SHA256SUMS
    sha256sum --check --ignore-missing pf-bridge-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/bridge/compare/3.7.0...v4.1.1

    Downloads