pushframe 5.0.2__tar.gz → 5.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pushframe-5.0.2 → pushframe-5.0.3}/.github/workflows/release.yml +9 -9
- {pushframe-5.0.2 → pushframe-5.0.3}/.github/workflows/tests.yml +2 -2
- pushframe-5.0.3/CHANGELOG.md +121 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/PKG-INFO +8 -3
- {pushframe-5.0.2 → pushframe-5.0.3}/README.md +6 -2
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/__init__.py +1 -1
- {pushframe-5.0.2 → pushframe-5.0.3}/pyproject.toml +2 -1
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_version.py +2 -2
- {pushframe-5.0.2 → pushframe-5.0.3}/.env.sample +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.freebuff/project-id +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.gitignore +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.gsd/dispatch-isolation-sentinel.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/MILESTONES.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/PROJECT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/REQUIREMENTS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/RETROSPECTIVE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/ROADMAP.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/STATE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/WINDOWS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/ARCHITECTURE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/CONCERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/CONVENTIONS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/INTEGRATIONS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/STACK.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/STRUCTURE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/codebase/TESTING.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/config.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/debug/knowledge-base.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/debug/login-475-null-creds.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/debug/resolved/cli-status-verbose-logging.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/debug/resolved/inspect-asset-null-fields.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/debug/resolved/select-asset-401-unauthorized.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-REQUIREMENTS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-ROADMAP.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/01-toolchain-revival/01-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-LIVE-EVIDENCE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/02-live-read-path-verification/02-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.0-phases/03-run-docs-verification-report/03-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-ROADMAP.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/.gitkeep +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-SECURITY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-UAT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v1.1-phases/04-client-transport-seam-for-offline-testability/04-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-REQUIREMENTS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-ROADMAP.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-SECURITY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-UAT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/05-cli-skeleton-status/05-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-SECURITY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/06-inspect-frame-resolution/06-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-REVIEW-FIX.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-SECURITY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/07-sync-diffing-engine-dry-run-only/07-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-04-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-04-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-LIVE-FINDINGS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-REVIEW-FIX.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/08-destructive-execution-upload-delete-verification/08-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/.gitkeep +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-REVIEW-FIX.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/09-proactive-write-rate-limiter-geo-guard/09-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/.gitkeep +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-04-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-04-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-LIVE-FINDINGS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-SECURITY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-UAT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/10-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-phases/10-hide-instead-of-delete-sync-mode/COVERAGE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260630-qs8-make-main-py-load-a-local-env-file-at-st/260630-qs8-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260630-qs8-make-main-py-load-a-local-env-file-at-st/260630-qs8-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260708-dt9-add-progress-feedback-to-aura-cli-sync-a/260708-dt9-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260708-dt9-add-progress-feedback-to-aura-cli-sync-a/260708-dt9-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260708-dt9-add-progress-feedback-to-aura-cli-sync-a/deferred-items.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260708-fyr-batch-refactor-of-sync-apply-write-path-/260708-fyr-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260708-fyr-batch-refactor-of-sync-apply-write-path-/260708-fyr-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/260708-fyr-batch-refactor-of-sync-apply-write-path-/260708-fyr-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v2.0-quick/README.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-REQUIREMENTS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-ROADMAP.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-04-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-04-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-05-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-05-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-06-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-06-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-LIVE-FINDINGS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-PATTERNS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-REVIEW.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v3.0-phases/11-write-path-reliability-format-support/11-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-REQUIREMENTS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-ROADMAP.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-DECISION-RECORD.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-DISCUSSION-LOG.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/16-LIVE-FINDINGS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/16-local-mechanism-spike-decision/COVERAGE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-DISCUSS-CHECKPOINT.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/17-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/17-google-link-album-selection/COVERAGE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-03-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-03-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-UAT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/18-album-frame-mirror-sync-single-pair/18-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/milestones/v4.0-phases/19-debt-closeout/19-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/20-pushframe-rename-migration-repo-switch/20-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/21-debian-package-apt-repo/21-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-01-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-01-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-02-PLAN.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-02-SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-CONTEXT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-RESEARCH.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/22-VERIFICATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/phases/22-pypi-release-engineering/OPERATOR-STEPS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/ALBUM-ACCESS-V4-ADDENDUM.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/ALBUM-ACCESS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/ARCHITECTURE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/BROWSER-AUTOMATION.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/FEATURES.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/PITFALLS.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/STACK.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/research/SUMMARY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/state.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.planning/todos/completed/2026-07-06-promote-debug-flag-to-a-global-cli-convention.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/.python-version +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/CLAUDE.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/LICENSE +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/SECURITY.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/VERIFICATION-REPORT.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/docs/CLI.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/docs/agents/domain.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/docs/agents/issue-tracker.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/docs/agents/triage-labels.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/docs/superpowers/specs/2026-07-09-write-rate-limiter-design.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/main.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/packaging/control-template +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/packaging/lintian-overrides +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/packaging/postinst +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/packaging/pushframe.copyright +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/.gitignore +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/README.md +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/browser_bootstrap.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/common.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/cookie_vault.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/fidelity_check.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/rpc_capture.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/probes/shared_link_probe.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/__init__.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/accountApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/activityApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/assetApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/baseApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/frameApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/notificationApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/peopleApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/api/playlistApi.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/aura.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/aws/__init__.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/aws/awsclient.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/aws/s3client.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/aws/sqsclient.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/cache.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/cli.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/client.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/exif.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/export.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/__init__.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/bootstrap.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/cache.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/client.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/enumerate.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/manifest.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/parsers.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/redaction.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/google/vault.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/gsync.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/migration.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/__init__.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/activity.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/asset.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/frame.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/meta.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/person.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/models/user.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/ratelimit.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/reconcile.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/sync.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/utils/dt.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/utils/io.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/pushframe/utils/settings.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/scripts/build-deb.sh +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/scripts/make-apt-key.sh +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/scripts/publish-apt-repo.sh +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/scripts/test-apt-journey-container.sh +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/scripts/test-deb-container.sh +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/scripts/test-install-journey-container.sh +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/conftest.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/asset_unprocessed.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/assets_page1.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/assets_page2.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/assets_placeholders.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/error_envelope.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/frame_detail.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/frames.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/google_rpc_snackc_page.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/google_share_page_sample.html +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/login.json +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/fixtures/probe_af_initdata_sample.html +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/offline.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_asset_partial.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_asset_unprocessed.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_aura_logger.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_batch_update_contract.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_apply.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_google_album.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_google_link.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_inspect.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_push_budget_geo.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_reconcile.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_status.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_status_google.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_cli_sync.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_client_rate_limit.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_execute_plan.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_execute_plan_budget_geo.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_fixtures_validity.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_google_cache.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_google_client.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_google_enumerate.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_google_manifest.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_google_parsers.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_google_vault.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_gsync_engine.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_gsync_execute.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_imports.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_migration.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_offline_read_path.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_prep_upload_formats.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_probe_browser.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_probe_shared_link.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_ratelimit.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_read_path.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_reconcile.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_retry_401.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_settings_budget.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_sync_engine.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_write_endpoints_failloud.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_write_formats_live.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/tests/test_write_throttling.py +0 -0
- {pushframe-5.0.2 → pushframe-5.0.3}/uv.lock +0 -0
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
outputs:
|
|
37
37
|
version: ${{ steps.version.outputs.version }}
|
|
38
38
|
steps:
|
|
39
|
-
- uses: actions/checkout@
|
|
39
|
+
- uses: actions/checkout@v7
|
|
40
40
|
- name: Assert tag == pyproject == pushframe.__version__
|
|
41
41
|
id: version
|
|
42
42
|
run: |
|
|
@@ -56,8 +56,8 @@ jobs:
|
|
|
56
56
|
runs-on: ubuntu-latest
|
|
57
57
|
environment: release
|
|
58
58
|
steps:
|
|
59
|
-
- uses: actions/checkout@
|
|
60
|
-
- uses: astral-sh/setup-uv@
|
|
59
|
+
- uses: actions/checkout@v7
|
|
60
|
+
- uses: astral-sh/setup-uv@v10.2.0
|
|
61
61
|
with:
|
|
62
62
|
enable-cache: true
|
|
63
63
|
- name: Build sdist + wheel
|
|
@@ -70,8 +70,8 @@ jobs:
|
|
|
70
70
|
needs: check
|
|
71
71
|
runs-on: ubuntu-latest
|
|
72
72
|
steps:
|
|
73
|
-
- uses: actions/checkout@
|
|
74
|
-
- uses: astral-sh/setup-uv@
|
|
73
|
+
- uses: actions/checkout@v7
|
|
74
|
+
- uses: astral-sh/setup-uv@v10.2.0
|
|
75
75
|
with:
|
|
76
76
|
enable-cache: true
|
|
77
77
|
- name: Install uv-managed standalone python (the deb's runtime)
|
|
@@ -94,8 +94,8 @@ jobs:
|
|
|
94
94
|
runs-on: ubuntu-latest
|
|
95
95
|
environment: release
|
|
96
96
|
steps:
|
|
97
|
-
- uses: actions/checkout@
|
|
98
|
-
- uses: astral-sh/setup-uv@
|
|
97
|
+
- uses: actions/checkout@v7
|
|
98
|
+
- uses: astral-sh/setup-uv@v10.2.0
|
|
99
99
|
- name: Restore the APT signing key from the secret
|
|
100
100
|
env:
|
|
101
101
|
PUSHFRAME_APT_SIGNING_KEY: ${{ secrets.PUSHFRAME_APT_SIGNING_KEY }}
|
|
@@ -126,8 +126,8 @@ jobs:
|
|
|
126
126
|
runs-on: ubuntu-latest
|
|
127
127
|
environment: release
|
|
128
128
|
steps:
|
|
129
|
-
- uses: actions/checkout@
|
|
130
|
-
- uses: astral-sh/setup-uv@
|
|
129
|
+
- uses: actions/checkout@v7
|
|
130
|
+
- uses: astral-sh/setup-uv@v10.2.0
|
|
131
131
|
with:
|
|
132
132
|
enable-cache: true
|
|
133
133
|
- name: Build sdist + wheel
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `pushframe` are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
Each release ships simultaneously to [PyPI](https://pypi.org/project/pushframe/),
|
|
8
|
+
the [signed APT repository](https://coredmp95.github.io/pushframe/), and
|
|
9
|
+
[GitHub Releases](https://github.com/coredmp95/pushframe/releases) — one tag,
|
|
10
|
+
every channel.
|
|
11
|
+
|
|
12
|
+
`pushframe` is an unofficial community CLI for Aura Frames digital photo
|
|
13
|
+
frames; it is not affiliated with Aura Frames Inc.
|
|
14
|
+
|
|
15
|
+
## [5.0.2] — 2026-09-29
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **PyPI project page** — 5.0.0/5.0.1 shipped no package description: the
|
|
20
|
+
wheel metadata now carries the README (`readme`), a one-line summary with
|
|
21
|
+
the not-affiliated disclaimer, and Homepage/Repository/Issues URLs.
|
|
22
|
+
- **Release pipeline, APT job** (CI-only, no code change vs 5.0.1): the
|
|
23
|
+
signing-key fingerprint is derived with gpg instead of a grep over the
|
|
24
|
+
ASCII armor, and the gh-pages orphan commit runs with an explicit git
|
|
25
|
+
identity — first release where all five jobs (check, pypi-test, deb,
|
|
26
|
+
apt, pypi) are green end-to-end.
|
|
27
|
+
- **CI actions** — `actions/checkout@v7`, `astral-sh/setup-uv@v10.2.0`
|
|
28
|
+
(Node 24): clears the Node.js 20 deprecation warnings on the runners.
|
|
29
|
+
|
|
30
|
+
## [5.0.1] — 2026-09-29
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- Wheel/sdist metadata: `readme = README.md`, `description`, and
|
|
35
|
+
`project.urls` declared (the 5.0.0 PyPI page rendered empty; versions
|
|
36
|
+
being immutable on PyPI, the fix ships as a new release).
|
|
37
|
+
|
|
38
|
+
## [5.0.0] — 2026-09-29
|
|
39
|
+
|
|
40
|
+
The first distribution release — and the first version published outside
|
|
41
|
+
git tags. Aligns with the v5.0 milestone (« Distribution & Rename »).
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- **Debian packaging** (`scripts/build-deb.sh`): hermetic `.deb` embedding
|
|
46
|
+
its own CPython 3.14 under `/usr/lib/pushframe/` — no system Python is
|
|
47
|
+
used or modified; lintian-clean (0 errors, 0 warnings); removal leaves
|
|
48
|
+
no residue (bytecode is package-owned, `PYTHONDONTWRITEBYTECODE` at run
|
|
49
|
+
time); verified in clean `ubuntu:26.04` containers.
|
|
50
|
+
- **Signed APT repository** at `https://coredmp95.github.io/pushframe/`
|
|
51
|
+
(dedicated no-passphrase GPG key, InRelease/Release.gpg, keyring +
|
|
52
|
+
one-line sources entry), plus container tests proving the full user
|
|
53
|
+
journey: `apt update` signature-clean → `apt install pushframe` →
|
|
54
|
+
working CLI.
|
|
55
|
+
- **PyPI distribution** via GitHub Actions **trusted publishing** (OIDC)
|
|
56
|
+
— no PyPI token exists anywhere; TestPyPI rehearsal gates every real
|
|
57
|
+
upload.
|
|
58
|
+
- **Release automation** (`release.yml`): pushing a `v*` tag builds the
|
|
59
|
+
wheel/sdist, the `.deb` (attached to the GitHub Release), republishes
|
|
60
|
+
the APT repository, and uploads to PyPI — with a version-consistency
|
|
61
|
+
gate (tag == pyproject == `pushframe.__version__`).
|
|
62
|
+
- **Install journeys as tests**: clean-container proofs for all three
|
|
63
|
+
channels (`.deb` file, APT, `uv tool install`).
|
|
64
|
+
- `pushframe --version` prints `pushframe <release>` (single-sourced,
|
|
65
|
+
lockstep-guarded by tests and the release gate).
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
|
|
69
|
+
- Project renamed **auraframes → pushframe** (module, binary, config):
|
|
70
|
+
the old name collided with an existing PyPI package and is
|
|
71
|
+
trademark-adjacent; config migrates automatically
|
|
72
|
+
(`~/.config/auraframes/` → `~/.config/pushframe/`, non-destructive).
|
|
73
|
+
- Environment variables: `PUSHFRAME_*` is primary; `AURA_*` still read
|
|
74
|
+
for one release as a deprecation window.
|
|
75
|
+
|
|
76
|
+
### Deprecated
|
|
77
|
+
|
|
78
|
+
- `AURA_*` environment variables (read until 5.x; set `PUSHFRAME_*`).
|
|
79
|
+
- `aura-cli` as an installed command: removed in favor of the single
|
|
80
|
+
`pushframe` binary.
|
|
81
|
+
|
|
82
|
+
### Security
|
|
83
|
+
|
|
84
|
+
- Repository moved to a standalone repo (not a fork); MIT LICENSE with
|
|
85
|
+
provenance; GitHub security features enabled (secret scanning + push
|
|
86
|
+
protection, Dependabot, CodeQL).
|
|
87
|
+
|
|
88
|
+
## Pre-distribution history (git tags only, never published to a package index)
|
|
89
|
+
|
|
90
|
+
Milestone summary — see `.planning/MILESTONES.md` for the full retros.
|
|
91
|
+
|
|
92
|
+
- **v4.0 — Local Google Photos Album Sync** (phases 16–19, 2026-09):
|
|
93
|
+
`google-link` (dedicated Chrome profile, cookie vault `0600`),
|
|
94
|
+
`google-album` (full walk, exact byte counts), `google-sync`
|
|
95
|
+
(hide-by-default mirror semantics, pruned cache + persistent manifest,
|
|
96
|
+
SAFE-01..04 guards); live UAT two-run proof (upload run → zero-upload
|
|
97
|
+
steady state); debt closeout (AWS config out of code, single logger
|
|
98
|
+
per process, transport seam).
|
|
99
|
+
- **v3.0 — direct transport rewrite**: `Client` over `httpx` (HTTP/2),
|
|
100
|
+
boto3 S3/SQS upload path, offline test harness (mocket), full offline
|
|
101
|
+
suite; the server-side relay approach was abandoned this milestone.
|
|
102
|
+
- **v2.0 — read path hardening**: `status`/`inspect`/`sync`/`push`
|
|
103
|
+
verbs, asset lifecycle states, anti-abuse paced writes, staged
|
|
104
|
+
uploads with cleanup on failure.
|
|
105
|
+
- **v1.1 — client transport fixes** (the original author's last tag;
|
|
106
|
+
revived and extended by the current maintainer in 2026).
|
|
107
|
+
- **v1.0 — initial upstream release** by zmanowar (2023).
|
|
108
|
+
|
|
109
|
+
## [Unreleased]
|
|
110
|
+
|
|
111
|
+
- Nothing staged yet; next changes land here before the next tag.
|
|
112
|
+
|
|
113
|
+
## [5.0.3] — 2026-09-29
|
|
114
|
+
|
|
115
|
+
### Added
|
|
116
|
+
|
|
117
|
+
- `CHANGELOG.md` — every release now traced in Keep a Changelog format
|
|
118
|
+
(Added / Changed / Deprecated / Fixed / Security), exposed as a
|
|
119
|
+
`Changelog` project URL on PyPI and referenced from the README.
|
|
120
|
+
- `arch=amd64` in the documented APT sources entry: silences apt's
|
|
121
|
+
i386 notice on multi-arch machines (the repo is amd64-only).
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: pushframe
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.3
|
|
4
4
|
Summary: Unofficial community CLI for Aura Frames digital photo frames (sync a local folder or a Google Photos album; not affiliated with Aura Frames Inc.)
|
|
5
5
|
Project-URL: Homepage, https://github.com/coredmp95/pushframe
|
|
6
6
|
Project-URL: Repository, https://github.com/coredmp95/pushframe
|
|
7
7
|
Project-URL: Issues, https://github.com/coredmp95/pushframe/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/coredmp95/pushframe/blob/master/CHANGELOG.md
|
|
8
9
|
License: MIT License
|
|
9
10
|
|
|
10
11
|
Copyright (c) 2026 Fabrice DIDIERJEAN (coredmp95)
|
|
@@ -91,6 +92,9 @@ Any advice or issues are welcome.
|
|
|
91
92
|
environment, dependency, and interpreter management.
|
|
92
93
|
- A live Aura account (email + password) for any command that actually hits the API.
|
|
93
94
|
|
|
95
|
+
Release history lives in [CHANGELOG.md](CHANGELOG.md) (Added / Changed /
|
|
96
|
+
Deprecated / Fixed / Security per release, Keep a Changelog format).
|
|
97
|
+
|
|
94
98
|
## Install (Ubuntu/Debian)
|
|
95
99
|
|
|
96
100
|
Pre-built `.deb` packages embed their own Python 3.14 runtime under
|
|
@@ -135,8 +139,9 @@ sudo install -d -m 0755 /etc/apt/keyrings
|
|
|
135
139
|
curl -fsSL https://coredmp95.github.io/pushframe/dists/pushframe.asc \
|
|
136
140
|
| sudo gpg --dearmor -o /etc/apt/keyrings/pushframe.gpg
|
|
137
141
|
|
|
138
|
-
# 2. add the sources entry
|
|
139
|
-
|
|
142
|
+
# 2. add the sources entry (arch=amd64: the repo is amd64-only — on
|
|
143
|
+
# multi-arch machines this silences apt's i386 notice)
|
|
144
|
+
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/pushframe.gpg] https://coredmp95.github.io/pushframe stable main" \
|
|
140
145
|
| sudo tee /etc/apt/sources.list.d/pushframe.list
|
|
141
146
|
|
|
142
147
|
# 3. install
|
|
@@ -32,6 +32,9 @@ Any advice or issues are welcome.
|
|
|
32
32
|
environment, dependency, and interpreter management.
|
|
33
33
|
- A live Aura account (email + password) for any command that actually hits the API.
|
|
34
34
|
|
|
35
|
+
Release history lives in [CHANGELOG.md](CHANGELOG.md) (Added / Changed /
|
|
36
|
+
Deprecated / Fixed / Security per release, Keep a Changelog format).
|
|
37
|
+
|
|
35
38
|
## Install (Ubuntu/Debian)
|
|
36
39
|
|
|
37
40
|
Pre-built `.deb` packages embed their own Python 3.14 runtime under
|
|
@@ -76,8 +79,9 @@ sudo install -d -m 0755 /etc/apt/keyrings
|
|
|
76
79
|
curl -fsSL https://coredmp95.github.io/pushframe/dists/pushframe.asc \
|
|
77
80
|
| sudo gpg --dearmor -o /etc/apt/keyrings/pushframe.gpg
|
|
78
81
|
|
|
79
|
-
# 2. add the sources entry
|
|
80
|
-
|
|
82
|
+
# 2. add the sources entry (arch=amd64: the repo is amd64-only — on
|
|
83
|
+
# multi-arch machines this silences apt's i386 notice)
|
|
84
|
+
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/pushframe.gpg] https://coredmp95.github.io/pushframe stable main" \
|
|
81
85
|
| sudo tee /etc/apt/sources.list.d/pushframe.list
|
|
82
86
|
|
|
83
87
|
# 3. install
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
# pushframe — unofficial community CLI for Aura Frames (not affiliated).
|
|
2
2
|
# Version single source for the CLI surface (REL-02); pyproject keeps the
|
|
3
3
|
# packaging metadata version and tests/test_version.py enforces lockstep.
|
|
4
|
-
__version__ = "5.0.
|
|
4
|
+
__version__ = "5.0.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "pushframe"
|
|
3
|
-
version = "5.0.
|
|
3
|
+
version = "5.0.3"
|
|
4
4
|
description = "Unofficial community CLI for Aura Frames digital photo frames (sync a local folder or a Google Photos album; not affiliated with Aura Frames Inc.)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.14"
|
|
@@ -31,6 +31,7 @@ dependencies = [
|
|
|
31
31
|
Homepage = "https://github.com/coredmp95/pushframe"
|
|
32
32
|
Repository = "https://github.com/coredmp95/pushframe"
|
|
33
33
|
Issues = "https://github.com/coredmp95/pushframe/issues"
|
|
34
|
+
Changelog = "https://github.com/coredmp95/pushframe/blob/master/CHANGELOG.md"
|
|
34
35
|
|
|
35
36
|
[project.optional-dependencies]
|
|
36
37
|
dev = ["pytest>=8"]
|
|
@@ -18,8 +18,8 @@ PYPROJECT = Path(__file__).resolve().parent.parent / "pyproject.toml"
|
|
|
18
18
|
|
|
19
19
|
def test_version_is_first_distribution_release():
|
|
20
20
|
"""The current distribution release (moved off 0.1.0 at 5.0.0; page
|
|
21
|
-
metadata fix shipped in 5.0.
|
|
22
|
-
assert __version__ == "5.0.
|
|
21
|
+
metadata fix shipped in 5.0.3)."""
|
|
22
|
+
assert __version__ == "5.0.3"
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def test_version_matches_pyproject_single_source():
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pushframe-5.0.2 → pushframe-5.0.3}/.planning/debug/resolved/select-asset-401-unauthorized.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|