v0.2.0 - Remote Sync and Encrypted Archives
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 pushandcc-port pullfor syncing project archives tofile://ands3://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, andimport manifestvia--passphrase-envand--passphrase-file. Archives are encrypted with age scrypt; the import side detects and decrypts without extra configuration. (#6) - Add
--credentials-fileand--no-prompttopushandpullfor 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
/resumesession 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
pushandpullwith S3-compatible remotes that pass a bare-hostendpointparameter. The opener now prependshttps://(orhttp://whendisable_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/grpcto v1.80.0, addressing GO-2026-4762 (authorization bypass via malformed:pathheader), and update the OpenTelemetry suite to v1.43.0. (#18)
Dependencies
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.