Releases
v0.2.0
Compare
Sorry, something went wrong.
No results found
Changelog
bd2a61a : fix(cli): surface errors on stderr instead of silent exit 1 (@leosocy )
0523abc : Merge pull request #2 from leosocy/fix/main-error-reporting (@leosocy )
6216867 : fix(import): reject cross-format output that would break byte-exactness (@leosocy )
945acba : Merge pull request #3 from leosocy/fix/cross-format-byte-preservation (@leosocy )
068d398 : fix(diff): ComputePlan returns non-nil slices for empty partitions (@leosocy )
89c7897 : Merge pull request #4 from leosocy/fix/empty-partition-sidecar (@leosocy )
c85efa4 : docs(spec): add v2 Phase 1 intra-layer binary diff design (@leosocy )
22f55a0 : docs(plan): add v2 Phase 1 intra-layer binary diff implementation plan (@leosocy )
9a5f5dc : chore: ignore .worktrees/ for isolated development (@leosocy )
ef0ad95 : docs(decision): select os/exec zstd as patch-from backend (@leosocy )
6053cef : feat(zstdpatch): add internal package for zstd patch-from encode/decode (@leosocy )
92ced62 : feat(diff): extend BlobRef schema + sidecar validation for intra-layer encoding (@leosocy )
18a7b06 : feat(exporter): add IntraLayerPlanner with size-closest matching (@leosocy )
b283fc2 : feat(exporter): expose LayerMeta on BaselineSet for intra-layer planner (@leosocy )
59e05cc : feat(exporter): wire IntraLayerPlanner into export orchestration (@leosocy )
cf55cc4 : refactor(importer): CompositeSource dispatches on sidecar encoding (@leosocy )
b1237aa : feat(importer): probe baseline for patch_from_digest union (@leosocy )
763df84 : feat(importer): DryRun reports patch_from_digest reachability (@leosocy )
890a96f : feat(cli): add --intra-layer=auto|off flag to export command (@leosocy )
09c5cde : test(fixtures): add v3 fixture pair for intra-layer testing (@leosocy )
89a872b : feat(cli): inspect reports full/patch split and archive totals (@leosocy )
4ea98e6 : test(e2e): add intra-layer roundtrip integration tests (@leosocy )
95b09fd : docs(spec): add v2 intra-layer backend resilience design (@leosocy )
a2fb122 : docs(spec): correct backend-resilience spec re: encoding=full semantics (@leosocy )
b5efb4a : fix: make zstd empty-target path safe, clean lint baseline to zero (@leosocy )
2a17f61 : style(fixtures): suppress G115 on bounded byte cast (@leosocy )
033e7b8 : fix(test): propagate btrfs/devicemapper exclude tags to cmd subprocess tests (@leosocy )
a4a5e64 : docs(spec): add v2 intra-layer backend resilience design (@leosocy )
42f214b : docs(spec): add v2 content-similarity layer matching design (@leosocy )
6cd70fe : docs(plan): add v2 content-similarity matching implementation plan (@leosocy )
1eeaf05 : docs(decision): record content-similarity spike results (@leosocy )
6519cfa : feat(exporter): add Fingerprint type and score helper (@leosocy )
6919498 : refactor(exporter): rename score accumulator to avoid bytes-package shadow (@leosocy )
8cb3c75 : feat(exporter): add DefaultFingerprinter for plain tar layers (@leosocy )
7af483b : style(exporter): suppress gosec G110 and revive unused-parameter on fingerprinter (@leosocy )
dc9cc65 : feat(exporter): DefaultFingerprinter handles gzip tar layers (@leosocy )
63ba356 : test(exporter): cover gzip construction failure and explain truncation (@leosocy )
ca39ad5 : feat(exporter): DefaultFingerprinter handles zstd tar layers (@leosocy )
4138682 : docs(exporter): correct zstd corrupt-header test comment on lazy NewReader (@leosocy )
1f52b9b : refactor(exporter): Planner accepts Fingerprinter dependency (@leosocy )
3564ed5 : feat(exporter): eager baseline fingerprinting in Planner (@leosocy )
5262f54 : feat(exporter): add pickSimilar content-matching baseline picker (@leosocy )
a36ffb7 : feat(exporter): Run uses pickSimilar for baseline selection (@leosocy )
87cd07b : fix(exporter): make sidecar timestamp deterministic for testing (@leosocy )
69eef34 : test(exporter): regression for deterministic archive output (@leosocy )
8171012 : test(fixtures): add v4 fixture pair for content-similarity matching (@leosocy )
fd0189c : fix(fixtures): align v4 shared file sizes and tune bSizeTrap for clear divergence (@leosocy )
1d73176 : test(integration): content-match beats size-closest on v4 fixture (@leosocy )
305e410 : docs(readme): describe content-similarity baseline picker (@leosocy )
6b798b5 : test(integration): tighten v4 round-trip to manifest-digest equality (@leosocy )
0374fed : refactor(exporter): hide Fingerprinter behind ExportWithFingerprinter test helper (@leosocy )
ede0ae6 : docs(review): address code-review minor findings (@leosocy )
7068272 : style(fixtures): drop nested block in v4 dispatch, prealloc outputs (@leosocy )
792fb4f : Merge pull request #5 from leosocy/spec/v2-intra-layer-design (@leosocy )
8af11b5 : Merge pull request #6 from leosocy/spec/v2-content-similarity-matching (@leosocy )
efa34e1 : feat: multi-image bundle import with streaming compose (#7 ) (@leosocy )
f0a34dc : Merge branch 'master' of github.com:leosocy/diffah into spec/v2-zstd-backend-resilience (@leosocy )
9932061 : docs(spec): refresh zstd-backend-resilience spec against post-PR-#6 master (@leosocy )
740a6e1 : docs(plan): add implementation plan for diffah v2 zstd backend resilience (@leosocy )
7696304 : refactor(zstdpatch): move EncodeFull/DecodeFull to klauspost/compress (@leosocy )
7ae865c : fix(zstdpatch): remove exported mutable state and race-prone reset (@leosocy )
85dff84 : feat(exporter): add resolveMode + Probe/WarnOut options (@leosocy )
d190ced : test(exporter): cover required-mode hard-fail and auto-mode silent downgrade (@leosocy )
13a8abe : chore(exporter_test): fix test assertion ordering and add explanatory comment (@leosocy )
7b29e7a : feat(importer): probe-early-fail when archive has patch entries (@leosocy )
88fd323 : chore(importer): add clarifying comment for probe result discard (@leosocy )
16a5528 : feat(cli): accept --intra-layer=required; surface probe state in inspect (@leosocy )
72d277c : chore(cmd): add defensive t.Skip to TestInspectCommand_PrintsSidecarFields (@leosocy )
61f7a4a : test(integration): cover auto-mode silent downgrade under scrubbed $PATH (@leosocy )
e91f2c9 : chore(integration): remove unused origPath variable in TestIntegration_AutoDowngradesUnderReducedPATH (@leosocy )
b485589 : docs(readme): narrow zstd requirement to required-mode + patch-bearing imports (@leosocy )
6a05f19 : chore: fix lint violations (goconst, gocritic, gofmt, revive) (@leosocy )
a32c4cf : test(zstdpatch): add ResetProbeCache for test isolation (@leosocy )
811421c : docs(spec): add zstd-backend-resilience cleanup design (@leosocy )
89f8ae9 : docs(plan): add zstd-backend-resilience cleanup implementation plan (@leosocy )
5438d2b : refactor(diff): promote sidecarHasPatch to Sidecar.RequiresZstd method (@leosocy )
35e2713 : fix(zstdpatch): wrap ctx.Err() on probe timeout so callers can errors.Is (@leosocy )
0e796bc : refactor(zstdpatch): drop sync.Once probe cache and ResetProbeCache (@leosocy )
bcd0fed : fix(zstdpatch): thread ctx into Encode/Decode via CommandContext (@leosocy )
74b136e : test(zstdpatch): tighten cancellation assertion to ErrorIs(Canceled) (@leosocy )
613a199 : perf(inspect): stop double-reading the sidecar via importer.DryRun (@leosocy )
4b33ce1 : test(inspect): delete dead Task-17 skips; add subprocess integration test (@leosocy )
1a3596c : chore: add modeRequired const; rewrite WHAT comments as WHY (@leosocy )
31ff22e : test(zstdpatch): rename cancellation test to match what it verifies (@leosocy )
2182565 : fix(test): propagate build tags to TestExport_RejectsUnknownIntraLayerValue (@leosocy )
ff6f739 : Merge pull request #8 from leosocy/spec/v2-zstd-backend-resilience (@leosocy )
3c81b3a : docs(spec): add Phase 1 observability foundations design (@leosocy )
d82c4e1 : docs(plan): add Phase 1 observability foundations implementation plan (@leosocy )
f3f7c21 : feat(errs): add Category + Classify taxonomy (@leosocy )
d1f36d2 : feat(cmd): classify errors into exit codes 0/1/2/3/4 (@leosocy )
9ff243c : refactor(errs,cmd): address code quality review findings (@leosocy )
140e52b : feat(cmd): slog bootstrap with --log-level/--log-format (@leosocy )
d3166ec : feat(*): thread slog.Default through every package (@leosocy )
86b2218 : feat(progress): add Reporter interface with Discard, Line, and FromWriter (@leosocy )
e42d71e : feat(progress): add Reporter/Layer interfaces, wire into exporter+importer (@leosocy )
dedf280 : feat(progress): add mpb multi-bar reporter + --progress flag (@leosocy )
aeb1681 : feat(cmd): --output json on inspect and errors (@leosocy )
240fdd2 : feat(cmd): add --output json support for export and import dry-run (@leosocy )
5aab119 : docs(compat): add exit-code, schema, and log stability contract (@leosocy )
3a31e8d : feat(cmd): add diffah doctor preflight scaffold (@leosocy )
871222a : fix(compat,doctor): address spec review findings (@leosocy )
c83a796 : refactor(zstdpatch,doctor): address code quality review findings (@leosocy )
9ab9e74 : fix(cmd,progress,errs): address code review findings from spec compliance audit (@leosocy )
a9b4bf5 : refactor(progress,cmd): export progress.IsTTY and remove cmd-local duplicate (@leosocy )
c849eb0 : fix(errs): classify cobra arg-count errors as user (exit 2) (@leosocy )
38c5646 : fix(cmd): rewireSlogToBars must preserve auto-format TTY decision (@leosocy )
9e2ff80 : refactor(cmd): rename importFlags.outputFormat to imageFormat (@leosocy )
5b3cf1c : refactor(cmd): unexport ClassifyExitCode/RenderError, share classifyAndExit (@leosocy )
e38073d : refactor(cmd): promote doctorErr to errDoctorChecksFailed sentinel (@leosocy )
947731c : refactor(cmd): inline trivial currentLogFormat wrapper (@leosocy )
79e81f0 : fix(cmd): normalize zstd_available in inspect snapshot for CI portability (@leosocy )
28b8d9d : test(cmd): cache diffah binary across integration suite via sync.Once (@leosocy )
53351dd : style(cmd,errs): gofmt test files and share logger defaults in cmd tests (@leosocy )
72f35ab : test(cmd): unset CI env in auto+TTY tests that assert text handler (@leosocy )
c071c3d : Merge pull request #9 from leosocy/spec/v2-observability-foundations (@leosocy )
7c9e2b9 : docs(cli): spec skopeo-inspired CLI redesign (@leosocy )
8f87537 : docs(cli): add implementation plan for skopeo-inspired redesign (@leosocy )
ac40599 : feat(cmd): add transport-prefixed image reference parser (@leosocy )
f844939 : feat(cmd): add requireArgs validator with usage+example guidance (@leosocy )
47f36be : feat(cmd): install usage template with Arguments section (@leosocy )
aadc40b : feat(cmd): trap removed 'export'/'import' verbs with migration hint (@leosocy )
913d71e : feat(cmd): rename global --output to --format (-o) and add -q/-v (@leosocy )
ac7429c : fix(cmd): reset flag state in test Run helper (@leosocy )
a46b887 : feat(cmd): add 'diff' subcommand for single-image delta (@leosocy )
f46bb08 : test(cmd): integration coverage for 'diff' subcommand (@leosocy )
2c21b17 : feat(cmd): add 'apply' subcommand for single-image reconstruction (@leosocy )
eb067e7 : test(cmd): integration coverage for 'apply' round-trip (@leosocy )
d053e6d : feat(cmd): add 'bundle' subcommand for multi-image bundling (@leosocy )
dd6c2f0 : test(cmd): integration coverage for 'bundle' with spec file (@leosocy )
c231ef5 : fix(cmd): tighten findSingleImageArtifact exact-match (@leosocy )
c66e767 : test(cmd): fix swallowed marshal err and add multi-pair bundle case (@leosocy )
9555137 : feat(cmd): add 'unbundle' subcommand for multi-image reconstruction (@leosocy )
999718d : test(cmd): integration coverage for bundle -> unbundle round-trip (@leosocy )
8c9bb13 : test(cmd): strengthen unbundle round-trip assertion (@leosocy )
485b088 : refactor(cmd): delete export/import; consolidate dry-run helpers (@leosocy )
ec3d2b7 : test(cmd): tighten inspect assertion to match 'default' name (@leosocy )
b2cc821 : test(importer): restore fixturePair helper (@leosocy )
b2ce534 : docs: CHANGELOG entry for CLI redesign (@leosocy )
ce5aa5a : docs: fix stale exit-code row and CHANGELOG wording (post-review polish) (@leosocy )
087a4a7 : fix(errs): align library hints/types with skopeo-inspired CLI surface (@leosocy )
248b59f : fix(cmd): classify apply/inspect boundary conditions as user/content (@leosocy )
7febbcc : fix(cmd): tidy CLI error UX rough edges found in e2e sweep (@leosocy )
02f99c7 : docs(compat): split digest-mismatch row between user and content codes (@leosocy )
74b25cb : refactor(cmd): simplify sweep on recent e2e fixes (@leosocy )
d814592 : style: resolve golangci-lint findings on the PR branch (@leosocy )
dadffbb : Merge pull request #11 from leosocy/spec/cli-redesign-skopeo-inspired (@leosocy )
a515add : perf(exporter): hoist Planner per-pair instead of per-shipped-blob (@leosocy )
395ff4e : fix(progress): NewBars falls back to line reporter on non-TTY writers (@leosocy )
ba9c5c3 : fix(exporter): stream Written() per chunk so progress bars actually animate (@leosocy )
2aa0510 : style(exporter): gofmt encode_test.go and drop trailing blank line (@leosocy )
180bf24 : Merge pull request #12 from leosocy/fix/progress-and-planner-hoist-followup (@leosocy )
6ff6063 : docs(spec): add production-readiness roadmap design (@leosocy )
751471d : Merge pull request #13 from leosocy/spec/v2-production-readiness-roadmap (@leosocy )
21750a1 : docs(spec): add Phase 2 registry-native import design (@leosocy )
2f06a90 : docs(plan): add Phase 2 registry-native import implementation plan (@leosocy )
ee09859 : chore: add go-containerregistry for in-process registry tests (@leosocy )
dbc963a : feat(errs): add ErrRegistry{Auth,Network,ManifestMissing,ManifestInvalid} (@leosocy )
7c4ef11 : feat(diff): add ClassifyRegistryErr helper (@leosocy )
8fd6456 : docs(diff): note string-match brittleness + case-ordering rationale (@leosocy )
d26e86d : feat(diff): add ParseOutputSpec + strict-prefix BASELINE-SPEC (@leosocy )
4acb9e4 : refactor(diff): move ParseBaselineSpec tests to bundle_spec_test.go (@leosocy )
647e989 : feat(imageio): add BuildSystemContext flag translator (@leosocy )
03b327a : docs(imageio): correct OptionalBoolPtr comment (not test-only) (@leosocy )
cb295c6 : refactor(importer): transport-agnostic baselines + lazy blob fetch (@leosocy )
c8e3d15 : fix(importer): include 'oci' transport in enforceOutputCompat check (@leosocy )
28b5f6a : fix(importer): preserve error context + enforceOutputCompat coverage + oci mkdir (@leosocy )
3a820ee : feat(registrytest): in-process OCI registry harness (@leosocy )
c58545a : feat(registrytest): WithTLS option for self-signed HTTPS (@leosocy )
b369865 : feat(registrytest): WithInjectFault for retry-path tests (@leosocy )
fd36b13 : test(importer): pull baseline from in-process registry (@leosocy )
8b51f61 : test(importer): push reconstructed image to registry (@leosocy )
7121882 : test(importer): assert lazy baseline fetch (@leosocy )
8ee9db2 : feat(importer): --retry-times retry loop on transient 5xx (@leosocy )
b0d39ec : refactor(importer): cap retry backoff at 30s + document retryable patterns (@leosocy )
ac213f2 : feat(cmd): accept docker://, oci:, dir: on image positionals (@leosocy )
e174e8e : feat(cmd): shared installRegistryFlags helper (@leosocy )
31e1d37 : feat(cmd): apply accepts registry TARGET-IMAGE; drops --image-format (@leosocy )
0ca7fc2 : feat(cmd): unbundle accepts OUTPUT-SPEC; installs registry flags (@leosocy )
4ccf19c : feat(cmd): migration hints on bare TARGET-IMAGE / dir OUTPUT-SPEC (@leosocy )
5a701e5 : refactor(cmd): fix transport comment + drop duplicate unbundle help test (@leosocy )
dd2d8f8 : test(cmd): registry integration matrix for diffah apply (@leosocy )
1f18fdf : test(cmd): multi-image unbundle across registry + filesystem (@leosocy )
0f105f1 : docs(compat): document Phase 2 registry surface and exit mapping (@leosocy )
199de98 : docs: CHANGELOG entry for Phase 2 registry-native import (@leosocy )
1e0fe6b : style(phase2): fix golangci-lint findings + gofmt across the batch (@leosocy )
e715ded : refactor(phase2): simplify sweep — drop lazyBlobFetcher, strip task refs, tighten comments (@leosocy )
fe0a048 : style(imageio): scope gosec G703 nolint on fileExists stat call (@leosocy )
71488c2 : Merge pull request #14 from leosocy/spec/v2-phase2-registry-native-import (@leosocy )
d4e25aa : Phase 3: registry-native export + cosign-compatible signing (#15 ) (@leosocy )
41fbf11 : Phase 4: delta quality & throughput (#16 ) (@leosocy )
81718bc : refactor: small cleanups from PR #14 /#15 /#16 review (#17 ) (@leosocy )
004ec03 : chore(repo): prepare for open-source readiness (#18 ) (@leosocy )
d1fe922 : feat(importer): dedupe baseline blob fetches across all images in a bundle (#26 ) (@leosocy )
f943fae : chore(deps): bump docker/setup-buildx-action from 3 to 4 (#19 ) (@dependabot [bot])
7114461 : chore(deps): bump goreleaser/goreleaser-action from 6 to 7 (#21 ) (@dependabot [bot])
7e5a755 : chore(deps): bump golang.org/x/crypto in the go-dependencies group (#25 ) (@dependabot [bot])
bcaee23 : chore(deps): bump actions/setup-go from 5 to 6 (#24 ) (@dependabot [bot])
f4b7690 : chore(deps): bump alpine from 3.20 to 3.23 (#22 ) (@dependabot [bot])
039518d : chore(deps): bump docker/login-action from 3 to 4 (#23 ) (@dependabot [bot])
c5f88c7 : chore(deps): bump docker/setup-qemu-action from 3 to 4 (#20 ) (@dependabot [bot])
c8dd95d : feat(importer): apply correctness & resilience — PR1 (B1/B2 errors) (#27 ) (@leosocy )
b2b7eb3 : feat(importer): apply correctness & resilience — PR2 (end-to-end invariant) (#28 ) (@leosocy )
3b26ac0 : feat(importer): apply correctness & resilience — PR3 (preflight) (#31 ) (@leosocy )
f275485 : feat(config): YAML config file (Phase 5.2) (#32 ) (@leosocy )
f5143e5 : feat(doctor): authfile / tmpdir / network / config checks (Phase 5.1) (#33 ) (@leosocy )
80412c9 : feat(inspect): per-layer table, waste, top-N, histogram (Phase 5.3) (#34 ) (@leosocy )
a264de6 : feat(recipes): Phase 5.6 cookbook — four recipes + CI smokes (#35 ) (@leosocy )
baa64c2 : chore(deps): bump actions/checkout from 4 to 6 (#29 ) (@dependabot [bot])
3bd8263 : chore(deps): bump github.com/mattn/go-isatty (#30 ) (@dependabot [bot])
e11965a : feat(release): Homebrew tap publishing (Phase 5.4) (#36 ) (@leosocy )
70152fc : fix(release): use $document shell var, not Go template, in syft args (#37 ) (@leosocy )
You can’t perform that action at this time.