patchwork 0.7.0
patchwork: ^0.7.0 copied to clipboard
Patch management for Dart projects, starting with reviewable dependency patches for pub packages.
Changelog #
0.7.0 - 2026-07-10 #
- Made the core
Patchworkfilesystem API synchronous and narrowedPatchwork.opento string paths; hook and CLI adapters remain asynchronous only where they run external processes. - Reorganized implementation and tests by domain, split public result models by workflow, and separated pub parsing, package diagnostics, cleanup planning, and text/JSON presentation responsibilities.
- Reused one failure-safe package materializer across apply and overlay workflows, consolidated overlay discovery/resolution, and removed repeated marker scans and unchanged marker writes from multi-package activation.
- Split override YAML I/O from ownership reconciliation, reused one override editor per batch operation, and centralized normalized override-path logic.
- Made public result collections immutable snapshots, replaced stringly typed
cleanup commands with
CleanupCommand, and madePatchwork.opena factory. - Moved apply and cleanup filesystem execution into domain executors so the
public
Patchworkclass remains the composition root instead of a workflow implementation. - Unified single-package and batch apply outcomes through
ApplyResult, made source-tree hashing lazy, and kept eachPatchworkinstance on one workspace snapshot. - Moved applied-state lifecycle rules under
state, made package directory swaps failure-safe, and tightened cleanup and overlay path result semantics. - Fixed dependency-override mirror precedence, overlay patch read diagnostics, and recursive gitignore wildcard handling found during review.
0.6.2 - 2026-06-30 #
- Split Patchwork state planning into dedicated edit, apply, cleanup, and undo planner components while keeping command execution behavior stable.
- Made explicit
patchwork apply <pkg>validate committed patch content before materializing generated output, matching apply-all validation. - Tightened artifact identity parsing and kept carry override-conflict hints
tied to the actual
patchwork carrycommand.
0.6.1 - 2026-06-25 #
- Lowered the minimum Dart SDK to
3.10.0while keeping Patchwork's package-provided build hook and overlay behavior intact. - Added CI coverage for Dart
3.10.0, Dart stable, Flutter3.38.2, and Flutter stable dependency resolution. - Refined README positioning around package-provided patches and project-owned patch workflows.
0.6.0 - 2026-06-23 #
- Added root-owned
patchwork patchandpatchwork carrysupport for transitive packages selected by the current pub resolution, while keeping package-provided overlays direct-only. - Switched Patchwork-owned YAML writes for
patchwork.yamlandpubspec_overrides.yamlto parser-backedyaml_editupdates. - Refreshed README guidance for package-provided patches and hook workflows.
0.5.0 - 2026-06-21 #
- Added
patchwork carry <pkg> [--from version]to carry stale patch files into current-version edit sessions for dependency upgrades. - Removed
patchwork.lockfrom root patch workflows. Patch files are now the committed patch truth; edit sessions keep hidden baselines under.patchwork/and applied output keeps generated ownership markers under.dart_tool/. - Made CLI
applyandundorefresh pub resolution by default, with--no-pub-getfor scripts that need the lower-level filesystem step. - Added
patchwork removeandpatchwork prunefor safe cleanup of stale patch files, open edit directories, and Patchwork-owned generated state. - Added doctor setup checks and explain-mode remediation details for project setup, generated state, and next-step guidance.
- Added overlay inspection for provider manifests, matched contributions, deduplication, and conflict diagnostics.
- Reduced build hook no-op noise when overlay manifests are absent.
- Split Patchwork internals around edit preparation, patch commits, applied output materialization/activation, dependency override state, status inspection, and overlay publishing.
- Reorganized README guidance around task-oriented workflows, generated state, CI, hooks, and provider overlays.
0.4.0 - 2026-06-20 #
- Added package-provided overlays through
patchwork.yaml, thepatchwork overlay <pkg>command, and Patchwork's built-inhook/build.dartfor composing matching dependency patch contributions in downstream apps. - Added opt-in Dart build hook helpers through
package:patchwork/hooks.dartfor automatically applying committed patches from user-ownedhook/build.dartfiles.
0.3.0 - 2026-06-18 #
- Added
--jsonoutput forpatch,commit,apply,undo,status, anddoctor. - Rejected same-package
dependency_overridesfrom projectpubspec.yamlfiles beforepatchorapplymutates Patchwork state. - Derived historical patch inventory from durable
patches/*.patchfiles while keeping current patch ownership inpatchwork.lock.
0.2.0 - 2026-06-17 #
- Rebuilt Patchwork around a library-first programmable model with CLI commands as thin adapters.
- Replaced patch sessions, baselines, stores, manifests, and target syntax with
the v0.2 paths:
.patchwork/<pkg>@<version>/,patches/<pkg>@<version>.patch, and.dart_tool/patchwork/<pkg>@<version>/. - Added
patchwork commit [pkg]and removedpatchwork patch --commit. - Added
patchwork undo <pkg>for safe removal of lock-ownedpubspec_overrides.yamlentries and generated applied directories. - Added
patchwork patch <pkg> [--continue [version]]for explicit patch carry-forward across dependency upgrades. - Reworked
patchwork.lockinto a v2 lockfile with sourcesha256,patch.commit-sha256, andapplied.patch-sha256records. - Added patch history
commit-sha256records so--continue <version>can safely reuse older patch files after a dependency upgrade. - Removed obsolete historical patch files when an unchanged fresh edit proves the upgraded dependency source already contains the fix.
- Added source records for hosted, custom hosted, path, and git dependencies.
0.1.1 - 2026-06-15 #
- Added clearer
dart pub getnext-step guidance after successfulpatchwork apply. - Hardened project-visible writes for
patchwork.lock, committed patch files, andpubspec_overrides.yaml. - Added CI release gates for
dart pub publish --dry-runand an example smoke test from a clean archive copy. - Updated the package README to position Patchwork as reviewable Dart pub
dependency patches without
.pub-cacheedits. - Rejected root packages as patch targets to avoid confusing self-patches.
0.1.0 - 2026-06-13 #
- Added the pub package Patchwork MVP.
- Added
patch,patch --commit,apply,status, anddoctorcommands. - Added committed
patchwork.lockmetadata andpatches/*.patchfiles. - Added generated
pubspec_overrides.yamlsupport for applying patches through pub path overrides. - Added end-to-end fixtures for the patch workflow.