Skip to content

Releases: deploymenttheory/go-apfs-v2

v0.3.0

Choose a tag to compare

@ShocOne ShocOne released this 29 Jul 11:09
442a9f2

0.3.0 (2026-07-29)

Features

  • pack: add LZFSE and LZMA DMG compression, default to LZFSE (217d6a7)

Binaries are pure Go and require no runtime dependencies.

Verify a download against the signed checksum file:

cosign verify-blob \
  --bundle apfs_0.3.0_checksums.txt.sigstore.json \
  --certificate-identity-regexp 'https://github.com/deploymenttheory/go-apfs-v2/.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  apfs_0.3.0_checksums.txt

shasum -a 256 -c apfs_0.3.0_checksums.txt --ignore-missing

v0.2.0

Choose a tag to compare

@ShocOne ShocOne released this 28 Jul 15:44
b9ddb83

0.2.0 (2026-07-28)

Features

  • apfs: unlock FileVault volumes with a supplied password (9b4fa0e)
  • apfswrite: carry decmpfs compression through unchanged (41b0ce9)
  • apfswrite: write a volume group as the system/data pair it is (f4de4d1)
  • apfswrite: write containers holding several volumes (a21e9d1)
  • apfswrite: write several snapshots per volume (8efce8d)
  • carry resource forks in the HFS+ writer (d96961b)
  • emit case-insensitive HFS+ volumes (e70d8ea)
  • hfsplus: carry decmpfs compression through unchanged (f62656c)
  • hfsplus: carry resource forks (d2b7cca)
  • hfsplus: emit case-insensitive volumes (c095f6c)
  • hfsplus: read extended attributes (bc53ba9)
  • hfsplus: read transparently-compressed files (9eb2fdd)
  • hfsplus: represent hard links (1898792)
  • hfsplus: write the attributes file (f17be7b)
  • pack: preserve transparent compression when writing APFS (479ad9f)
  • read extended attributes on HFS+ (df7bbf7)
  • read transparently-compressed files on HFS+, and repair fixture generation (a73981f)
  • represent hard links in the HFS+ writer (7994803)
  • support HFS+ in mount and inspect (622cfae)
  • write the HFS+ attributes file (b03ce1b)

Bug Fixes

  • acceptance: compile the hard-link assertions on every platform (aed4ca2)
  • apfswrite: number a grouped system volume's inodes above the mark (195235d)
  • apfswrite: write only 4096-byte blocks (2480a2d)
  • compile the hard-link assertions on every platform (2e9e2aa)
  • correct the HFS+ capability docs and restrict the APFS writer to 4096-byte blocks (a4aff56)
  • declare a wrapped bare image as a partition image, so created DMGs mount (fa2d4d5)
  • disk: declare a wrapped bare image as a partition image (364458e)
  • disk: make the ADC and Apple Partition Map claims true (132d21d)
  • hfsplus: normalize names so macOS can find them (ea5d45e)
  • hfsplus: write the hard-link chain macOS requires (a0e0dc1)
  • normalize HFS+ names so macOS can find them (50455c6)

Binaries are pure Go and require no runtime dependencies.

Verify a download against the signed checksum file:

cosign verify-blob \
  --bundle apfs_0.2.0_checksums.txt.sigstore.json \
  --certificate-identity-regexp 'https://github.com/deploymenttheory/go-apfs-v2/.*' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  apfs_0.2.0_checksums.txt

shasum -a 256 -c apfs_0.2.0_checksums.txt --ignore-missing

v0.1.0

Choose a tag to compare

@ShocOne ShocOne released this 27 Jul 18:06
8238b62

What's Changed

  • build(deps): bump golang.org/x/crypto from 0.31.0 to 0.45.0 by @dependabot[bot] in #9
  • feat: finish up by @ShocOne in #18
  • feat: cli redesign + hsf+ support by @ShocOne in #19
  • feat(disk): UDIF/DMG writer and apfs pack for lossless repack by @ShocOne in #20
  • feat(hfsplus): HFS+ filesystem writer and 'apfs pack ' directory packing by @ShocOne in #21
  • feat: apfs write by @ShocOne in #22
  • docs: rebaseline README and CLI help for the full command set by @ShocOne in #23
  • feat: apfs file write by @ShocOne in #24
  • Bump actions/checkout from 4.2.2 to 5.0.0 by @dependabot[bot] in #1
  • Bump googleapis/release-please-action from 4.2.0 to 4.4.0 by @dependabot[bot] in #2
  • Bump actions/dependency-review-action from 4.5.0 to 4.8.1 by @dependabot[bot] in #3
  • Bump super-linter/super-linter from 7.3.0 to 8.2.1 by @dependabot[bot] in #4
  • Bump step-security/harden-runner from 2.11.0 to 2.13.1 by @dependabot[bot] in #5
  • feat: Relicense pkg/apfswrite to MIT via clean-room reimplementation by @ShocOne in #25
  • feat: apfs snapshots by @ShocOne in #26
  • feat: refactor terms to apple terminology by @ShocOne in #27
  • feat: reproducible (byte-identical) output from every write command by @ShocOne in #28
  • feat: decode volume roles and surface volume groups by @ShocOne in #29
  • fix: implement decmpfs LZFSE and repair inline decmpfs by @ShocOne in #39
  • fix: skip special files in pack instead of hanging on them by @ShocOne in #40
  • feat: report write fidelity, add --strict, and implement extract --xattrs by @ShocOne in #41
  • feat: let the DMG encoder read its source lazily by @ShocOne in #42
  • feat: build images into a scratch file rather than memory by @ShocOne in #43
  • feat: check for free space before building an image by @ShocOne in #44
  • feat: repack a DMG without materialising it by @ShocOne in #45
  • feat: stop the writers assembling images and files in memory by @ShocOne in #46
  • feat: carry extended attributes in the APFS writer by @ShocOne in #47
  • feat: store large extended attributes in data streams by @ShocOne in #48
  • feat: represent hard links in the APFS writer by @ShocOne in #49

New Contributors

Full Changelog: https://github.com/deploymenttheory/go-apfs-v2/commits/v0.1.0