Skip to content

v0.2.0 - Remote Sync and Encrypted Archives

Choose a tag to compare

@SpiGAndromeda SpiGAndromeda released this 07 May 19:44
· 61 commits to main since this release
20b27b4

Summary

Adds cc-port push and cc-port pull for syncing archives to file:// and s3:// remotes with optional passphrase encryption. Placeholder discovery switches to an anchor-based algorithm that resolves {{HOME}} implicitly, which removes the --resolution flag from import and pull.

Changes

Features

  • Add cc-port push and cc-port pull for syncing project archives to file:// and s3:// remotes via gocloud.dev blob. Push detects prior uploads from a different machine and refuses without --force; pull renders a dry-run plan before applying. (#7)
  • Add passphrase encryption to export, import, and import manifest via --passphrase-env and --passphrase-file. Archives are encrypted with age scrypt; the import side detects and decrypts without extra configuration. (#6)
  • Add --credentials-file and --no-prompt to push and pull for injecting AWS credentials from a .env-style file or environment variables before falling back to an interactive TTY prompt. Files with permissions looser than 0600 are rejected. (#23)
  • Preserve source file modification times on verbatim archive entries through the export/import round-trip. The /resume session picker in Claude Code now sorts imported sessions in their original chronological order rather than by import time. (#25)
  • Switch placeholder discovery to an anchor-based algorithm that accepts only paths under {{PROJECT_PATH}} or {{HOME}}. {{HOME}} now resolves implicitly on import alongside {{PROJECT_PATH}}, so neither anchor requires user interaction. (#19)

Fixes

  • Fix push and pull with S3-compatible remotes that pass a bare-host endpoint parameter. The opener now prepends https:// (or http:// when disable_https=true) so the AWS SDK receives a valid URL. (#24)
  • Stop rejecting archives whose content contains {{UPPER_SNAKE}}-shaped text not listed in the manifest. Session logs, skills, and documentation can hold such patterns; the preflight pass now only checks that declared placeholder keys have a resolution. (#21)
  • Upgrade google.golang.org/grpc to v1.80.0, addressing GO-2026-4762 (authorization bypass via malformed :path header), and update the OpenTelemetry suite to v1.43.0. (#18)

Dependencies

  • Update charm.land/lipgloss to v2.0.3 and bump GitHub Actions runner versions. (#16, #17)

Breaking Changes

--resolution is removed from cc-port import and cc-port pull. Scripts that passed custom placeholder values via --resolution KEY=VALUE must switch to --from-manifest <file.xml>.

Archives exported before this release that contain {{UNRESOLVED_N}} placeholder keys can't be imported without a manifest file providing resolve entries for those keys.

Three symbols are removed from cc-port internals: GroupPathPrefixes and PlaceholderSuggestion.Auto from internal/export, and Placeholder.Resolvable from internal/manifest.

Upgrade Notes

Remove --resolution flags from any import or pull invocations and supply a manifest with --from-manifest instead. Archives that don't contain {{UNRESOLVED_N}} keys need no changes.