Releases: calionauta/agent-sync
Release list
v0.44.5-alpha
v0.44.5-alpha
chore: rename GitHub username renatocaliari β calionauta
No functional changes. Pure metadata/docs rename to align with the
new GitHub username.
Changes
- Source files:
security_scanner.py,publish/{base,config}.pyexample strings - Docs:
README.md,CHANGELOG.md,mkdocs.yml,docs/requirements.txt,index.html - Skills:
skills/README.md,skills/agent-sync/SKILL.md - Metadata:
pyproject.toml(author: Cali),cali-product-workflow.json,stelow.json(schema URLs) - GitHub templates:
.github/release-template.md,spec_v1.mdexamples
Local config updates required
If you have existing config, update:
# ~/.config/agent-sync/publish.yaml
published_repo: https://github.com/calionauta/agent-sync-public
skill_sources[0].url: https://github.com/calionauta/pi-product-workflow
# ~/.config/agent-sync/config.yaml
repo_url: https://github.com/calionauta/agent-sync-private.gitTests
567 passed. No lint regression.
Migration notes
- Historical release notes (e.g.
.github/release-v0.13.0.md) intentionally retain old username renatoac82@gmail.compreserved as author email- Git history is immutable β old commits retain
renatocaliariauthor identity (correct)
Full Changelog: v0.44.4-alpha...v0.44.5-alpha
v0.44.4-alpha
Release v0.44.4-alpha
What's Changed
Added
- Prune orphaned subdirs in
configs/pi.dev/after staging (removes dirs no longer in category_map, e.g. legacyhooks/after rename tohook/) - Print per-category file count during stage so users see what was backed up
Fixed
agent-sync pushno longer leaves stale orphan directories in the private repo after renames or registry changes
Full diff: v0.44.3-alpha...v0.44.4-alpha
v0.44.3-alpha
Release v0.44.3-alpha
What's Changed
Changed
- Rename repo backup subdirectory
hooks/βhook/to match filesystem path~/.pi/agent/hook/ - Stage and restore now consistent: source
~/.pi/agent/hook/β repoconfigs/pi.dev/hook/
Full diff: v0.44.2-alpha...v0.44.3-alpha
v0.44.2-alpha
Release v0.44.2-alpha
What's Changed
Fixed
- Correct pi.dev hooks extra_paths from
~/.pi/agent/hooks/(plural, non-existent) to~/.pi/agent/hook/(singular, where hooks.yaml actually lives)
Changed
- Remove non-config entries from pi.dev extra_paths: bin (binary), git (689MB cache), global_skills_local (dedicated hub)
- Remove dead category_map/dir_categories entries and git skip blocks from sync.py
- Remove dead property methods from agents/base.py
- Add pythonpath = ["src"] to pytest config so tests use local source, not installed global package
- Clean up test mock assignments for removed properties
Full diff: v0.44.1-alpha...v0.44.2-alpha
v0.44.1-alpha: backup pi.dev hooks/ directory
Added
- Backup pi.dev hooks/ directory via extra_paths (#backup hooks)
~/.pi/agent/hooks/now synced toconfigs/pi.dev/hooks/- Covers hooks.yaml and any auto-install hook configs
Full changelog: v0.44.0-alpha...v0.44.1-alpha
v0.44.0-alpha: fix prune_skills and orphan warning
Fixed
- β No orphan skills β repo and hub are in sync. no longer fails with 'nothing to commit' β now correctly stages deletions via
_prune_orphan_skillsbefore committing share runauto-sync now warns about orphan skills instead of silently ignoring them- Pre-existing
callable | Nonetype annotation crash on Python 3.14
Added
- Integration test for
push()orphans warning contract - Smoke tests for
skills prune --dry-runandskills prune --yes promptsandthemesentries to_stage_pi_extra_pathscategory_map (fixes stale install)
v0.43.1-alpha
π Fixes
pre-commit hook tested system agent_sync, not local source
The run-tests hook used python -m pytest which resolved to /opt/homebrew/bin/python3 β importing the stale system-installed agent_sync package (v0.42.0a0) instead of local source edits. Same trap that the CLI symlink fix addressed for the agent-sync command itself. Changed entry to .venv/bin/python -m pytest so the venv python (which uses the editable install) is the unambiguous pytest runner. Also removed the dead pygrep-primary repo block (upstream gone) and the invalid rev: v0.0.1 from the local repo that blocked all hooks.
π§ͺ Tests
- 562/562 passing (unchanged)
v0.43.0-alpha
π Fixes
prompts/ and themes/ never backed up via pi.dev extra_paths
_stage_pi_extra_paths had a category_map that omitted prompts and themes,
while the matching _restore_pi_extra_paths listed both. Result: any content added to
~/.pi/agent/prompts/ or ~/.pi/agent/themes/ was never backed up to the private
repo, but restore expected to find it there. Real-world impact: themes/opencode.json
on disk (mtime Jun 21) was not being refreshed in the private repo, leaving a stale
copy from May 21 that would have been restored on rollback. Added both entries to
category_map (src/agent_sync/sync.py:1738-1739).
π Refactor
Single-source-of-truth symlinks for ~/.pi/{extensions,themes,prompts}
The dual-path registry entries (~/.pi/agent/X + ~/.pi/X) caused three problems
on every backup: double-load in pi, double-backup in the private repo, and drift
risk between canonical and legacy copies. Resolution:
~/.pi/extensions β ~/.pi/agent/extensions~/.pi/themes β ~/.pi/agent/themes~/.pi/prompts β ~/.pi/agent/prompts
Registry reduced to single entries; global_extensions, global_themes, and
global_prompts keys removed. extra_paths.extensions/themes/prompts now
contain only the canonical ~/.pi/agent/... paths.
Hardcoded /Users/cali/.pi/agent/AGENTS.md literals replaced
Two docstring examples in agent_discovery.py and one test fixture in
test_publish_agents.py had the literal username path. Replaced with
Path.home() / ".pi/agent/AGENTS.md" form so CI on ubuntu-latest (no
/Users/cali/) exercises the same contract.
π Docs
AGENTS.md β dev workflow + no-symlinks clarification
- Dev Workflow section:
which agent-synccheck, override recipe,uv-based
bootstrap. Documents the workflow gap that allowed the recent "tests pass against
OLD code" incident to go undetected for several commits. - No Symlinks mandate scope clarified: applies to agent-sync's sync method,
not to user-side FS symlinks used to avoid dual-path duplication.
π§ͺ Tests
- 562/562 passing (+3 from new
test_sync_stage.pycovering prompts/themes staging)
v0.42.0-alpha
π Fixes
backup command crash after push removal
The _internal_backup_flow function had stale @main.command() and @click.option(...) decorators left over from the push β backup refactor. Calling agent-sync backup kicked Click into command-invocation mode, passing dry_run as a positional kwarg to Context.__init__() β TypeError: unexpected keyword argument 'dry_run'. Removed the orphan decorators β the function is internal-only, called directly from backup.
agentmemory-snapshots/state.json never committed (nested .git/ gitlink)
agentmemory stores its snapshot data in agentmemory-snapshots/ which contains an internal .git/ for its own versioning. The .git/ directory was copied to the private repo staging area before the EXCLUDE_PATTERNS fix in v0.41.0-alpha, causing git to treat agentmemory-snapshots/ as a gitlink/submodule. state.json existed on disk but was never tracked. Cleaned the stale .git/ from the staging copy and removed the gitlink from the index. Source agentmemory-snapshots/.git/ untouched.
π UX
Backup path visibility
agent-sync backup now shows each sync path pattern with resolved source directory and file count, including β/β status and user-configured exclude patterns.
π§ͺ Tests
- 559/559 passing (unchanged)
v0.41.0-alpha
What's in
3 fixes in 1 commit (b234626) since v0.40.0-alpha:
1. sync.exclude now recurses into subdirectories (user config)
Previously, user-supplied patterns in config.yaml (agents_config.<agent>.sync.exclude) used a bare fnmatch() call. So exclude: ["node_modules/"] only matched the literal node_modules filename β not node_modules/foo.js or a/node_modules/b.js. The hardcoded EXCLUDE_PATTERNS had special-case recursion for pattern.endswith('/') but the user list did not.
Refactored to a single _matches_pattern() helper used by both lists. Now supports:
node_modules/(with slash) β recursivenode_modules(bare name) β recursive (convenience)**/name(any depth) β recursive*.bak,**/*.lockβ standard globs as before
Backups using sync.all_files + sync.exclude now correctly exclude heavy subdirs.
2. Nested .git/ directories excluded by default
Added .git/ to EXCLUDE_PATTERNS. Stops nested VCS metadata from leaking into backups (e.g. agentmemory-snapshots/.git/ was being copied into the private repo, creating git-in-git).
3. CHANGELOG updated
Added the v0.40.0-alpha and v0.41.0-alpha entries that were missing (last entry was v0.32.0-alpha from 12 days ago, with 7 intermediate alpha tags undocumented).
Tests
559/559 passing (was 551; +8 new in TestExcludePatternMatching).
Known limitations
- PyPI release artifacts not yet uploaded (awaiting PyPI credentials). Install from git:
pipx install git+https://github.com/renatocaliari/agent-sync.git@v0.41.0-alpha.