Releases: hibeekaey/agent-sync
Release list
v1.6.2
Fixed
- A synthesizer's refusal was accepted as the new memory file whenever it
happened to open with a heading. Nothing else about the output was checked,
so three lines of "I cannot rewrite this document" replaced the whole file
and were redistributed to every agent, recoverable only from the.bak.
A synthesis must now be at least a quarter of the document it was given.
Shrinking is the job -- folding the imported sections away is most of it,
and a measured real merge came in at 45% -- so the floor sits an order of
magnitude above a refusal and well under a genuine merge.
Changes since v1.6.1
4 files changed, 85 insertions(+), 16 deletions(-)
Full diff: v1.6.1...v1.6.2
v1.6.1
Fixed
- A semantic synthesis was discarded whenever the model opened with a line of
chat before the document.valid_synth_outputrequired the very first line
to be a heading, so one sentence of preamble threw away an otherwise correct
merge of a 60 KB file and sentautoon to the next multi-minute fallback.
Prose above the first heading is now dropped, bounded to ten lines: anything
longer is a refusal rather than a document, and the deterministic merge
already in place is the better answer.
Changes since v1.6.0
3 files changed, 60 insertions(+), 2 deletions(-)
Full diff: v1.6.0...v1.6.1
v1.6.0
Added
- Colour in status output:
syncedgreen,STALEbold yellow, paths cyan,
synthesis magenta, counts bright green, failures red, and unified diffs
painted like a diff. This is the terminal the showcase video depicts. --color[=auto|always|never]and--no-color, honoured on every command,
plusNO_COLOR,FORCE_COLORandCLICOLOR_FORCE. The flags are global
and stop at a literal--, so a server's own--no-colorstill reaches it
throughmcp add.
Colour is additive: it appears only when standard output is a terminal, so
piped and redirected output, exit codes, generated markdown and JSON, hook
recipes and MCP snippets are byte-for-byte unchanged.
Fixed
- The test harness could escape its fixture.
AGENT_SYNC_HOMEisolates the
files agent-sync writes itself, butmcp syncdelegates to whichever
vendor CLI is onPATH, so a suite that forgot to prefix a mockPATH
registered its probe server in the developer's real configuration. Every
runner intests/lib.shnow pinsPATHto the fixture's mock directory,
and a policy test fails the build if one stops doing so.
Changes since v1.5.6
- feat: colour status output, opt-out and terminal-only (#20) (b418708)
- docs: the social preview doubles as the README hero (#19) (5d478a4)
- chore: ignore the local showcase-video project (#18) (9417915)
13 files changed, 610 insertions(+), 163 deletions(-)
Full diff: v1.5.6...v1.6.0
v1.5.6
Fixed
skills syncrefused the entire run when any source skill was a
symbolic link, which made the command unusable on machines where a
plugin had installed skills as links into a shared skills directory. A
symlinked source skill is still never copied, but it is now skipped by
name and counted in the summary while the rest propagate.
Added
docs/walkthrough.md: every command with real output, including the
refusals and safety behaviours that are easy to miss.
Changes since v1.5.5
- fix: skip symlinked source skills instead of refusing the run (#17) (a957d62)
- fix: boundary-aware compat matching, with fixtures (#16) (cd0b89a)
- docs: brew upgrade needs brew update first (#15) (3be2a68)
16 files changed, 721 insertions(+), 35 deletions(-)
Full diff: v1.5.5...v1.5.6
v1.5.5
Fixed
- Recovery guidance for a broken release was wrong and would have destroyed
a version number: GitHub permanently retires the tag name of a deleted
immutable release, sorelease-guardand CONTRIBUTING now say to bump to
the next patch instead of deleting and retrying the tag.
Changed
- The weekly compatibility job covers every CLI grammar
agent mcpdepends
on. Qwen Code and Amp were named in the contract but never checked, and
the checked CLIs asserted one representative flag rather than all of
them. Every flag and subcommand agent-sync passes is now asserted
individually, and a package that cannot be installed after three attempts
fails the job rather than being skipped, since a renamed or withdrawn
package is itself a compatibility break. release-guardnow requires both release assets, verifies the published
binary's build-provenance attestation, and checksSHA256SUMSagainst
the binary it ships with. Asset presence alone said nothing about where
the binary came from.
Changes since v1.5.4
6 files changed, 176 insertions(+), 55 deletions(-)
Full diff: v1.5.4...v1.5.5
v1.5.4
Changed
| Area | Change |
|---|---|
| Releases | Merging the version bump is the release. Every push to main compares VERSION in bin/agent against the current release and cuts a new one when it changes, so there is no tag to push and no button to click. |
| Release notes | Taken from the matching CHANGELOG.md section, always followed by the commit log, diffstat and compare link since the previous release. A missing changelog entry falls back to the commit log alone. |
| Release integrity | The release is assembled as a draft and published only once its attested assets are attached, which is the precondition for GitHub's immutable releases. |
| Release safety | A new release-guard workflow fails when a release is published without its assets, which is what happens if a release is created by hand. |
| Tests | The behavioral suite is split by surface into tests/*_test.sh over a shared tests/lib.sh, each with its own isolated fixture, so a single suite can run alone. |
Added
docs/compatibility.md: supported platforms, what agent-sync depends on
in each tool and how each dependency fails, agent version support,
semantic-versioning scope, stable on-disk state formats, and the
deprecation policy for removing a target.
Changes since v1.5.3
- fix: resume a stalled release instead of skipping it (#13) (c008834)
- ci: merging the version bump is the release (#12) (abb8431)
- test: split the suite by surface; docs: compatibility contract (#11) (acd221a)
- ci: bump actions/checkout from 4.2.2 to 7.0.1 (#9) (de0088a)
18 files changed, 1112 insertions(+), 765 deletions(-)
Full diff: v1.5.3...v1.5.4
v1.5.3
What's Changed
- ci: release integrity, provenance, pinned actions and compatibility checks by @hibeekaey in #8
Full Changelog: v1.5.2...v1.5.3
v1.5.2
What's Changed
- fix: harden sync safety and state handling by @hibeekaey in #7
Full Changelog: v1.5.1...v1.5.2
v1.5.1
What's Changed
- docs: the skill shares the CLI's version line by @hibeekaey in #5
- fix: run the release workflow when a release is published by @hibeekaey in #6
Full Changelog: v1.5.0...v1.5.1
v1.5.0
The feature-completeness release: everything your agents share, synced.
MCP servers (agent mcp): register once, push everywhere. CLI-driven for Claude/Codex/Gemini/Qwen/Amp (verified grammars, remove-then-add idempotency), agent-sync-owned dedicated files for Cursor/Windsurf/Kiro (files you created are never touched), paste-able snippets for Zed/OpenCode/Goose/Continue.
Skills (agent skills sync): mirror your canonical skills directory into every agent's user-scope skills dir, per the gh-skill registry mapping.
Memory packs (agent pack): shareable markdown packs from GitHub, pinned by commit in a lockfile, folded on sync, cleanly removable.
Hooks (agent hooks): verified snippets for automatic re-sync (Claude SessionEnd, Codex Stop, Gemini SessionEnd, OpenCode plugin).
Also: agent link --import, --only/--skip targeting, Homebrew tap auto-bump, WSL documentation.
Hardened by an adversarial review: 22 findings reproduced and fixed with regression tests, including symlink-routed data loss, a dash-fatal bare shift, and pack updates that could destroy local content.