Skip to content

Releases: calionauta/agent-sync

v0.44.5-alpha

v0.44.5-alpha Pre-release
Pre-release

Choose a tag to compare

@calionauta calionauta released this 02 Jul 11:06

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}.py example 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.md examples

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.git

Tests

567 passed. No lint regression.

Migration notes

  • Historical release notes (e.g. .github/release-v0.13.0.md) intentionally retain old username
  • renatoac82@gmail.com preserved as author email
  • Git history is immutable β€” old commits retain renatocaliari author identity (correct)

Full Changelog: v0.44.4-alpha...v0.44.5-alpha

v0.44.4-alpha

Choose a tag to compare

@calionauta calionauta released this 30 Jun 10:27

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. legacy hooks/ after rename to hook/)
  • Print per-category file count during stage so users see what was backed up

Fixed

  • agent-sync push no 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

Choose a tag to compare

@calionauta calionauta released this 30 Jun 10:21

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/ ↔ repo configs/pi.dev/hook/

Full diff: v0.44.2-alpha...v0.44.3-alpha

v0.44.2-alpha

Choose a tag to compare

@calionauta calionauta released this 30 Jun 09:52

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

Choose a tag to compare

@calionauta calionauta released this 26 Jun 14:12

Added

  • Backup pi.dev hooks/ directory via extra_paths (#backup hooks)
    • ~/.pi/agent/hooks/ now synced to configs/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

Choose a tag to compare

@calionauta calionauta released this 23 Jun 20:01

Fixed

  • βœ“ No orphan skills β€” repo and hub are in sync. no longer fails with 'nothing to commit' β€” now correctly stages deletions via _prune_orphan_skills before committing
  • share run auto-sync now warns about orphan skills instead of silently ignoring them
  • Pre-existing callable | None type annotation crash on Python 3.14

Added

  • Integration test for push() orphans warning contract
  • Smoke tests for skills prune --dry-run and skills prune --yes
  • prompts and themes entries to _stage_pi_extra_paths category_map (fixes stale install)

v0.43.1-alpha

v0.43.1-alpha Pre-release
Pre-release

Choose a tag to compare

@calionauta calionauta released this 22 Jun 21:50

πŸ› 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

v0.43.0-alpha Pre-release
Pre-release

Choose a tag to compare

@calionauta calionauta released this 22 Jun 21:21

πŸ› 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-sync check, 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.py covering prompts/themes staging)

v0.42.0-alpha

Choose a tag to compare

@calionauta calionauta released this 17 Jun 11:15

πŸ› 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

Choose a tag to compare

@calionauta calionauta released this 16 Jun 23:25

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) β€” recursive
  • node_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.